Bir dilin sezgisel olarak nasıl hissedileceği


9

Bir dil Verilen , nasıl bu dil düzenli olmadığını, üretim kurallarına bakmadan doğrudan söyleyebiliriz?L={anbncn}

Ben pompalama lemma kullanabilirsiniz ama bazı çocuklar sadece bu dilbilgisi bakarak düzenli değil diyorlar. Bu nasıl mümkün olaiblir?


1
Herkes herhangi bir dile bakabilir ve sadece normal olmadığını söyleyebilir . Sezginin, kendi başına, deneyim kadar oyunda olduğundan emin değilim. Bu oldukça basit bir dildir (normal olmamasına rağmen) ve resmi dillerin incelenmesinde kaçınılmaz olarak karşılaşılan bir dildir. Düzenli olmadığı söylendiğinde ve geçerli herhangi bir kanıt tekniği kullanarak düzenli olmadığını kanıtladıktan sonra, genellikle diğer insanları ikna etmek için bir kanıta ihtiyacınız yoktur, çünkü hepsi, konu.
Patrick87

evet, ama bazen derslerde sadece bazı kuru matematiksel kanıtları takip ediyorlar, ama gerçekten basit basit örneklerle sezgisel açıklamalardan yoksundurlar
Haziran'da

unutun . Hiç nin düzenli olmadığını hissettiniz mi? anbncnanbn
Uday Reddy

2
Dilbilgisine bakmak ve dilbilgisi düzenli olmadığından ilan etmek dilin düzenli olmaması yanlıştır. Normal diller için düzenli olmayan birçok gramer vardır. Dikkat! Bununla birlikte, bir dilbilgisinin düzenli olup olmadığına karar vermek kolaydır; sadece yapımları kontrol et.
Raphael

Yanıtlar:


11

DFA / NFA'ların ana özelliği, sınırsız hafıza eksikliğidir. Bir dile ve daha sonra bir Sonlu Otomat'a çevrilmesi gereken tek bir algoritmaya bakarsanız, bu özelliği gerektirir, yani, onu tanıyan herhangi bir algoritmanın rasgele çok sayıda şeyi hatırlaması gerektiğini hissedersiniz (sevmekn örneğinizde) bu dil muhtemelen normal değildir.

Tabii ki, her zaman matematiksel sezginin yanlış olabileceğini ve sezginizden emin olmanın tek yolunun bunu kanıtlamak olduğunu unutmamalısınız.

EDIT: Ben boşluk yorum nedeniyle, burada yorumlarda son soruya cevap verecektir.

siz sınırsız hafızadan bahsediyorsunuz, yani düzenli olmamanın nedeni budur. ama eğer istersem bir ^ nb ^ m de sınırsız hafızaya sahip olabilir, değil mi? bu hala bana barış vermiyor.

