Layman'ın terimleriyle Pompalama Lemması nedir?


82

Bu soruyu gördüm ve pompalayan lemmanın ne olduğunu merak ettim ( Wikipedia pek yardımcı olmadı).

Bunun temelde bir dilin belirli bir sınıfta olması için doğru olması gereken teorik bir kanıt olduğunu anlıyorum, ama bunun ötesinde gerçekten anlamıyorum.

Bunu matematikçi olmayanlar / comp bilim doktorları tarafından anlaşılabilir bir şekilde oldukça ayrıntılı bir seviyede açıklamaya çalışan var mı?


2
Matematiğe / TCS'ye kısayol olmadığına inanıyorum: "meslekten olmayanların terimleri" sizi anlamaya götürmeyecek. Bununla birlikte, elbette bunu Bilgisayar Bilimleri alanında kapsamlı bir şekilde ele aldık ; bakınız burada , burada ve burada .
Raphael

1
Birinci sınıf öğrencilerinden rutin olarak teoremi ve ispatını anlamaları ve uygulamaları beklendiğini unutmayın, böylece "[...] doktor olmayanlar tarafından anlaşılabilir" bir şey için talep, herhangi bir resmi dil ders kitabına bakılarak kolayca yerine getirilebilir.
Raphael

Pompalama lemması bir kanıt değil: adından da anlaşılacağı gibi, bu bir lemma .
nbro

Yanıtlar:


157

Pompalama lemması, bir dilin düzenli olmadığını, yani bunun için bir Sonlu Durum Makinesinin yapılamayacağını gösteren basit bir kanıttır. Kanonik örnek dildir (a^n)(b^n). Bu, herhangi bir sayıda as ve ardından aynı sayıda bs gelen basit dildir . Yani dizeler

ab
aabb
aaabbb
aaaabbbb

vb. dilde, ancak

aab
bab
aaabbbbbb

vb değildir.

Bu örnekler için bir FSM oluşturmak yeterince basit:

FSM

Bu, n = 4'e kadar çalışacak. Sorun şu ki, dilimiz n'ye herhangi bir kısıtlama getirmemiş ve Sonlu Durum Makinaları sonlu olmak zorunda. Bu makineye kaç tane durum eklersem ekleyeyim, birisi bana bir girdi verebilir, burada n eşittir durum sayısı artı bir ve makinem başarısız olur. Öyleyse, bu dili okumak için yapılmış bir makine olabilirse, orada bir yerde durumların sayısını sınırlı tutmak için bir döngü olmalıdır. Bu döngüler eklendiğinde:

FSM 2

dilimizdeki tüm dizeler kabul edilecek ama bir sorun var. İlk dört asaniyeden sonra, makine aaynı durumda kaldığı için kaç tane girdi girdiğinin sayısını kaybeder . Bu, dörtten sonra, aherhangi bir bs eklemeden dizeye istediğim kadar s ekleyebileceğim ve yine de aynı dönüş değerini alabileceğim anlamına gelir. Bu, dizelerin:

aaaa(a*)bbbb

ile (a*)herhangi bir sayıda temsil as, hepsi tabii ki tüm dilde olmasa bile makine tarafından kabul edilecektir. Bu bağlamda dizenin bir kısmının(a*) pompalanabileceğini . Sonlu Durum Makinesinin sonlu olması ve n'nin sınırlı olmaması, dildeki tüm dizgeleri kabul eden herhangi bir makinenin bu özelliğe sahip olması GEREKİR. Makine bir noktada döngü yapmalıdır ve döngü yaptığı noktada dil pompalanabilir. Bu nedenle bu dil için Sonlu Durum Makinesi oluşturulamaz ve dil düzenli değildir.

Unutmayın Normal İfadeleri ve sonlu durum makineleri eşdeğer olan , daha sonra yerini ave bbirbirleri içinde gömülü olabilir açılmasıyla ve kapanış Html etiketleri ve neden görebilirsiniz ayrıştırma Html için normal ifadeleri kullanmak mümkün değildir


