Yanıtlar:
En az bir dilbilgisi dili için netliğini kanıtlamanın bir yolu vardır . İki adımdan oluşur:L
İlk adım oldukça açık: Gramerin istediğiniz kelimeleri (en azından) ürettiğini, bunun doğruluğunu gösterir.
İkinci adım, uzunluklu kelimeler için çok sayıda sözdizimi ağacına sahip olduğunu , nin uzunluklu kelimeleri - 1 ile olduğunu gösterir. Chomsky ve Schützenberger [1] 'e geri dönen yapı işlevini kullanır , yanin L n G
ile sözdizimi ağaç sayısı uzunluğu kelimeleri alır . Tabii kiBunun çalışması için.G n | L n |
Güzel bir şey olduğunu için kapalı bir form bulma rağmen, bağlamdan-bağımsız diller için elde etmek kolay (genellikle) olan zor olabilir. Transform uç-olmayan bir tane değişken ile bir işlev denklem sisteme:t n G
Bu göz korkutucu görünebilir, ancak örnekte açıkça görüleceği üzere yalnızca sözdizimsel bir dönüşümdür. Fikri oluşturulan uç semboller üs sayılır olmasıdır ve sistem aynı biçime sahiptir, çünkü , olarak toplam olarak genellikle meydana gelir terminalleri ile üretilebilir . Detaylar için Kuich [2] 'e bakınız.G z n n G
Bu denklem sisteminin çözümü (bilgisayar cebiri!), ; şimdi "sadece" katsayıyı çekmelisiniz (kapalı, genel biçimde). TCS Kısa Notlar ve bilgisayar cebir genellikle bunu yapabilirsiniz.
Basit dilbilgisi kurallarını düşünün
.
(adım 1, indüksiyonla ispat) olduğu açıktır . Var uzunluğunun palindrom ise da olduğu, , aksi.2 , n nn0
Denklem sisteminin verimini ayarlama
kimin çözümü
.
katsayıları palindromların sayıları ile çakışır , bu nedenle belirsizdir. G
Bu iyi bir soru, ancak bazı Google çalışanları size belirsizliğe karar vermek için genel bir yöntem olmadığını söylerdi , bu yüzden sorunuzu daha belirgin hale getirmeniz gerekiyor.
Bazı gramerler için, indüksiyonla (kelime uzunluğunun üzerinde) ispat mümkündür.
Örneğin göz önünde dilbilgisi üzerinde , aşağıdaki kurallara göre verilen:Σ = { a , b }
in bütün kelimeleri - sadece - yalnızca bir tane sol türetme var.L ( G ) ε
Bazı için nin bütün kelimelerinin sadece bir tane sol türetme olduğunu varsayın .n ∈ N
Şimdi bazı için rasgele düşünün . Açıkçası, . Eğer , her sol türetme ilk kural olması gerektiğini biliyoruz ; eğer , . Bu tüm davaları kapsar. İndüksiyon hipotezi ile için tam olarak bir tane sol türev olduğunu biliyoruz . Kombinasyonda, için de tam bir sol türev olduğu sonucuna vardık . n > 0 w 1 ∈ Σ w 1 = a S → a S a w 1 = b S → b S b w ′ w
Bu zorlaşırsa
Tüm dilbilgisi formlarına (dilbilgisi verimsiz terminalleri yoksa) ve "terminal" olmayan terminallere yönelik iddiayı güçlendirmeye yardımcı olabilir.
Ben düşünüyorum Greibach Normal forma dönüştürme güzel sol özyineleme özen edebilir ilk bu adımı uygulayarak için, (me) belirsizliği korur.
Anahtar, en azından bir türev adımını düzelten (en azından) her kelimenin bir özelliğini tanımlamaktır . Gerisi indüktif olarak takip eder.
Temel olarak, bu bir çocuk üretimi sorunu. İlk ifadeyle başlayın ve çocuklarını yaratın .... Özyinelemeli bir şekilde (DFS) yapmaya devam edin ve epeyce bir yinelemeden sonra, aynı genişletilmiş ifadeyi iki farklı çocuktan üretip üretemediğinizi görün. Bunu yapabiliyorsanız, belirsizdir. Ancak bu algoritmanın çalışma zamanını belirlemenin bir yolu yoktur. Belki de 30 seviye çocuk ürettikten sonra güvenli olduğunu varsayalım :) (Tabii 31'inci bomba olabilir)