Dilbilgisi özyinelemeli özyinelemeli nesnelerdir, bu nedenle cevap açık görünüyor: İndüksiyonla. Bu, özellikleri düzeltmek için sık sık zor olduğunu söyledi. Devamında, bazı yaratıcı ön işleme işlemleri yapılmak kaydıyla, pek çok gramer doğruluğu kanıtını mekanik adımlara indirgemeyi sağlayan bir teknik tarif edeceğim.
Temel fikir kendini dilbilgisi ve dil sözcükleriyle sınırlamamaktır ; Dilbilgisinin yapısını bu şekilde kavramak zordur. Bunun yerine, gramerin yaratabileceği cümleler setini tartışacağız . Ayrıca, göz korkutucu bir kanıtlama hedefini daha izlenebilir birçok küçük hedefe böleceğiz.
Let olmayan terminalli resmi bir dil bilgisi , terminaller rules ve sembolü başlangıç . Biz tarafından ifade türetilebilir cümle grubu verilen olup, . Tarafından üretilen dil olduğu . Diyelim ki bazı için değerini göstermek istiyoruz .N- T δ S ∈ N θ ( G ) S δ a ∈ θ ( G )G=(N,T,δ,S)NTδS∈Nϑ(G)SδG L ( G ) = θ ( G ) ∩ T * L = L ( G ) L ⊆ T *α∈ϑ(G)⟺S⇒∗αGL(G)=ϑ(G)∩T∗L=L(G)L⊆T∗
Ansatz
İşte bu konuda nasıl gidiyoruz. Bu tanımlar böyleceM1,…,Mk⊆(N∪T)∗
- ϑ(G)=⋃i=1kMi ve
- T∗∩⋃i=1kMi=L .
2. genellikle tanımı ile açık , 1. ciddi bir çalışma gerektirir. İki öğe birlikte açıkça belirtildiği gibi anlamına gelir .L ( G ) = LMiL(G)=L
Gösterim kolaylığı için, .M= ⋃ki = 1Mben
Kayalık yol
Böyle bir kanıtı gerçekleştirmenin iki önemli adımı vardır.
(İyi) nasıl ? Mben
Bir strateji, gramerin üzerinde çalıştığı aşamaları araştırmaktır . Her dilbilgisi bu fikre uygun değildir; Genel olarak, bu yaratıcı bir adımdır. Dilbilgisini kendimiz tanımlayabilirsek yardımcı olur; Bazı deneyimlerle, bu yaklaşımla gramerleri daha izlenebilir tanımlayabileceğiz.
Kanıtlamak 1. nasıl?
Herhangi bir eşitlikte olduğu gibi, iki yön vardır.
- Gϑ ( G ) ⊆ M : nin yapımları üzerinde (yapısal) indüksiyon .G,
- M i SM⊆ İçeride ISTV melerin RWMAIWi'nin ( G ) : Genellikle içeren birinden başlayarak tarafından bir indüksiyon .MbenS
Bu, olabildiğince spesifik; detaylar eldeki gramer ve dile bağlıdır.
Örnek
Dili düşünün
L={anbncm∣n,m∈N}
ve dilbilgisi ile verilenδG=({S,A},{a,b,c},δ,S)δ
SA→Sc∣A→aAb∣ε
bunun için olduğunu göstermek istiyoruz . Bu gramerin üstesinden geldiği aşamalar nelerdir? İlk önce ve sonra . Bu derhal , yanic m a n b n M iL=L(G)cmanbnMi
M0M1M2={Scm∣m∈N},={anAbncm∣m,n∈N},={anbncm∣m,n∈N}.
As ve , madde 2. zaten halledilir. 1.'e doğru, kanıtı duyurulduğu gibi iki bölüme ayırdık.M 0 ∩ T ∗ = M 1 ∩ T ∗ = ∅M2=LM0∩T∗=M1∩T∗=∅
ϑ(G)⊆M
kuralları boyunca yapısal indüksiyon yapıyoruz .G
IA: yana başarıyla biz çapası.S=Sc0∈M0
İH: in bazı cümleler için de bildiğimizi varsayalım , bu da olduğunu biliyoruz .X ⊆ MX⊆ϑ(G)X⊆M
IS: Bırakalım rasgele . Hangi formda olursa olsun ve sonra hangi kuralın uygulanacağını göstermek zorundayız , ayrılmadık . Bunu tam bir dava ayrımıyla yapıyoruz. İndüksiyon hipotezi ile aşağıdaki durumlardan birinin (tam olarak) geçerli olduğunu biliyoruz:α Mα∈X⊆ϑ(G)∩MαM
- w = S c m m ∈ N Mw∈M0 , bu, bazı için .
Her ikisi de bir cümle türeten iki kural uygulanabilir :
w=Scmm∈N
M
- Scm⇒Scm+1∈M0 ve
- Scm⇒Acm=a0Ab0cm∈M1 .
- ağırlık = bir N bir b , n C m m , n ∈ Nw∈M1 , yani , bazı için :
w=anAbncmm,n∈N
- w⇒an+1Abn+1cm∈M1 ve
- w⇒anbncm∈M2 .
- ağırlık ∈ T *w∈M3 : , başka türev yapılması mümkün değildir.w∈T∗
Tüm vakaları başarıyla kapattığımız için indüksiyon tamamlandı.
ϑ(G)⊇M
başına bir (basit) ispat . nasıl "sonra" "daha önce" kullanarak demirleyebileceğini .M i M iMiMiMi
- m S c 0 = S S → S cM1 : üzerinde bir indüksiyon gerçekleştiriyoruz , demirliyoruz ve adımda kullanarak .mSc0=SS→Sc
- m , n bir C m S ⇒ * G C m ⇒ bir C m bir → bir bir bM2 : isteğe bağlı bir değere ve üzerinde indükleriz . Biz çapa o kullanarak, eski kanıtı tarafından. Adım .mnAcmS⇒∗Scm⇒AcmA→aAb
- m , n ∈ N S ⇒ ∗ a n A b n c m ⇒ a n b n c mM3 : Keyfi için için eski ispat kullanılır .m,n∈NS⇒∗anAbncm⇒anbncm
Bu, 1. ispatın ikinci yönünü tamamlar ve biz yapılır.
Dilbilgisinin doğrusal olduğunu yoğun biçimde kullandığımızı görebiliyoruz . Doğrusal olmayan gramerler için birden fazla değişken parametresi olan ihtiyacımız (ispat (lar) da), çirkin olabilir. Dilbilgisi üzerinde kontrol sahibi olursak, bu bize basit tutmamızı öğretir. eşdeğer olan bu dilbilgisini caydırıcı örnek olarak düşünün : GMiG
SAC→aAbC∣ε→aAb∣ε→cC∣ε
Egzersiz
İçin gramer ver
L={bkal(bc)manbo∣k,l,m,n,o∈N,k≠o,2l=n,m≥2}
ve doğruluğunu kanıtlayın.
Eğer bir problem varsa, gramer:
Göz önünde üretimleri ileG=({S,Br,Bl,A,C},{a,b,c},δ,S)
SBlBrAC→bSb∣Bl∣Br→bBl∣bA→Brb∣Ab→aAaa∣C→bcC∣bcbc
ve :Mi
M0M1M2M3M4M5={biSbi∣i∈N}={biBlbo∣o∈N,i≥o}={bkBrbi∣k∈N,i≥k}={bkaiAa2ibo∣k,o,i∈N,k≠o}={bkal(bc)iCa2lbo∣k,o,l,i∈N,k≠o}=L
Peki ya doğrusal olmayan dilbilgileri?
Bağlamsız dil sınıfının karakteristik özelliği Dyck dilidir : temel olarak, her bağlamsız dil bir Dyck dili ve normal bir dilin kesişimi olarak ifade edilebilir. Ne yazık ki, Dyck dili doğrusal değildir, yani bu yaklaşıma uygun bir dilbilgisi veremeyiz.
Elbette hala tanımlayabilir ve kanıtı yapabiliriz, ancak yuvalanmış indüksiyonlarla daha zorlayıcıdır ve ne olmasın. Bunun bir dereceye kadar yardımcı olabileceğini bildiğim genel bir yol var. Ansatz'ı, en azından gerekli tüm kelimeleri ürettiğimizi ve doğru miktarda kelime ürettiğimizi göstererek değiştiririz (uzunluk başına). Resmen bunu gösteriyoruzMi
- ϑ(G)⊇L ve
- n∈ N|L(G)∩Tn|=|L∩Tn|tüm .n∈N
Bu yolla, kendimizi orijinal ansatzlardan "kolay" yöne sınırlayabilir ve dilbilgisindeki aşırı karmaşık özellikleri göz ardı ederek, dilde yapıyı kullanabiliriz. Tabii ki, bedava öğle yemeği yok: her bir için kelimelerinin ürettiği kelimeleri sayma görevini alıyoruz . Şanslıyız ki, bu çoğu zaman izlenebilirdir; ayrıntılar için buraya ve buraya bakın¹. Lisans tezimde bazı örnekler bulabilirsiniz .n ∈ NG n∈N
Belirsiz ve bağlamsız gramerler için, korkarım bir taneye ansatz ve düşünme kapaklarına döndük.
- Bu sayma için belirli bir yöntemi kullanırken, gramerin belirsiz olduğu bir bonus olarak karşımıza çıkar. Buna karşılık, bu aynı zamanda tekniğin asla kanıtlayamayacağımız gibi belirsiz gramerler için başarısız olması gerektiği anlamına gelir.