Altbasımlı Özdevinirler Tanım ABÖ Hareketleri ABÖ Dilleri Deterministik ABÖ’ler
Altbasımlı Özdevinirler Dil tanımlama gücü açısından ABÖ OBG’ye eşdeğerdir. Tüm OBD’leri sadece belirsiz ABÖ tanımlayabilir. Deterministik olan versiyonu ayrıştırıcıları (parser) modeller. Birçok programlama dilinin deterministik ABÖ’leri vardır.
İçgüdü: ABÖ Yığını idare edebilen bir ε-BSÖ düşünün. Hamleleri aşağıdakiler tarafından belirlenir: Şimdiki durum, Girdi sembolü (veya ε), ve Yığın üstündeki sembol.
İçgüdü: ABÖ – (2) Belirsiz olduğundan, ABÖ’nün birden çok “ sonraki hamlesi ” olabilir. Her tercihte, ABÖ: Durumunu değişebilir, ve hem de Yığın üstündeki sembokü sıfır veya daha çok sayıda sembolle değiştirebilir. Sıfır sembol = “at.” Birçok sembol = “it”ler dizisi
ABÖ Biçimselliği Bir ABÖ aşağıdakiler ile tanımlanır: Sonlu durumlar kümesi(tipik olarak Q). Bir girdi alfabesi (tipik olarak Σ). Bir yığın alfabesi (tipik olarak Γ). Bir geçiş fonksiyonu (tipik olarak δ). Bir başlangıç durumu (tipik olarak q0 Q). Bir başlangıç sembolü (tipik olarak Z0 Γ). Bir final durumları kümesi (tipik olarak F ⊆ Q).
Gelenekler a, b, … girdi sembolleridirler. Ancak bazen ε de bir değer olarak kabul edilebilir. …, X, Y, Z yığıt sembolleridirler. …, w, x, y, z girdi sembol dizileridirler. , ,… yığıt sembol dizileridirler.
Geçiş Fonksiyonu Üç parametre alır: Q içinden bir durum. Ya Σ içinden bir sembol, ya da ε olan bir girdi. Γ içinden bir yığıt sembolü. δ(q, a, Z), (p, ) şeklinde sıfır veya daha fazla sayıda hamledir. p bir durumdur; bir yığıt sembolleri dizisidir.
ABÖ’nün Hamleleri δ(q, a, Z)’nın hamleleri arasında (p, ) varsa, ABÖ’nün durumu q, girdide a ve yığın üzerinde Z olduğunda, aşağıdakini yapabilir: Durumu p olarak değiştirmek. a’yı giridnin önünden kaldırmak (a, ε de olabilir). Yığının üstündeki Z’yi ile değiştirmek.
Örnek: ABÖ {0n1n | n > 1} dilini kabul eden bir ABÖ tasarlayalım. Durumlar: q = başlangıç durumu. Şu ana kadar sadece 0’lar görmüşsek, q durumundayız. p = en az bir tane 1 gördük, ve geri kalanlar 1 ise devam edebiliriz. f = final durumu; kabul.
Örnek: ABÖ – (2) Yığın sembolleri: Z0 = başlangıç sembolü. Ayni zamanda,eşit sayıda 0 ve 1 gördüğümüzü anlamamız için yığının altını işaretler. X = girdide gördüğümüz 0’ların sayısını tutar.
Örnek: ABÖ – (3) Geçişler: δ(q, 0, Z0) = {(q, XZ0)}. δ(q, 0, X) = {(q, XX)}. Bu iki kural, okuduğumuz her 0 için yığın üzerine bir X itilmesını sağlar. δ(q, 1, X) = {(p, ε)}. 1 gördüğümüzde, p durumuna git ve bir X dışarı at. δ(p, 1, X) = {(p, ε)}. Her 1 için bir X dışarı at. δ(p, ε, Z0) = {(f, Z0)}. Yığın dibinde kabul et.
Örnek ABÖ’nün Hamleleri 0 0 0 1 1 1 q Z0
Örnek ABÖ’nün Hamleleri 0 0 1 1 1 q X Z0
Örnek ABÖ’nün Hamleleri 0 1 1 1 q X Z0
Örnek ABÖ’nün Hamleleri 1 1 1 q X Z0
Örnek ABÖ’nün Hamleleri 1 1 p X Z0
Örnek ABÖ’nün Hamleleri 1 p X Z0
Örnek ABÖ’nün Hamleleri p Z0
Örnek ABÖ’nün Hamleleri f Z0
Anlık Tarifler Biraz önce gördüğümüz resimleri anlık tariflerle (AT) formalize edebiliriz. AT (q, w, ) şeklinde bir üçlüdür, şöyle ki: q şu anki durumdur. w geri kalan girdidir. , üst solda olacak şekilde, yığın içeriğidir.
“Gider” İlişkisi ABÖ’nün bir hamlesinde AT I’nin AT J’yegidebileceğini I⊦J olarak yazarız. Formel olarak, eğer δ(q, a, X) içinde (p, ) varsa, herhangi bir w and için (q, aw, X)⊦(p, w, ). ⊦* notasyonunun anlamı “sıfır veya daha çok hamle” Temel: I⊦*I. Tümevarım: I⊦*J ve J⊦K ise, o zaman then I⊦*K.
Örnek: Gider Bir önceki örnek ABÖ’yü kullanarak, hamleler dizisini şöyle gösterebiliriz: (q, 000111, Z0)⊦(q, 00111, XZ0)⊦ (q, 0111, XXZ0)⊦(q, 111, XXXZ0)⊦ (p, 11, XXZ0)⊦(p, 1, XZ0)⊦(p, ε, Z0)⊦ (f, ε, Z0) Böylece, (q, 000111, Z0)⊦*(f, ε, Z0). Girdi 0001111 olsa ne olurdu?
Mümkün, çünkü girdi kalmış olsa bile ABÖ ε kullanabilir. Cevap (q, 0001111, Z0)⊦(q, 001111, XZ0)⊦ (q, 01111, XXZ0)⊦(q, 1111, XXXZ0)⊦ (p, 111, XXZ0)⊦(p, 11, XZ0)⊦(p, 1, Z0)⊦ (f, 1, Z0) Dikkat: Son AT’den başka hamle yok. 0001111 kabul edilmez, çünkü kullanılmayan girdi var.
ABÖ’nün Dili ABÖ’nün dilini tanımlamanın en yaygın yolu final durum iledir. P bir ABÖ ise, o zaman L(P) = {w| (q0, w, Z0) ⊦*(f, ε, ), f bir final durumudur ve herhangi bir yığın içeriğidir}.
ABÖ’nün Dili– (2) Ayni ABÖ bir de boş yığın ile dil tanımlar. P bir ABÖ ise, o zaman N(P) = { w | (q0, w, Z0) ⊦* (q, ε, ε), q herhangi bir durumdur} .
Dil Tanımlarının Eşdeğerliği L = L(P) ise, o zaman L = N(P’) olan başka bir ABÖ P’ vardır. If L = N(P) ise, o zaman L = L(P’’) olan başka bir ABÖ P’’ vardır.
İspat: L(P) -> N(P’) İçgüdü P’ ,P yi simüle edecek. P kabul ederse, P’ yığınını boşaltacak. P’ nın yanlışlıkla yığınını boşaltmasını (ve kabul etmesini) engellemek gerekiyor, dolayısı ile özel bir yıgın altı işaretçisi kullanır. (P yığınını boşaltıp final durumunda olmadığında kabel etmez, ayni şekilde P’ nın da kabul etmemesi lazım).
İspat: L(P) -> N(P’) P nin tüm durumları, sembollleri ve hamleleri P’ da da var, ilaveten: Yanlışlıkla yığının boşalmasını engellemek için yeni yığın sembolü X0. Yeni bir başlangıç durumu s and “silme” durumu e. δ(s, ε, X0) = {(q0, Z0X0)}. P yi başlat. P nin tüm final durumları f ve yığın sembolleri X için δ(f, ε, X) = {(e, ε), δ(e, ε, X) = {(e, ε)}.
İspat: N(P) -> L(P’’) İçgüdü P” , P yi simüle eder. P nin yığınını boşalttığını tespit etmek için P” nın özel bir yığın altı işaretçisi var. Yığın boşalırsa, P” kabul eder.
İspat: N(P) -> L(P’’) P’’ da P nin tüm durumları, sembolleri ve hamleleri var, ilaveten: Yeni bir yığın altı işaretçisi X0. Yeni bir başlangıç durumu s ve final durumu f. δ(s, ε, X0) = {(q0, Z0X0)}. P yi başlat. P deki tüm q durumları için δ(q, ε, X0) = {(f, ε)}.
Deterministik ABÖ’ler Deterministik olmak için, herhangi bir durum q, girdi a ve yığın sembolü X için en çok bir hamle olmalı. İlaveten, gerçek bir girdi kullanımı ile ε arasında bir tercih olmamalı. Formel olarak, δ(q, a, X) ve δ(q, ε, X) ayni anda boş olmamalı.