Bir dil Verilen , nasıl bu dil düzenli olmadığını, üretim kurallarına bakmadan doğrudan söyleyebiliriz?
Ben pompalama lemma kullanabilirsiniz ama bazı çocuklar sadece bu dilbilgisi bakarak düzenli değil diyorlar. Bu nasıl mümkün olaiblir?
Bir dil Verilen , nasıl bu dil düzenli olmadığını, üretim kurallarına bakmadan doğrudan söyleyebiliriz?
Ben pompalama lemma kullanabilirsiniz ama bazı çocuklar sadece bu dilbilgisi bakarak düzenli değil diyorlar. Bu nasıl mümkün olaiblir?
Yanıtlar:
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 (sevmek ö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.
İçinde örneğin, hatırlamaya gerek yok . 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:, hangi için basit bir alogrithm gerektiğini hatırlamak gerekir 'nin sayısı '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.
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 .muhtemelen 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:
Hangisi bağlamdan bağımsızdır?
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ü bir dize ile , yazılı dizeler kümesidir öyle ki . Örneğin,, sonra , süre . Bunu kolayca görebiliriz. Formun sonsuz sayıda bölümü vardır, bu yüzden hemen düzenli değil.
Bir DFA oluşturursak L'ye karar vermek ve eyalette olacak okuduktan sonra , sonra tarafından karar verilen dil başlangıç durumuna göre değiştirildi . Aynı fikir, normal bir dili kendi tanımından belirleyen minimal DFA'yı oluşturmak için de kullanılabilir.