2
İkinci diyagramınız da baaaabbbb üretebileceği için yanlıştır.
James

3
@James bu doğru, başka bir kabul durumu ekleyerek oldukça basit bir şekilde düzeltilebilir, ancak sadece basitlik uğruna onu olduğu gibi bırakacağım.
Grafik Noob

1
İyi yanıt, ancak pompalama lemasının bir dilin bağlamdan bağımsız olduğunu kanıtlamak için kullanılabileceğinden bahsetmiyor, yalnızca düzenliliği
bozmakla

1
Bu, bunun a^n b^ndüzenli olmadığını kesin olarak göstermez ve Pompalama lemması hakkında pek bir önsezi de sunmaz.
Raphael

1
@GraphicsNoob Pompalanan lemma bir kanıt DEĞİL , adından da anlaşılacağı gibi bir lemma. Bir lemma , kanıtlanmış bir önermedir. Bir lemma, genellikle diğer önermeleri veya ifadeleri kanıtlamak veya göstermek için kullanılan, çok önemli olmayan daha küçük bir teorem olarak düşünülebilir. "Pompalayan lemmanın bir kanıt olduğunu" söyleyen bir cevabın şu anda 114 olumlu oyu olduğuna inanmıyorum, bu yüzden sorular ve cevaplar bir açıklama veya açıklama ile yükseltilmelidir.
nbro

15

Belirli bir dilin belirli bir sınıfta olamayacağını kanıtlamayı amaçlayan bir cihazdır.

Dengeli parantezlerin dilini ele alalım ('(' ve ')' sembolleri anlamına gelir ve her zamanki anlamıyla dengelenmiş ve olmayan tüm dizeleri dahil). Bunun normal olmadığını göstermek için pompalama lemmasını kullanabiliriz.

(Dil, olası dizeler kümesidir. Ayrıştırıcı, bir dizenin dilde olup olmadığını görmek için kullanabileceğimiz bir tür mekanizmadır, bu nedenle dildeki bir dize ile dışarıdaki bir dize arasındaki farkı söyleyebilmelidir. Dil. Bir dil "normal" (veya "bağlamdan bağımsız" veya "içeriğe duyarlı" veya her neyse), onu tanıyan normal (veya her neyse) bir ayrıştırıcı varsa, dildeki dizeler ile dildeki dizeler arasında ayrım yapan dil.)

LFSR Danışmanlığı iyi bir açıklama sağlamıştır. Normal bir dil için, karakterleri temsil eden oklar ve onları birbirine bağlayan kutularla ("durum" olarak işlev gören) kutular ve oklardan oluşan sonlu bir koleksiyon olarak normal bir dil için bir ayrıştırıcı çizebiliriz. (Bundan daha karmaşıksa, normal bir dil değildir.) Kutu sayısından daha uzun bir dizge elde edebilirsek, bu, bir kutuyu birden çok kez geçtiğimiz anlamına gelir. Bu, bir döngümüz olduğu anlamına gelir ve döngüden istediğimiz kadar geçebiliriz.

Bu nedenle, normal bir dil için, rastgele uzun bir dizge oluşturabilirsek, onu xyz'e bölebiliriz; burada x, döngünün başlangıcına ulaşmamız gereken karakterlerdir, y gerçek döngüdür ve z, biz her neyse döngüden sonra dizeyi geçerli hale getirmeniz gerekir. Önemli olan, x ve y'nin toplam uzunluklarının sınırlı olmasıdır. Sonuçta, uzunluk kutu sayısından fazlaysa, bunu yaparken açıkça başka bir kutudan geçtik ve bu yüzden bir döngü var.

