Pushdown Automata (PDA) HP – 9 Dec 2015
Review: Finite Automata Buatlah otomata utk mengenali bahasa: L = {0i1j | i,j > 0} DFA: 1 Q3 Q0 Q1 1 Q2 start 1 Q3 0,1 TBO - PDA 9/20/2018
Finite Automata Regular Language Sebuah mesin finite automata (DFA dkk) sudah cukup utk merepresentasikan bahasa tersebut. Setelah membaca simbol kedua (‘1’), selanjutnya tidak ada hubungannya lagi dengan simbol pertama (‘0’) TBO - PDA 9/20/2018
Non Regular Language Buatlah otomata utk mengenali bahasa: L = {0i1j | i > j > 0} DFA ?? Tidak ada mekanisme dalam FA utk menyimpan berapa banyak suatu simbol yg telah dibaca. CFL Solusi: PDA TBO - PDA 9/20/2018
PDA: PushDown Automata Mesin otomata yg dilengkapi dg storage tak terhingga (in-finite) dlm struktur Stack. Mampu menyimpan sejumlah informasi pd pembacaan simbol2 awal string & digunakan pd saat pembacaan simbol2 berikutnya. NFA- + Stack Meningkatkan kemampuan baca mesin Kelas bahasa yg dikenali meningkat TBO - PDA 9/20/2018
PDA Tuple PDA: (Q, , , , q0, Z0, F) Q q0, , F Z0, stack otomata TBO - PDA 9/20/2018
StackAwal / StackAkhir State 1 State 2 input StackAwal / StackAkhir stack stack (State 1, Input, Stack Awal) (State 2, Stack Akhir) 9/20/2018 TBO - PDA
PDA Sample Buatlah otomata utk mengenali bahasa: L = {wwR | wR adalah kebalikan dari w} Palindrom dg banyak karakter genap PDA: 0, Z0/0Z0 1, Z0/1Z0 0, 0/00 0, 1/01 1, 0/10 1, 1/11 0, 0/ 1, 1/ Q3 Q0 Q1 Q2 start , Z0/Z0 , 0/0 , 1/1 , Z0/Z0 TBO - PDA 9/20/2018
PDA Sample (2) PDA: (Q, , , , q0, Z0, F) Q = {Q0, Q1, Q2} = {0, 1} = {0, 1, Z0} F = {Q2} (Q0, 0, Z0) = (Q0, 0Z0) (Q0, 1, Z0) = (Q0, 1Z0) (Q0, 0, 0) = (Q0, 00) (Q0, 0, 1) = (Q0, 01) (Q0, 1, 0) = (Q0, 10) (Q0, 1, 1) = (Q0, 11) (Q0, , Z0) = (Q1, Z0) (Q0, , 0) = (Q1, 0) (Q0, , 1) = (Q1, 1) (Q1, 0, 0) = (Q1, ) (Q1, 1, 1) = (Q1, ) (Q1, , Z0) = (Q2, Z0) TBO - PDA 9/20/2018
(Q0, 0, Z0) = (Q0, 0Z0) Kondisi (Q0, 0w, Z0): sedang berada di state Q0, memiliki input string “0w” dan stack masih kosong (Z0). Dapat berubah menjadi (Q0, w, 0Z0): tetap di Q0 dg mengkonsumsi input 0 (string menjadi hanya “w”) dengan kondisi stack bertambah menjadi 0Z0 Contoh: String “010” menjadi “10” Stack menjadi: TBO - PDA 9/20/2018
(Q0, , 1) = (Q1, 1) Kondisi (Q0, w, 1): sedang berada di state Q0, memiliki input string w dan stack dg TOP=1 Dapat berubah menjadi (Q1, w, 1): menuju Q1 dg tanpa mengkonsumsi input (-move) dengan kondisi stack juga tetap (TOP=1) TBO - PDA 9/20/2018
PDA Solution Contoh string: 1001 Q3 Q0 Q1 Q2 start Stack: TBO - PDA 9/20/2018
PDA Solution: Step 1 1001 Q3 Q0 Q1 Q2 start 1 Stack: 1, Z0/1Z0 TBO - PDA 9/20/2018
PDA Solution: Step 2 1001 Q3 Q0 Q1 Q2 start 1 Stack: 0, 1/01 TBO - PDA 1 Stack: TBO - PDA 9/20/2018
PDA Solution: Step 3 1001 Q3 Q0 Q1 Q2 start , 0/0 1 Stack: TBO - PDA 1 Stack: TBO - PDA 9/20/2018
PDA Solution: Step 4 1001 Q3 Q0 Q1 Q2 0, 0/ start 1 Stack: TBO - PDA 9/20/2018
PDA Solution: Step 5 1001 Q3 Q0 Q1 Q2 1, 1/ start Stack: TBO - PDA 9/20/2018
PDA Solution: Step 6 1001 Q3 Q0 Q1 Q2 start , Z0/Z0 Stack: TBO - PDA 9/20/2018
PDA Solution: Finish 1001 Diterima Q3 Q0 Q1 Q2 Note: PDA NFA-, maka terdapat berbagai alternatif di setiap input, sehingga tinggal dipilih alternatif yg menuju final. Q3 Q0 Q1 Q2 start Stack: TBO - PDA 9/20/2018
Instantaneous Description (ID) ID: Tuple 3 elemen (q, w, ): q = state saat ini w = input tersisa = TOP, isi teratas dari stack Contoh: (Q1, 011, X) Kondisi saat ini sedang berada di Q1 dengan input “011” dan isi stack berupa X Akan bisa menjadi (Q2, 11, 0X) jika terdapat fungsi transisi dari Q1 ke Q2 dengan alfabet 0 dan syarat stack berisi X. (Q1, 0, X) = (Q2, 0X) Dapat ditulis: (Q1, 011, X) ⊦ (Q2, 11, 0X) TBO - PDA 9/20/2018
Langauge of PDA Jenis PDA dari cara mengenal bahasa: Diterima oleh Final State: suatu string diterima jika akhirnya mencapai final state. Diterima oleh Empty Stack: suatu string diterima jika akhirnya stack kosong. Dapat saling ditransformasi Jika P adalah sebuah PDA: L(P) adalah himpunan string yang dapat mencapai final state (q0, w, Z0) ⊦* (f, , ), dapat berupa bagaimanapun kondisi stack. N(P) adalah himpunan string yang dapat mengosongkan stack (q0, w, Z0) ⊦* (q, , ), q dapat berupa state manapun. TBO - PDA 9/20/2018
Exercise (1) Jika PDA P = ({q,r}, {0,1}, {Z0, X}, , q, Z0, {r}) dengan fungsi transisi: (q, 0, Z0) = (q, XZ0) // push X (q, 0, X) = (q, XX) // push X (q, 1, X) = (q, X) // no stack ops (q, , X) = (r, ) // pop X (r, , X) = (r, ) // pop X (r, 1, X) = (r, XX) // push X (r, 1, Z0) = (r, ) // pop anything TBO - PDA 9/20/2018
Gambarlah PDA-nya. Berawal dari ID = (q, w, Z0), tunjukkan semua ID yang dapat dijangkau ketika: w = 0 contoh: ID = (q, , XZ0) w = 01 w = 0011 w = 010 TBO - PDA 9/20/2018
Exercise (2) Rancanglah sebuah PDA untuk menerima bahasa L = {0n1n | n>0} L = {aibjck | i = j atau j = k} TBO - PDA 9/20/2018
Exercise (3) (q0, b, Z0) = (q1, BZ0) (q0, , Z0) = (f, BZ0) PDA P: ({q0, q1, q2, q3, f}, {a,b}, {Z0, A, B}, , q0, Z0, {f}) dengan fungsi transisi: (q0, a, Z0) = (q1, AAZ0) (q0, b, Z0) = (q1, BZ0) (q0, , Z0) = (f, BZ0) (q1, a, A) = (q1, AAA) (q1, b, A) = (q1, ) (q1, , Z0) = (q0, Z0) (q2, a, B) = (q3, ) (q2, b, B) = (q3, BB) (q2, , Z0) = (q0, Z0) (q3, , B) = (q2, ) (q3, , Z0) = (q2, AZ0) TBO - PDA 9/20/2018
Tentukan langkah eksekusi (ID) yang menunjukkan bahwa string “bab” ada dalam L(P). Tentukan L(P) Tentukan N(P) TBO - PDA 9/20/2018