Bir dilin düzenli olmadığını nasıl kanıtlayabilirim?


75

Normal dil sınıfını öğrendik . Düzenli ifadeler, sonlu otomatlar ve sol-doğrusal gramerler arasındaki herhangi bir kavram ile karakterize edilir, bu nedenle verilen bir dilin düzenli olduğunu göstermek kolaydır.REG

Yine de tam tersini nasıl gösteririm? Benim TA'm, bunu yapmak için, eldeki dili tanımlayamadıklarını, tüm düzenli ifadeler için (veya tüm sonlu otomatlar için veya tüm sol-doğrusal gramerler için) göstermek zorunda kalacağımızın farkındaydı. Bu büyük bir görev gibi görünüyor!

Bazı pompalama leması hakkında okudum ama gerçekten karmaşık görünüyor.

Bu, genel kanıt yöntemlerini ve uygulama örneklerini toplayan bir referans sorusudur. Bağlamsız dillerde aynı soru için buraya bakın .

Yanıtlar:


60

Çelişki tarafından Kanıtı genellikle dil düzenli olmadığını göstermek için kullanılır: let özel dil doğrulamak etmezse, bir özellik tüm düzenli diller için geçerlidir , o zaman normal değil. Aşağıdaki özellikler kullanılabilir:PPP

  1. Dave'in cevabında örneklendiği gibi, pompalama leması ;
  2. Düzenli dillerin kapanış özellikleri (küme işlemleri, birleştirme, Kleene yıldızı, ayna, homomorfizmalar);
  3. Düzenli bir dilin sınırlı sayıda önek denklik sınıfı olan Myhill – Nerode teoremi vardır .

Bir dil olduğunu kanıtlamak için kapatma özelliklerini kullanarak düzenli değildir, teknik birleştirmektir değil düzenli, örneğin Arketipsel dil olduğu bilinen bir dil elde etmek amacıyla düzenlilik korumak işlemleri ile düzenli dillerle . Örneğin, . nin normal olduğunu varsayalım , çünkü normal diller tamamlama altında kapalıdır, nin tamamlayıcısı . Şimdi kesişimini almak ve düzenli, biz elde düzenli olmadığı.L I = { a n b n | n N } L = { bir p b q | p q } L L L c L c a b ILLI={anbn|nN}L={apbq|pq}LLLcLcabI

Myhill-Nerode teoremi kanıtlamak için kullanılabilir düzenli değildir. İçin , . Tüm sınıflar farklıdır ve bu sınıfların sayılabilir bir sonsuzluğu vardır. Düzenli dil sınıfları sınırlı sayıda olması gerekir gibi düzenli değildir.p 0 I / a p = { a r b r b p | R K } = ı . { b p } IIp0I/ap={arbrbp|rN}=I.{bp}I


3
Myhill-Nerode teoremini bilmiyordum, harika!
Daniil

Vikipedi ayrıca düzenli bir dilde kelime sayısı hakkında bir bölüm var: eğer dilinizin karakterizasyonla eşleşmediğini ispatlayabilirseniz, diliniz normal değil: en.wikipedia.org/wiki/…
Alex ten Brink

@Daniil, düzenli ifadeler sayılmaz bana Myhill-Nerode teoreminin popüler bir gayrı resmi formülasyonu gibi görünüyor.
AProgrammer

@AlextenBrink: Bu temiz. Bence ifadedeki sabitler, otomatın Laplacianının özdeğerleridir. Buradaki cevaplara iyi bir katkı olur.
Louis

@Louis: aslında, bu teorem için hiçbir referans bulamadık, bu yüzden daha fazla şey biliyorsan ... Ayrıca bakınız: cs.stackexchange.com/questions/1045/…
Alex ten Brink

37

Dave'in cevabına dayanarak, burada pompalanan lemayı kullanmak için adım adım "kılavuz".

Pompalama lemasını hatırlayın (Dave'in cevabından alınmış, Wikipedia'dan alınmış):

Let düzenli bir dil olması. Daha sonra bir tamsayı vardır (sadece bağlı ) , uzunluğunda her en az ( "pompalama uzunluğu" olarak adlandırılır) (yani olabilir) olarak yazılabilir. üç koşula ayrılır), aşağıdaki şartları yerine getirir:Ln1LwLnnw=xyzw

  1. |y|1
  2. |xy|n ve
  3. "pompalanan" bir hala : , tüm , . wLi0xyizL