Yani, dengeli dilimizde, herhangi bir sayıda sol parantez yazarak başlayabiliriz. Özellikle, herhangi bir ayrıştırıcı için, kutulardan daha fazla sol parantez yazabiliriz ve böylece ayrıştırıcı, kaç tane sol parant olduğunu söyleyemez. Bu nedenle, x bir miktar sol parendir ve bu sabittir. y ayrıca bir miktar sol parendir ve bu sonsuza kadar artabilir. Z'nin bir dizi sağ paren olduğunu söyleyebiliriz.

Bu, ayrıştırıcımız tarafından tanınan 43 sol parens ve 43 sağ parenlerden oluşan bir dizimiz olabileceği anlamına gelir, ancak ayrıştırıcı bunu 44 sol parens ve 43 sağ parantezden oluşan bir dizeden, ki bu bizim dilimizde olmayan ayrıştırıcı dilimizi ayrıştıramıyor.

Olası herhangi bir normal ayrıştırıcının sabit sayıda kutusu olduğundan, her zaman bundan daha fazla sol parant yazabiliriz ve pompalanan lemma ile ayrıştırıcının söyleyemeyeceği şekilde daha fazla sol parens ekleyebiliriz. Bu nedenle, dengeli parantez dili normal bir ayrıştırıcı tarafından ayrıştırılamaz ve bu nedenle normal bir ifade değildir.


Düzenli ifadelerle dengeli dizeler yakalamak isteyenler için mükemmel cevap ve okuyun.
Justin Johnson

9

Bu, meslekten olmayanların terimleriyle anlaşılması zor bir şey, ancak temelde düzenli ifadeler, içinde dilediğiniz kadar tekrarlanabilen boş olmayan bir alt dizeye sahip olmalı ve tüm yeni kelime dil için geçerli kalmalıdır.

In Uygulamada , pompalama lemmaları doğru bir dil KANITLAMAK için yeterli değil, (-Free Bağlam Düzenli veya) pompalama lemma göstererek dillerin sınıfta sığmayan bir dil çelişki ile ispat yapmak ve göstermek için bir yol olarak değil does onun için çalışmıyor.


" Bir dili doğru KANITLAMAK için yeterli değil" ne demek ? "Doğru" derken normal demek istedin sanırım. Aslında, normal bir dil pompalama özelliğini sergiler, ancak bir dil pompalama özelliğini sergiliyorsa, bu mutlaka düzenli olduğu anlamına gelmez. Öte yandan, dil pompalama özelliğini sergilemiyorsa, o zaman düzenli olmadığından eminiz. Temel olarak, pompalama özelliği gereklidir ancak bir dilin düzenli olduğunu göstermek için yeterli değildir .
nbro

4

Temel olarak, belirli bir karakter dizisinin (bir "kelime") o dilin üyesi olup olmadığını anlamanın bir yolu olan bir dil tanımına sahipsiniz (XML gibi).

Pompalama lemması, dilden bir "kelime" seçip sonra ona bazı değişiklikler uygulayabileceğiniz bir yöntem oluşturur. Teorem, eğer dil düzenli ise, bu değişikliklerin hala aynı dilden olan bir "kelime" vermesi gerektiğini belirtir. Bulduğunuz kelime dilde değilse, o zaman dil ilk etapta düzenli olamazdı.


3

Basit pompalama lemması, diğer şeylerin yanı sıra sonlu otomata tarafından tanımlanan dizgi kümeleri olan düzenli diller için olanıdır. Sonlu bir otomasyonun temel özelliği, durumları tarafından tanımlanan yalnızca sınırlı miktarda belleğe sahip olmasıdır.

Şimdi, sonlu bir otomat tarafından tanınan ve otomasyon belleğini "aşacak" kadar uzun olan, yani durumların tekrar etmesi gereken bir diziniz olduğunu varsayalım. Ardından, alt dizenin başlangıcındaki otomat durumunun, alt dizenin sonundaki durumla aynı olduğu bir alt dize vardır. Alt dizeyi okumak durumu değiştirmediğinden, otomat daha akıllıca olmadan rastgele bir sayıda kaldırılabilir veya çoğaltılabilir. Dolayısıyla bu değiştirilmiş dizelerin de kabul edilmesi gerekir.

