Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

NİŞANTAŞI ÜNİVERSİTESİ

Benzer bir sunumlar


... konulu sunumlar: "NİŞANTAŞI ÜNİVERSİTESİ"— Sunum transkripti:

1 NİŞANTAŞI ÜNİVERSİTESİ
BİÇİMSEL DİLLER VE OTOMATLAR HAFTA 10 NİŞANTAŞI ÜNİVERSİTESİ © Mühendislik Mimarlık Fakültesi mmf.nisantasi.edu.tr

2 Aşağı-itme Otomatı, Polindromes
10. HAFTA Aşağı-itme Otomatı, Polindromes NİŞANTAŞI ÜNİVERSİTESİ ©

3 Aşağı-itme Otomatı(Push-Down Automata)PDA
Sonlu otomatlar(FA) tüm context-free (bağlamdan bağımsız) dilleri tanıyamazlar çünkü sonlu hafızaları vardır. Fakat context-free dillerin tanınması için sınırsız miktarda bilgi depolanması gerekebilir. Örneğin L = {anbn ∶ n ≥ 0} dilindeki herhangi bir stringi incelediğimizde, sadece a’ların b’lerden önce gelip gelmediğini kontrol etmeyiz, aynı zamanda a’ları saymamız da gerekir. n sınırsız olduğu için, bu sayma işlemi sonlu otomatlarla (FA) yapılamaz. Sınır olmadan sayabilen bir otomata ihtiyacımız var. Fakat başka örneklere bakacak olursak, mesela wwR , sınırsız sayma becerisinden fazlasına ihtiyacımız var. Sembolleri depolayıp, sıralarını ters sırada karşılaştırabilen bir otomat gerekmektedir. Bunun için, depolama mekanizması sınırsız depolamaya izin veren bir yığın yapısı kullanabiliriz. Bunu da pushdown otomatlarla yapabiliriz.

4 Düzgün dillerin hepsi ve düzgün olmayan dillerin bir kısmı bağlamdan bağımsız gramerler (CFG) kullanılarak oluşturulabilir. Düzgün diller düzgün ifadeler tarafından gösterilir ve DFA’lar tarafından kabul edilir. •Context Free diller ise context-free gramerler tarafından gösterilir.

5 Context Free diller pushdown automata (yığın yapılı otomat) tarafından kabul edilir. Yığın yapılı otomatlar yardımcı bellek olarak bir yığın kullanan gerekirci olmayan (non-deterministic) sonlu durumlu otomatlardır. Gerekirci (deterministic) pushdown automatlar context- free dillerin hepsini gösteremezler.

6 A context-free grammar (CFG) is a 4-tuple, G = (V, T, S, P), where V and T are disjoint sets, S  V, and P is a finite set of rules of the form A  x, where A  V and x  (V  T)*. V = non-terminals or variables T = terminals S = Start symbol P = Productions or grammar rules

7 Örnek Let G be the CFG having productions: S  aSa | bSb | c
Then G will generate the language L = {xcxR | x  {a, b}*} This is the language of odd palindromes - palindromes with a single isolated character in the middle.

8 Memory Example: aaabbcbbaaa
D L’deki dizgileri tanıyabilecek ne tür bir belleğe ihtiyacımız vardır? Example: aaabbcbbaaa D c’den önceki sembolleri hatırlayacak bir belleğe ihtiyaç duyarız. D Dizginin c’ye kadar olan kısmını bir belleğe atarız (push) ve c ile karşılaştıktan sonra yığından sembolleri almaya başlarız (pop)ve bunları dizginin ortasından sonuna kadar olan herbir sembol ile karşılaştırırız. D Eğer bunların hepsi eşleşiyorsa bu dizgi odd palindromdur.

9 Counting aaaacbbbb D Example: L = ancbn
D Bu örnekte yine eşit sayıda a ve b olup olmadığını kontrol etmek için yığın kullanırız. D c sembolü görülene dek yığına a’lar atılır ve daha sonra okunan her b sembolü için yığından bir a silinir. D Eğer dizgi sonunda yığında hiç a kalmazsa dizgi L diline aittir.

10 Aşağı-itme Otomatı(Push-Down Automata)PDA
PDA içerik bağımsız gramerleri tanıyan makine modelidir. Biçimsel olarak PDA şu şekilde tanımlanır. PDA = < Q, ∑, Г, δ, q0, Z0, F> Burada; Q : Durumların sonlu kümesi ∑ : Giriş alfabesi Г : Yığın alfabesi (sonlu kümse) Bir PDA aşağıdaki gibi gösterilebilir. δ : Geçiş işlevi   Q        finite subsets of Q   q0 : Başlangıç durumu (q0 ∈ Q ) Z0 : Yığın başlangıç simgesi (Z0 ∈ Г) F : Kabul durumları kümesi

11 Production rules Örnek: Q = {q0, q1, q2, q3}  = {a, b}  = {0, 1}
q0 başlangıç durumu z = # (boş yığın gösterimi) F = {q3}