Size bir dil L verildiğini ve bunun pompalama lemması ile düzenli olmadığını göstermek istediğinizi varsayalım . Kanıt şöyle gözüküyor:

  1. L nin düzenli olduğunu varsayalım .
  2. Düzenli ise, o zaman pompalama lemması , pompalama uzunluğu olan n sayısının olduğunu söyler .
  3. Bir çekme belirli kelime wL daha büyük uzunluğa sahip n . Zor olan, hangi kelimenin alınacağını bilmektir.
  4. Düşünün HER bölme yollarını w , 3 parçaya w=xyz ile, |xy|n ve y boş değil. İçin her biri , bu şekillerde, bu pompalanamayan göstermektedir: her zaman bazı vardır i0 , öyle ki xyizL .
  5. Sonuç: w kelimesi , pompalama lemasına aykırı olarak "pompalanamaz" (onu xyz bölmemize rağmen ), yani bizim varsayımımız (adım 1) yanlıştır: L düzenli değildir.

Bir örneğe gitmeden önce 3. ve 4. Adımları tekrar etmeme izin verin (bu, insanların çoğunun yanlış gittiği yer). 3. Adımda, L belirli bir sözcük seçmeniz gerekir . "00001111" veya " anbn " gibi açıkça yazın . Belirli bir kelime olmayan şeylere örnekler : " w " ya da "000 önek olarak olan bir kelime".

Öte yandan, 4. Adımda birden fazla vakayı göz önünde bulundurmanız gerekir. Örneğin, eğer w=000111 ise, x=00,y=01,z=00 demek ve daha sonra bir çelişkiye ulaşmak yeterli değildir . Ayrıca x=0,y=0,z=0111 ve x=ϵ,y=000,z=111 ve diğer tüm olası seçenekleri de denetlemelisiniz .


Şimdi adımları takip edelim ve L={0k12kk>0} nın düzenli olmadığını ispatlayalım .

  1. L nin düzenli olduğunu varsayalım .
  2. Pompalama lemi tarafından verilen pompalama uzunluğu n olsun .
  3. Let w=0n12n .
    (sanity check: |w|>n gerektiği gibi. Neden bu kelime? diğer kelimeler de işe yarayabilir .. doğru w ile gelmek biraz tecrübe gerektirir ). Yine, w belirli bir kelime olduğuna dikkat edin : 0000n times11112n times .
  4. Şimdi bölmek için çeşitli durumları dikkate başlatmanızı sağlar w içine xyz ile |xy|n ve |y|>0 . yana |xy|<n olursa olsun, bölünmüş kadar w , x sadece 0 en oluşacak ve bu nedenle olacak y . Varsayalım |x|=s ve |y|=k . Biz tüm mümkündür, TÜM seçenekleri düşünmek gerekir s,k bu şekildes0,k1 ves+kn . BUL İÇİN, tüm bu davaların ispatı aynıdır, fakat genel olarak farklı olabilir.
    almaki=0 ve dikkatexyiz=xz . Bu kelime de değildirL o formun olduğundan0nk12n (ne olursa olsuns vekidi), ve k1 beri bu kelime L dilinde değil ve bir çelişkiyle karşılaşıyoruz.
  5. Dolayısıyla varsayımımız yanlış ve L düzenli değil.

Pompalama lemasını aynı hatlar boyunca nasıl kullanacağınızı açıklayan bir youtube klibi burada bulunabilir


1
Bu tanımdaki pompalama uzunluğu n'dir!
saadtaame

28

Wikipedia'dan düzenli diller için pompalama dili şöyledir:

