Bağlamdan bağımsız bir dilbilgisi tarafından üretilen dili bulma


11

Bu Dragon kitabından bir soru (Çeviri hataları için özür dilerim, elimizde İngilizce sürüm yok):

Bu dilbilgisi hangi dili üretiyor?

SaSbSbSaSϵ

Burada ne yapmam gerektiğini bilmiyorum. Kitaptaki diller hakkındaki tanım bunu söylüyor (ve bu bölümdeki gibidir):

bir dil, herhangi bir ayrıştırma ağacı tarafından üretilebilecek tüm sözcükler kümesidir.

Yani, eğer bu dilbilgisinden "herhangi bir" ayrıştırma ağacı yapmak istersem, sadece ilk iki kuralı kullanarak tekrar tekrar oluşturmaya devam edebilirim. Biraz araştırdım ve her kuralın bir kez kullanılması gerektiği izlenimini edindim, ama emin değilim. Birisi bu tür problemleri çözme konusunda bazı ipuçları verebilirse çok yardımcı olacaktır.


1
İpucu: Düzenli ifade kullanın
Bartosz Przybylski

İpuçları için aşağıdaki yanıtlara bakın. Sorunuza cevap olarak: hayır, her kuralı en az bir kez kullanmak gerekli değildir. Başlangıç ​​sembolü (veya aksiyom) ile başlayın ve yalnızca terminal sembolleri (burada küçük harf) bırakılana kadar yeniden yazma kurallarını uygulayın.
Hendrik Jan

boş String'in bir terminal sembolü olmadığını varsayarak, sadece terminal sembollerinin kalması mümkün değil, ya da bir şeyi yanlış anlıyor muyum?
dan


@dan. Boş dize kaybolur, böylece yalnızca terminallerle : . Örneğin. SaSbSaaSbbSaabbSaabbbSaaabbba
Hendrik Ocak

Yanıtlar:


6

İpucu: sayısıyla ilgili ne söyleyebilirsiniz s ve üretilen deyişle s?bab

Birisi bu tür problemleri çözme konusunda bazı ipuçları verebilirse çok yardımcı olacaktır.

Burada tek bedene uyan bir tarif yok. İki CFG'nin aynı dili üretmesi veya iki CFL'nin aynı dil olup olmadığı genel olarak kararlaştırılamaz. Yararlı bir yöntem, yapımlar sırasında değişmeyen özellikleri fark etmeye çalışmaktır.


5

İpucu: Bu dilbilgisi tarafından üretilen bazı kelimeler oluşturun. Bir desen görüyor musunuz? Sadece kurallara bakarak dilbilgisi tarafından üretilen tüm kelimelerin bazı özelliklerini tanımlayabilir misiniz? Dilbilgisi tarafından oluşturulan dile ilişkin (doğru) bir tahmininiz olduğunda, bunu kanıtlamak çok zor olmayacaktır.

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.