12 Production rules δ(q0, a, #)  {(q1, 1#), (q3, λ)}
 geçiş fonksiyonu: δ(q0, a, #)  {(q1, 1#), (q3, λ)} δ(q0, λ, #)  {(q3, λ)} δ(q1, a, 1)  {(q1, 11)} δ(q , b, 1)  {(q , λ)} Bu iki adım a’ların sayısını sayar ve b’lerin sayısı ile eşleştirir. 1 2 δ(q2, b, 1)  {(q2, λ)} δ(q2, λ, #)  {(q3, λ)} This PDA is nondeterministic. Why?

13 Production rules Bir sonlu durum otomatında (FSA) her bir kuraldan şu sonuç çıkarılır: Herhangi bir durumda iken bir sembol gördüğümüzde belirli bir duruma geçilir. PDA’da ise hangi yeni duruma geçileceğine karar vermeden önce, yığındaki sembolü de bilmemiz gerekir.

14 Working with a stack: D Yığının sadece en üstündeki elemana erişebiliriz. D Yığının en üstündeki elemana erişebilmek için bu elemanı yığından çıkartırız. (POP) D Input string’i her seferinde tek bir sembol olacak şekilde okunmalıdır. D Otomatın o anki konfigürasyonları şunları içerir: o anki durum, girdi dizgisinde kalan karakterler ve yığının içeriği.

15 δ(q0, a, #)  {(q1, 1#), (q3, λ)} kuralında, başlangıçta bir a
D Son örnekteki iki önemli geçiş: D δ(q1, a, 1)  {(q1, 11)}, bir a okunduğunda yığına 1 ekler D δ(q1, b, 1)  {(q2, λ)}, b okunduğunda, yığından 1 çıkarır. D Aynı zamanda: δ(q0, a, #)  {(q1, 1#), (q3, λ)} kuralında, başlangıçta bir a gördüğünde q3 kabul durumuna gidebilir. Tüm geçişler incelendikten sonra NPDA’nın, girilen dizgi L={anbn:n0}  {a} diline ait olması durumunda q3 kabul durumu ile sonlanacağı görülür.

16 Instantaneous description(Anlık tanım)
Given the transition function   Q        finite subsets of Q   a configuration, or instantaneous description, of M is a snapshot of the current status of the PDA. It consists of a triple: (q, w, u) where: q  Q (Kontrol biriminin o anki durumu) w   (Girdi dizgisinin okunmayan kalan kısmı) u   o anki yığın içeriği, en soldaki sembol yığının en üstündeki elemanı gösterir)

17 Instantaneous description
PDA’nın bir durumdan başka bir duruma geçmesi şu şekilde gösterilir: (q1, aw, bx) |- (q2, w, yx) Bir durumdan başka bir duruma birçok kural kullanarak geçmesi: (q1, aw, bx) |-* (q2, w, yx) veya belirli bir PDA’ya ait geçişleri göstermek için: (q1, aw, bx) |-M* (q2, w, yx)

18 Acceptance If M = (Q,    q0, z F) is a push-down automaton and w  *, the string w is accepted by M if: (q0, w, #) |-M (qf, , u) * for some u  * and some qf  F. Bu şu anlama gelmektedir: başlangıç durumundan başlanır ve yığın boştur. w stringi işlendikten sonra bir kabul durumu ile sonlanır. Yığında kalan semboller önemli değildir. Buna kabul durumuyla tanıyan PDA (acceptance by final state) diyoruz.

19 Two types of acceptance
Bir de boş yığınla kabul eden (acceptance by empty stack) PDA var. Başlangıç durumu ile başlanır, yığın boştur. w dizgisi işlendikten sonra yığında (# karakteri dışında) hiçbir sembol kalmaz. Her iki tipteki kabul de birbirine eşdeğerdir. Kabul durumu ile L dilini kabul eden bir PDA oluşturabilirsek, boş yığın ile kabul eden bir PDA da bulabiliriz.

20 Determinism vs. non-determinism
D Gerekirci (deterministic) bir PDA’da herhangi bir girdi sembolü/yığın sembolü çifti için sadece tek bir geçiş olmalıdır. D Non-deterministic bir PDA (NPDA)’da bir girdi sembolü/yığın sembolü çifti için geçiş tanımlanmayabilir ya da birçok geçiş tanımlanmış olabilir. D NPDA’da, verilen bir girdi dizgisini işlemek için birçok yola olabilir. Yollardan bazıları verilen dizgiyi kabul edebilir. Diğer yollar ise kabul durumu olmayan bir durum ile sonlanabilir. D Bir NPDA herhangi bir dizginin kabul edilmesi için otomatın takip etmesi gereken yolu tahmin edebilir.

21 Example: anbcn L = {anbcn | n>0} b, a / a  #  # q2 q0 q1
a, # / a# a, a / aa c, a /  L = {anbcn | n>0}

22 Production rules for anbcn
State Input Top of Stack Move(s) 1 q0 a # (q0, a#) 2 (q0, aa) 3 b (q1, a) 4 q1 c (q1, λ) 5 λ (q2, #)

23 Example: aabcc a a b c c b, a / a  #  # q2 q0 q1
a, # / a# a, a / aa c, a /  # a a b c c

24 Example: aabcc a a b c c b, a / a  #  # q2 q0 q1 a, #/ a# a, a / aa

25 Example: aabcc a a b c c b, a / a  #  # q2 q0 q1
a, # / a# a, a / aa c, a /  a a # b c c

26 Example: aabcc a a c c b, a / a  #  # q2 q0 q1 a, # / a# a, a / aa

27 Example: aabcc a c b, a / a  #  # q2 q0 q1 a, # / a# a, a / aa

28 Example: aabcc λ b, a / a  #  # q2 q0 q1 a, # / a# a, a / aa
c, a /  # λ

29 Example: aabcc λ b, a / a  #  # q2 q0 q1 a, # / a# a, a / aa
c, a /  # λ

30 Example: Odd palindrome
c, # / # c, a / a c, b / b     q0 q1 q2 a, # / a# b, # / b# a, a / aa b, a / ba a, b / ab b, b / bb a, a /  b b /  L = {xcxR | x  {a, b}*}

31 Production rules for Odd palindromes
State Input Top of Stack Move(s) 1 q0 a # (q0, a#) 2 b (q0, b#) 3 (q0, aa) 4 (q0, ba) 5 (q0, ab) 6 (q0, bb) 7 c (q1, #) 8 (q1, a) 9 (q1, b) 10 q1 (q1, λ) 11 12 λ (q2, #)

32 Processing abcba Rule # Resulting state Unread input Stack (initially)
q0 abcba # 1 bcba a# 4 cba ba# 9 q1 ba 11 a 10 - 12 q2 accept

33 Processing ab Rule # Resulting state Unread input Stack (initially) q0
1 b a# 4 - ba# crash

34 Processing acaa Rule # Resulting state Unread input Stack (initially)
q0 acaa # 1 caa a# 8 q1 aa 10 a 12 q2 crash

35 Crashing What is happening in the last example?
Bu örnekte acaa dizgisin ilk 3 karakteri işlendikten sonra q1 durumundayız ve input string’inin hala işlenmemiş bir sembolü (a) var. Yığının en üstünde boş-yığın işareti var. Kural 12’ye göre, q1 durumunda iken yığında # varsa, - geçişi ile q2 durumuna geçebiliriz.

36 Crashing Bu nedenle otomat aca dizgisini kabul eder.
Ancak q2 durumundayız ve hala işlenmesi gereken son bir a vardır. Fakat böyle bir kural tanımlı değildir. •Bir sonraki harekette a sembolünü işlemeye çalıştığımızda hata olur ve acaa dizgisi reddedilir.

37 Örnek: Even palindromes
Consider the following context-free language: L = {wwR | w  {a, b}*} This is the language of all even-length palindromes over {a, b}.

38 L = {wwR | w  {a, b}*} D Semboller yığına girdiklerinin ters sırasında yığından çıkarılırlar. Bu özelliği kullanarak dizginin ilk kısmını okuduğumuzda sembolleri sırasıyla yığına atarız ve ikinci kısım için de o anki girdi sembolünü yığının en üstündeki sembol ile karşılaştırırız. Buradaki zorluk, dizginin ortasını bilmememiz. Yani w nerede sonlanıyor, wR nerede başlıyor. Ancak otomatın gerekirci olmayan yapısı bize bu konuda yardım eder. NPDA dizginin ortasını doğru bir şekilde tahmin eder.

39 Rule # State Input Top of Stack Move(s) 1 q0 a # (q0, a#) 2 b (q0, b#) 3 (q0, aa) 4 (q0, ba) 5 (q0, ab) 6 (q0, bb) 7 λ (q1, #) 8 (q1, a) 9 (q1, b) 10 q1 (q1, λ) 11 12 (q2, #)

40 Örnek: Even palindromes
This PDA is non-deterministic. Note moves 7, 8, and 9. Here the PDA is “guessing” where the middle of the string occurs. If it guesses correctly (and if the PDA doesn’t accept any strings that aren’t actually in the language), this is OK.

41 baab dizgisinin işlenmesi:
(q0, baab, #)|- (q0, aab, b#) |- (q0, ab, ab#) |- (q1, ab, ab#) |- (q1, b, b#) |- (q1, λ, #) |- (q2, λ, #) (accept)

42 Örnek: All palindromes
Consider the following context-free language: L = pal = {x  {a, b}* | x = xR} This is the language of all palindromes, both odd and even, over {a, b}.

43 NİŞANTAŞI ÜNİVERSİTESİ ©
KAYNAKLAR An Introduction to Formal Languages and Automata, Peter Linz. Introduction to Automata Theory, Languages and Computation, John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. NİŞANTAŞI ÜNİVERSİTESİ ©


"NİŞANTAŞI ÜNİVERSİTESİ" indir ppt

Benzer bir sunumlar


Google Reklamları