Sorun, kelimelerin ne kadar büyük olabileceği değil (genellikle sonsuz düzenli dillerle karşılaşacaksınız, çünkü her sonlu dil düzenli ve bu oldukça sıkıcı), ancak DFA'nın ne kadar hatırlaması gerektiği.
İçindeambn örneğin, hatırlamaya gerek yok m,n. Algoritmanın sadece pozitif olduklarından ve kelimenin doğru şekilde sıralandığından emin olması gerekir. Bu sonlu bir listedir ve listedeki öğelerin her biri sabit miktarda bellek gerektirir.
Bunu şununla karşılaştır:anbn, hangi için basit bir alogrithm gerektiğini hatırlamak gerekir a'nin sayısı b's. Bu sınırsız bellek gerektirir. Bir dile baktığımda ve aklınıza gelebilecek herhangi bir algoritmanın sınırsız belleğe ihtiyaç duyduğunu gördüğümde, dilin düzenli olmadığı sezgim güçleniyor. Makul bir sürede (akıllı bir algoritma (sabit miktarda bellek gerektiren bir algoritma) bulamazsam (ne kadar zamanın size bağlı olduğunu) dilin düzenli olmadığını kanıtlamaya çalışacağım.
Umarım bu biraz daha açıktır.


teşekkürler, matematiksel kanıtlar sezgiyi getiriyor, ancak şu üretim kuralına bakın: S -> ab | ASB. bu da normal olmadığını söyleyen bir ^ nb ^ n içindir. ancak ^ mb ^ n m, n> = 1 ile normaldir. bu neden? bunlar aslında aynı formda, değil mi? ben bu iki dil arasındaki farkı anlamak daha dont
Doniyor

1
Bir ^ nb ^ n için 2 şeyi takip etmeniz gerekir: birincisi, a sayısının b sayısına eşit olması (bu DFA'lar için imkansız kısımdır) ve ikincisi 'b' nin ardından bir 'a' '. ^ Mb ^ n için m, n değerini umursamıyorsunuz. Sadece en az bir 'a' ve en az bir 'b' olmasını ve 'b' nin ardından bir 'a' gelmemesini umursarsınız. Gayri resmi olarak, sadece 3 şeyi hatırlamanız gerekiyor.
Boris Trayvas

oh tamam, şimdi anladım.
Haziran'da

yani düzen de çok önemli bir şey, değil mi? gibi aabbcc kabul ama değil aabcbc sadece sipariş iyi çünkü. sağ?
19'da doniyor

1
"Normal dillerin ana özelliği sınırsız hafıza eksikliğidir." - Ne demek istediğini biliyorum, ama bu cümlenin bir anlamı yok. "bunu tanıyan herhangi bir algoritmanın gelişigüzel çok sayıda şeyi hatırlaması gerektiğini hissediyorsunuz" - Bu aslında bildiğim tek sezgidir, fakat bu tür çok, çok tehlikelidir; buraya bakın .
Raphael

5

Pompalama lemması kullanabilirim

Kesinlikle. Pompalama lemmasını veya diğer tekniklerden herhangi birini birkaç kez (düzinelerce) kullandıktan sonra, düzenli olmalarını engelleyen dillerde desenleri görmeye başlayacaksınız .anbnmuhtemelen daha önce ustalaştığınız çok basit. Yani bu aynı zamanda bir deneyim meselesi, sadece sezgi değil.

Sezginizi test etmenin iyi bir yolu şu dillere bakmaktır:

  1. {xyyzx,y,z{a,b}+}
  2. {xyyzx,y,z{a,b}}
  3. {xyyzx,y,z{a,b,c}+}
  4. {xyyzx,y,z{a,b,c}}

Hangisi bağlamdan bağımsızdır?


1
Birisi normal dillerin sınırına benzer güzel örnekler biliyorsa, lütfen bunu söyleyin. Lütfen yorumlarda cevabı bozmayın.
Raphael

Raphael - harika iş! örnekler verdiğiniz ve beni açıkça test ettiğiniz için teşekkür ederim.
doniyor

@doniyor sohbette bu tartışmaya devam
Raphael

4

Tam bir kanıt yapmak yerine, bir dilin normal olup olmadığına karar verebilirsiniz. Sadece çok güçlü bir kriter uygulamanız gerekir: Bir dil, ancak son derece fazla bölüme sahipse ve normaldir.

Sezgisel olarak, bir bölüm, girdinin bir kısmını zaten okuduktan sonra bir kelimeyi tamamlamak için ihtiyaç duyduğunuz şeydir. Daha resmi olarak, bir dilin sol bölümüL bir dize ile x, yazılı xL dizeler kümesidir w öyle ki xwL. Örneğin,L={anbn}, sonra aL={an1bn|n1}, süre bL=. Bunu kolayca görebilirizakL={ankbn|nk}. Formun sonsuz sayıda bölümü vardır, bu yüzden hemenL düzenli değil.

Bir DFA oluşturursak D L'ye karar vermek ve D eyalette olacak S okuduktan sonra a, sonra aL tarafından karar verilen dil D başlangıç ​​durumuna göre değiştirildi S. Aynı fikir, normal bir dili kendi tanımından belirleyen minimal DFA'yı oluşturmak için de kullanılabilir.


b \ L şu anlama gelir: Eğer L'yi b'ye ayırırsam, boş set alır mıyım? çünkü aslında kelimeyi baştan okumaya başlamak zorunda mıyım? ve arkadan değil?
doniyor

1
bL= çünkü L'de B ile başlayan dizeler yoktur. Doğru bir bölüm tanımlayabilirsiniz L/bbenzer şekilde "arkadan okumaya" karşılık gelir. Bir dil de son derece fazla doğru bölüme sahip olduğu sürece normaldir, çünkü normal bir dilin ters çevrilmesi normaldir. (Bu NFA'ları kullanarak göstermek kolaydır.)
James Koppel

1
İşte bölümleri ve onlardan DFA'ların nasıl oluşturulacağını anlatan iyi bir slayt destesi: cs.cmu.edu/~cdm/pdf/Minimization.pdf
James Koppel

oh tamam, çok teşekkürler. şimdi bir litle alıyorum. mmm ... yine de bir süre daha çalışmama izin ver ...
doniyor
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.