Bağlamdan bağımsız diller için, dizede iki yerde eşleşen parantezler olarak görülebilecek şeyleri sezgisel olarak kaldırabileceğiniz / ekleyebileceğiniz biraz daha karmaşık bir pompalama lemması da vardır.


İkinci paragrafınız güzel, ancak ilki biraz kötü: "Basit pompalama lemması, normal diller için olandır". Normal dillerin ne yapması için olanı mı? Neden pompalanan lemmaya ihtiyacımız var? Pompalayan lemma ile normal bir dil olma arasındaki ilişki nedir? Tüm bu soruları cevaplamalısın, IMO.
nbro

@starblue: Dil $ {a} $ ise neden minimum pompalama uzunluğu $ 2 $; dil $ {a ^ n: n∈ℕ} $ ise, minimum pompalama uzunluğu 1 $ ' dır . more burada :( math.stackexchange.com/questions/1508471/minimum-pumping-length/… ).
justin

0

Tanım gereği düzenli diller, sonlu durum otomatı tarafından tanınan dillerdir. Bunu bir labirent olarak düşünün: durumlar odalardır, geçişler odalar arasındaki tek yönlü koridorlardır, bir başlangıç ​​odası ve bir çıkış (son) odası vardır. 'Sonlu durum otomatı' adından da anlaşılacağı gibi, sınırlı sayıda oda vardır. Bir koridor boyunca her seyahat ettiğinizde, duvarına yazılmış mektubu not edersiniz. Doğru sırada, harfleriyle etiketlenmiş koridorlardan geçerek baştan son odaya bir yol bulabilirseniz bir kelime tanınabilir.

Pompalama lemması, labirentte daha önce geçtiğiniz bir odaya geri dönmeden dolaşabileceğiniz maksimum bir uzunluk (pompalama uzunluğu) olduğunu söylüyor. Buradaki fikir, girebileceğiniz çok sayıda farklı oda olduğu için, belirli bir noktayı geçtiğiniz için ya labirentten çıkmanız ya da yollarınızın üzerinden geçmeniz gerektiğidir. Labirentte bu pompalama uzunluğundan daha uzun bir yoldan yürümeyi başarırsanız, o zaman bir dolambaçlı yoldan gidersiniz: Yolunuza kaldırılabilecek bir (t en az bir) döngü yerleştirirsiniz (labirentten geçişinizin daha küçük bir kelimeyi tanımak) veya süresiz olarak tekrarlamak (pompalamak) (süper uzun bir kelimeyi tanımaya izin vermek).

Bağlamdan bağımsız diller için benzer bir lemma vardır. Bu diller, hangi geçişlerin gerçekleştirileceğine karar vermek için bir yığından faydalanabilen sonlu durum otomatları olan, aşağı itme otomatı tarafından kabul edilen kelime olarak temsil edilebilir. Yine de, sonlu sayıda durum olduğu için, yukarıda açıklanan sezgiler, mülkiyetin biçimsel ifadesi yoluyla bile biraz daha karmaşık olabilir .


@ Bunun gibi bir cevap arıyorum.Başlangıçtaki ve sondaki oda aynı olabilir mi? Bu yorumda kaldım: Dil $ {a} $ ise, minimum pompalama uzunluğu $ 2 $; dil $ {a ^ n: n∈N} $ ise minimum pompalama uzunluğu 1 $ olur. Bana daha fazla yardım edebilir misiniz :( math.stackexchange.com/questions/1508471/minimum-pumping-length /… ).
justin

0

Meslekten olmayan terimlerle, neredeyse haklı olduğunu düşünüyorum. Bir dilin belirli bir sınıfta OLMADIĞINI kanıtlamak için bir kanıtlama tekniğidir (aslında iki) .

