Teori Bahasa dan Otomata 2 sks Push Down Automata Versi 1 Rifki Indra Perwira, S.Kom rifkiindra@gmail.com Course Introduction
Pendahuluan PDA merupakan mesin berbasis CFG FSA mempunyai memori yg terbatas sebaliknya PDA mempunyai memori yang tak terbatas disebut stack Stack adalah suatu tempat penyimpanan yang berlaku sifat LIFO (last in first out)
Bentuk umum PDA Kalau di FSA kita mengenal 5 tupel, akan tetapi untuk PDA ada 7 tupel : M=(Q,∑,δ,г,S,F,Z), dengan Q: kumpulan state ∑: input δ: tabel transisi Г: simbol kumpulan stack S: initial state F: final state Z: stack awal
Cara kerja stack PDA Top Stack Di pop Di push D A B C B C D B C
Gambaran awal Contoh transisi PDA: δ: δ(q1,ɛ,Z)={(q2,Z)} δ(q1,a,Z)={(q1,AZ)} δ(q1,b,Z)={(q1,BZ)} δ(q1,a,A)={(q1,AA)} δ(q1,b,A)={(q1,ɛ)} δ(q1,a,B)={(q1,ɛ)} δ(q1,b,B)={(q1,BB)}
δ: δ(q1,ɛ,Z)={(q2,Z)} state q1 dgn stack awal Z, membaca input ɛ menghasilkan state q2 dengan top stack Z δ(q1,a,Z)={(q1,AZ)} state q1 dgn stack awal Z, membaca input a menghasilkan state q1 dgn top stack AZ (push A) δ(q1,b,Z)={(q1,BZ)} (push B) δ(q1,a,A)={(q1,AA)} δ(q1,b,A)={(q1,ɛ)} state q1 dgn stack awal A, membaca input b, menghasilkan state q1 dgn stack di pop δ(q1,a,B)={(q1,ɛ)} δ(q1,b,B)={(q1,BB)}
Contoh simple : Contoh PDA: Q ={q1,q2} δ: ∑={a,b} 1.δ(q1,ɛ,Z)={(q2,Z)} Г={A,B,Z} S=q1 F=q2 Z=Z δ: 1.δ(q1,ɛ,Z)={(q2,Z)} 2.δ(q1,a,Z)={(q1,AZ)} 3.δ(q1,b,Z)={(q1,BZ)} 4.δ(q1,a,A)={(q1,AA)} 5.δ(q1,b,A)={(q1,ɛ)} 6.δ(q1,a,B)={(q1,ɛ)} 7.δ(q1,b,B)={(q1,BB)}
Buktikan string ‘abba’ diterima PDA ini.. δ(q1,abba,Z) =(q1,bba,AZ)---(2) =(q1,ba,Z)---(5) =(q1,a,BZ)---(3) =(q1,ɛ,Z)---(6) =(q2,Z)---(1) State terakhir ada di q2, sehingga string ‘abba’ di terima PDA diatas, dgn top stack Z.
Diagram state b,Z/BZ b,A/ɛ a,Z/AZ ɛ,Z/Z q1 q2 b.B/BB a,A/AA a,B/ɛ
PDA deterministik PDA : M = (Q, , ,S, Z , , F) Q = {q0 , q1 , q2 }, S={q0}, F = { q2 }, = {a, b, c}, = {A, B, Z }, Z={Z}, dan fungsi transisi : No State Input Top stack Hasil 1 q0 a Z (q0,AZ) 2 b (qo,BZ) 3 A (q0,AA) 4 (qo,BA) 5 B (q0,AB) 6 (q0,BB) No State Input Top stack Hasil 7 q0 c Z (q1,Z) 8 A (q1,A) 9 B (q1,B) 10 q1 a (q1, ɛ) 11 b 12 ɛ (q2,Z)
Diterima atau tidak? Bagaimana untuk string ‘acb’? Bagaimana untuk string ‘abab’? Bagaimana untuk string ‘bbaacc’?
Apakah string ‘abcba’ di terima? Let’s try (q0,abcba,Z)(q0,bcba,AZ) (q0,bcba,AZ)(q0,cba,BAZ) (q0,cba,BAZ)(q1,ba,BAZ) (q1,ba,BAZ)(q1,a,AZ) (q1,a, AZ)(q1,ɛ, Z) (q1,ɛ,Z)(q2,Z) Karena state terakhir di q2, maka ‘abcba’ di terima, dgn top stack Z
PDA Non-deterministik NPDA : M = (Q, , ,S, Z , , F) Q = {q0 , q1 , q2 }, S={q0}, F = { q2 }, = {a, b}, = {A, B, Z }, Z= {Z}, dan fungsi transisi : No State Inp Top stack Hasil 1 q0 a Z (q0,AZ),(q1,Z) 2 b (qo,BZ),(q1,Z) 3 A (q0,AA),(q1,A) 4 (qo,BA),(q1,A) 5 B (q0,AB),(q1,B) 6 (q0,BB),(q1,B) No State Inp Top stack Hasil 7 q0 ɛ Z (q1,Z) 8 A (q1,A) 9 B (q1,B) 10 q1 a (q1, ɛ) 11 b 12 (q2, ɛ)
Diterima atau tidak? String ‘aba’? String ‘baab’? Sting ‘abc’?
Jawab: ‘aba’ (q0,aba,Z)(q0,ba,AZ) (1.kiri) (q0,ba,AZ)(q0,a,BAZ) (4.kiri) (q0,a,BAZ)(q0,ɛ,ABAZ) (5.kiri) (q0,ɛ,ABAZ) ditolak (q0,ba,AZ)(q1,a,AZ) (4.kanan) (q1,a,AZ)(q1,ɛ,Z) (10) (q1,ɛ,Z)(q2,ɛ) finish di q2 (diterima)