Let düzenli bir dil olması. Daha sonra, bir tam sayı vardır P 1 (sadece bağlı olarak L ) bu tür her bir dize bu ağırlık olarak L uzunluğu, en azından p ( s "pompalama uzunluğu" olarak adlandırılır) olarak yazılabilir w = x y z (yani, ağırlık kutu aşağıdaki koşulları sağlayarak, üç alt dizgiye bölün):Lp1LwLppw=xyzw

  1. |y|1
  2. ve |xy|p
  3. tüm , x y i z L . y , pompalanabilen alt tabakadır (herhangi bir sayıda kaldırıldı veya tekrarlandı ve sonuçta elde edilen dizi her zaman L'dedir ). i0xyizL
    yL

(1) pompalanacak y halkasının en az bir uzunlukta olması gerektiği anlamına gelir; (2), döngünün ilk p karakterlerinde gerçekleşmesi gerektiği anlamına gelir. X ve z ile ilgili herhangi bir kısıtlama yoktur.

Basit bir ifadeyle, Herhangi bir normal dil L için, yeterince uzun herhangi bir kelime 3 bölüme ayrılabilir. yani w = x y z , öyle ki k 0 için tüm x y k z dizileri de L'dedir .wLw=xyzxykzk0L

Şimdi bir örnek ele alalım . Let .L={(01)n2nn0}

Bu normal olmadığını göstermek için, tüm ayrıştırma dikkate almak gerekir bakmak gibi, peki tüm olası şeyler x, y ve z verilebilir ki x y z = ( 01 ) p 2 p ( 3 p uzunluğundaki bu özel kelimeye bakmayı seçiyoruz , burada p pompalama uzunluğudur). Dizenin y kısmının nerede oluştuğunu düşünmemiz gerekir . Birinci parça ile üst üste gelebilir ve bu nedenle ( 01 ) k + 1 , ( 10 ) değerine eşit olurw=xyzxyz=(01)p2p3ppy(01)k+1 ,1(01 ) k ya0(10 ) k , bazıları içink0(unutmayın ki | y |1). İkinci kısımla üst üste gelebilir, bu, bazık>0içiny= 2 k anlamına gelir. Veya kelimenin iki kısmı boyunca üst üste gelebilir ve(01 ) k + 1 2 l ,(10 ) k biçiminde olur(10)k+11(01)k0(10)kk0|y|1y=2kk>0(01)k+12l ,1(01 ) k, 2 L ya da0(10 ) k, 2 L için,k0vel1.(10)k+12l1(01)k2l0(10)k2lk0l1

Şimdi her birini kendi dilinizde olmayan bir sözcük olacak bir çelişki elde etmek için pompalayın. Örneğin, eğer alırsak , pompalama leması, örneğin, x y 2 z = x 0 ( 10 ) k 2 l 0 ( 10 ) k 2 l z'nin içinde olması gerektiğini söyler . Dil, uygun bir x ve z seçimi için . Fakat bu kelime dilde olamaz, çünkü 2 bir 1'den önce görünür .y=0(10)k2lxy2z=x0(10)k2l0(10)k2lzxz21

Diğer durumlar sayısı ile sonuçlanır 'in sayısının daha fazla olması 2 ' s ya da tam tersi ya da bir yapıya sahip olmayacaktır deyişle neden olur ( 01 ) n- 2 , n sahip olan, örneğin, iki 0 üst üste.(01)2(01)n2n0

Bunu unutma . Burada kanıtı kısaltmak faydalıdır: Yukarıdaki ayrıştırmaların çoğu imkansızdır çünkü z bölümünü çok uzun yaparlar .|xy|pz

Yukarıdaki durumların her birinin, daha sonra pompalama lemasının bir çelişki teşkil edecek şekilde böyle bir çelişkiye yol açması gerekir. İşte bu kadar! Dil düzenli olmazdı.


Hipotezin olduğu bir örnek gerekli olur iyi olurdu. |xy|p
Gilles

@Gilles: Eklediğiniz cümlenin ne anlama geldiğinden bile emin değilim.
Dave Clarke,

@Gilles: Bütün ayrıştırmaların mümkün olduğunu, sadece bağlanacağını düşünüyorum. Bunun uzunluğuna ile ilgisi var emin değilim z . kz
Dave Clarke,

Yaa! Şimdi görüyorum Teşekkürler. Bununla birlikte, cevapta belirtilen ayrışma biçimlerinin hiçbirini dışlamaz; sadece ve l değerlerini alabilirim. kl
Dave Clarke

1
Böylesine kolay bir soruyu cevaplamak için yapılan düzenleme miktarı neden herkesin pompalama lemasını neden düzenli olmadığını kanıtlamanın "yolu" olarak öğrettiğini merak ediyor. Merak, neden sadece gibi bir şey için dize almak değil mi? Pompalama lemma söyleyen y hiçbir sahiptir 2 , içindeki s hangi bir çelişki daha basittir. (01)2p22py2
Louis

14

Belirli bir dil için , letLΣ

SL(z)=n0|LΣn|zn

(olağan) üretilmesi fonksiyonu arasında , uzunluk başına sözcük sayımı sekansını yani.L

Aşağıdaki ifade [ FlSe09 , p52] tutar :

LREGSL rational

Yani, ileP,Q,polinomları.SL(z)=P(z)Q(z)P,Q

SL

Örnek: Doğru yerleştirilmiş parantez sözcüklerinin dilini , yani Dyck dilini düşünün . Belirsiz gramer tarafından üretilir.

S[S]Sε

hangi denklem çevrilebilir

S(z)=z2S2(z)+1

bir çözüm (tüm pozitif katsayılara sahip olan)

S(z)=114z22z2

SL=SS


  1. Normal diller için yapılan ifadenin ispatı gramerler aracılığıyla çalışır ve hemen doğrusal gramerlere aktarılır (çarpımın değişebilirliği).

  [FlSe09] P. Flajolet ve R. Sedgewick'ten Analitik Kombinatorikler (2009) [Kuic70] Bağlamsız Dillerin Entropisi Üzerine W. Kuich (1970)
  


13

L={(01)m2mm0}

Sence pompalanan lemma karmaşık mı? Endişelenme. İşte @ Romuald'ın cevabında da gizli olan biraz farklı bir yaklaşım. (Quiz: nerede?)

Her düzenli dilin deterministik bir sonlu durum otomatiği (DFA) tarafından kabul edildiğini hatırlayarak başlayalım. DFA, her tepe noktasının alfabedeki her harf için tam olarak bir dış kenarı olduğu sonlu bir yönlendirilmiş grafiktir. Dizeler, "start" etiketli bir köşeye dayalı olarak size grafikte bir yürüyüş sağlar ve DFA bu yürüyüşün "accept" etiketli bir köşeyle bitip bitmediğini kabul eder. (Köşelere "devletler" denir çünkü farklı matematik alanları aynı terminolojiyi oluşturmak ister.)

abcacbc

LabcacbcL

abcacbcm{(01)i:0im+1}a=(01)pb=(01)qpqa2pb2p

Güzel olan, örneğin gerçekten dillerin normal olmadığını kanıtlamak için bir şablon olduğudur:

  • {ai:iN}tiaitiaitjij
  • ai

Başka numaralar da var, ama bu ödev problemlerinin çoğunda kolayca çalışacak.

Düzenleme: Daha eski bir versiyonda bu fikrin Pumping Lemma ile nasıl bir bağlantısı olduğu hakkında bir tartışma vardı.


Pumpma Lemma ispatını çoğaltmanın genel olarak faydalı olduğunu sanmıyorum, ama YMMV. Kanıtın anlaşılması her durumda iyidir; derhal bir dizi kapanma ve sonlu otomatların ve normal dillerin diğer ilginç özellikleri ile bağlantılıdır. Yine de son cümleyle kesinlikle aynı fikirde değilim: otomata teorisi hiç sıkıcı değil ve kesinlikle teori sınıflarının en sıkıcı kısmı değil.
Raphael

@Louis Cevabınızda we see that a2p is in the language and b2p is not, so this language can't be regular.son olarak bu açıklama ile nasıl ortaya çıktığını . Lütfen bir örnek verebilir misiniz?
Himanshu

abq12pq2ab

7

Buradaki cevabın ardından, Kolmogorv karmaşıklığına dayalı düzenli olmama kanıtlamak için bir yöntem tarif edeceğim.

Bu yaklaşım " Ming Li ve Paul MB Vitanyi tarafından " Kolmogorov Karmaşıklığı ile Biçimsel Dil Teorisine Yeni Bir Yaklaşım " bölümünde tartışılmaktadır .

K(x)xMM(ϵ)=x

LΣcLxΣynthLx={yΣ|xyL}K(y)O(logn)+c

xΣnthLx

  • kabul eden otomatL
  • öneki işlendikten sonra otomatın içindeki durumx
  • n

xxLnlogny

LxLxΣL

L={1p|p is prime}L={0n1n|n0}

x{0,1}yixithLxy10i=1ixx=0in=1i0:K(y10i)cy10i=1i1ixx=0nnK(0n)logny1x=1nK(1n)<cn>2c


7

{σ}AN

L(A)={σn:nA}.

AN

  1. L(A)

  2. L(A)

  3. n0,m1nn0nAn+mAA

  4. ai=1iA0.a0a1a2

  5. iAxi

ρρ

ANL(A)

  1. ρ=limn|A{1,,n}|nA

  2. ρ=0A

  3. ρ=1AA¯

L({2n:n0})


4

Normal diller sınıfı, birlik, kavşak, tamamlayıcı, homomorfizm, düzenli ikame, ters homomorfizm ve daha fazlası gibi çeşitli kapatma işlemleri altında kapatılır. Bu, belirli bir dilin, düzenli olmadığı bilinen bir dile indirgenerek düzenli olmadığını kanıtlamak için kullanılabilir.

{anbn:n0}{w{a,b}:#a(w)=#b(w)}ab

L={w{a,b}:#a(w)=#b(w)}LabLab={anbn:n0}

L={(0+1)n2(0+1)n:n0}

hh(0)=0h(1)=1h(2)=ϵLh(L021)={0n1n:n0}

L={0n10n:n0}

, , , tarafından verilen homomorfizma olsun . Eğer normal idi o zaman olurdu olabilir, fakat bu sadece dildir önceki örnekten.kk(0)=0k(1)=0k(2)=1Lk1(L)L


3

Myhill-Nerode teorisini kullanın.

Let bir dil olmak. Bu iki kelime söylemek olan inequivalent modülo : (göre ya da bir kelime varsa) tam olarak bir şekilde olan . için herhangi bir DFA'da , (egzersiz). Bu, aşağıdaki kriteri belirtir:Lx,yLLzxz,yzLLδ(q0,x)δ(q0,y)

Let bir dil olmak. İkili inequivalent kelime sonsuz dizi (yani, bir sonsuz dizi var olduğunu varsayalım herhangi iki eşit olmayan şekilde inequivalent modülo olan ). O zaman düzenli değil.LSx,ySLL

İşte bu kriteri uygulamanın basit bir örneği:

Dil düzenli değildir.L={anbn:n0}

Kanıt. Let . Biz herhangi iki farklı kelime iddia inequivalent modülo olan . Gerçekten de, , burada . Daha sonra ama .S={an:n0}SLai,ajSijaibiLaibjL

Bu yöntemin önemli bir özelliği, başarılı olmasının garanti edilmesidir: eğer normal değilse , o zaman eşdeğerde eşit olmayan kelimelerden oluşan sonsuz bir set vardır. Bu, Myhill-Nerode teoreminin bir sonucudur . Kısaca, denklik modülo (inequivalence modülo olumsuzlaması yukarıda tanımlandığı gibidir) bir denklik ilişkisi, ve bir dil eşdeğerlik modülo denklik sınıfı uyuşmaları sayısı IFF düzenli sonlu. Eğer düzenli değilse, her bir denklik sınıfından bir kelimeyi almak, sınırsız bir eşitsiz sözcük kümesi oluşturacaktır.LLLLLL


1

Bir dil Verilen her dize için, dize kümesi vardır öyle ki . Bu tür her set, bir durum makinesinde bir durum olarak kullanılabilir.LxyxyL

Yapmanız gereken tek şey, bu tür setlerin sayısının sınırlı olmadığını göstermektir.

Örnek olarak, . Verilen bazıları için , tek tel şekilde olduğu . Her için farklı bir setimiz var, yani normal değil.L=anbn:n0x=anbn1yxyLy=bn1nL

Bu nedenle, genel olarak, her farklı bir küme verilen sonsuz dizesini bulursanız , dil sonlu durumlu bir makine tarafından tanınamaz ve bu nedenle normal değildir.xx{y:xyL}


Bu sadece Myhill-Nerode değil mi?
David Richerby
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.