Örneğin, içinde sonsuz sayıda dizge olan normal bir dil (regexp, otomata, vb.) Düşünün. Belli bir noktada, starblue'nun dediği gibi, dizge otomat için çok uzun olduğu için hafızanız tükeniyor. Bu, otomatın kaç tane kopyaya sahip olduğunuzu söyleyemeyeceği dizenin bir parçası olması gerektiği anlamına gelir (bir döngü içindesiniz). Dolayısıyla, dizenin ortasında bu alt dizenin herhangi bir sayıda kopyası var ve siz hala dilde olursunuz.

Bu, bu özelliğe sahip OLMAYAN bir diliniz varsa, yani, herhangi bir sayıda tekrarlayabileceğiniz ve yine de dilde olabileceğiniz NO alt dizesi olan yeterince uzun bir dizge varsa, o zaman dilin normal olmadığı anlamına gelir.


En azından son cümle yanlıştır. "A" dizesini içeren dil normaldir, ancak onu pompalayamazsınız. Bir ipi belirli bir şekilde pompalayabiliyorsanız, bu normal değildir. Örneğin, tüm dengeli ifadelerden oluşan (ve dengesiz ifadeler içermeyen) '(' ve ')' sembollü dil normal değildir ve bunu "()" pompalayarak kanıtlarsınız.
David Thornley

@David, teşekkürler, son cümle düzeltildi. Ama bence dengeli parenler konusunda yanılıyorsun. Lemma pompalayarak parenlerin normal olmadığını kanıtlayabileceğinizi sanmıyorum. Sanırım parens pompaları.
Brian Postow

0

Örneğin, bu dili al L = a n b n .

Şimdi, bazıları için yukarıdaki dil için sonlu otomat görselleştirmeyi deneyin. n 's.

Eğer , n = 1, dizge ağırlık = ab . Burada , n = 2 ise, w = a dizesi 2 b 2 . Burada döngü dışı sonlu bir otomat yapabiliriz

Eğer , n = p , dizge ağırlık = bir p B p . Esasen 3 aşamalı sonlu bir otomat varsayılabilir. İlk aşama, bir dizi girdi alır ve ikinci aşamaya girer. Benzer şekilde 2. aşamadan 3. aşamaya kadar. Bu aşamalara x , y diyelim. ve z olarak adlandıralım .

Bazı gözlemler var

  1. Kesinlikle x "a" içerecek ve z "b" içerecektir.
  2. Şimdi y konusunda net olmalıyız :
    • durum a : y yalnızca 'a' içerebilir
    • case b : y yalnızca "b" içerebilir
    • case c : y 'a' ve 'b' kombinasyonunu içerebilir

Bu nedenle, y aşaması için sonlu otomat durumları 'a' ve 'b' girdilerini alabilmeli ve ayrıca sayılamayacak daha fazla a ve b almamalıdır.

  1. Aşama y yalnızca bir 'a' ve bir 'b' alıyorsa, gerekli iki durum vardır
  2. Eğer iki 'a' ve bir 'b' alıyorsa, döngüleri olmayan üç durum gerekir ve bu böyle devam eder ....

Yani y aşamasının tasarımı tamamen sonsuzdur. Sadece bazı döngüler koyarak sonlu hale getirebiliriz ve döngüler koyarsak, sonlu otomat L = a n b n ötesindeki dilleri kabul edebilir . Yani bu dil için sonlu bir otomat inşa edemeyiz. Dolayısıyla düzenli değil.


-1

Bu böyle bir açıklama değil ama basit. Bir ^ nb ^ n için FSM'miz, b'nin halihazırda ayrıştırılmış olan a'ların sayısını bilmesi ve aynı n sayıda b'yi kabul etmesi gerektiği şekilde inşa edilmelidir . Bir FSM böyle şeyler yapamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.