PUSH DOWN AUTOMATA (PDA) Kuliah Teori Bahasa dan Otomata S1 Teknik Informatika STMIK “Amikom” Yogyakarta by Sumarni Adi
Pengantar PDA merupakan mesin otomata dari bahsa bebas konteks Bila FSA mempunyai kemampuan memori yg terbatas, maka pada PDA didefinisikan sebuah tempat penyimpanan yg tidak terbatas karena berupa stack/tumpukan Stack adalah kumpulan dari elemen2 sejenis dgn sifat penambahan dan pengambilan elemen melalui top of stack
Pengantar Cara kerja stack dgn menganut prinsip LIFO (last in first out) Pengambilan elemen dari stack dinyatakan dengan operasi “pop”,sedangkan Memasukkan elemen ke dalam stack dgn operasi “push” Contoh stack : top of Stack Bila di POP : Bila di Push B : A D E D E B D E
PDA dinyatakan dalam 7 tupel M = (Q, , , S , Z , ∆, F), dimana : Q : himpunan hingga state, : alfabet input, : alfabet stack, S : state awal, S Q Z : simbol awal tumpukan/top stack, Z ∆ : fungsi transisi F : state akhir, F Q
PDA dinyatakan dalam 7 tupel Dari komponen sebelumnya bisa dilihat: Definisi untuk :Q, , S, F sama dengan pada FSA tupel baru : dan Z ∆ memiliki kemiripan dgn pada FSA namun ada perbedaannya
Contoh sebuah PDA : Q = {q1,q2} = {a,b} = {A,B,Z} S = q1 Z = Z F = q2 Memiliki fungsi transisi sbb : ∆ (q1,έ,Z) = {(q2,Z)} …1 ∆ (q1,a,Z) = {(q1,AZ)} … 2 ∆ (q1,b,Z) = {(q1,BZ)} … 3 ∆ (q1,a,A) = {(q1,AA)} … 4 ∆ (q1,b,A) = {(q1, έ)} … 5 ∆ (q1,a,B) = {(q1, έ)} … 6 ∆ (q1,b,B) = {(q1, BB)} … 7
Membaca fungsi transisi Cara membaca transisi ini : ∆ (q1, έ,Z) = {(q2,Z)} State q1 dan top-stack Z membaca input “έ” Cara membaca transisi ini : ∆ (q1,a,Z) = {(q1,AZ)} State q1 dan top-stack Z membaca input “a”, konfigurasi menjadi : state q1, push A ke stack, A menjadi top-stack Cara membaca transisi ini : ∆ (q1,b,Z) = {(q1,BZ)} State q1 dan top-stack Z membaca input “b”, konfigurasi menjadi : state q1, push B ke stack, B menjadi top-stack Z A Z B Z
Membaca Fungsi Transisi cara membaca transisi ini : ∆ (q1,b,A) = {(q1, έ)} state q1 dan top stack A membaca input ‘b’ konfigurasi menjadi : state q1, A di pop, elemen di bawah A menjadi top –Stack Cara membaca transisi ini : ∆ (q1,έ,Z) = {(q2,Z)} state q1 dan top –Stack Z, serta tanpa membaca input (έ) konfigurasi menjadi : state q2, stack tidak berubah A Z Z
Contoh misal ingin diketahui apakah string ‘abba’ diterima oleh PDA di atas ? Konfigurasi awal mesin : state q1, top stack Z, membaca input ‘a’ fungsi transisinya (2) : ∆ (q1,a,Z) = {(q1,AZ)} konfigurasi mesin menjadi : state q1, A di Push A Z
Contoh Membaca input ‘b’. Fungsi transisinya (5) : ∆ (q1,b,A) = {(q1, έ)} konfigurasi mesin menjadi : state q1, top stack di pop Membaca input ‘b’. Fungsi transisinya (3) : ∆ (q1,b,Z) = {(q1,BZ)}konfigurasi mesin menjadi : state q1, B di push Membaca input ‘a’ Z B Z
Contoh Membaca input ‘a’. Fungsi transisinya (6) : ∆ (q1,a,B) = {(q1, έ)}. Konfigurasi mesin menjadi : state q1, top stack di pop Semua input sudah dibaca. Fungsi transisinya (1) : ∆ (q1,έ,Z) = {(q2,Z)}. Konfigurasi mesin menjadi : state q2, steteq2 berada dalam F (final state), maka ‘abba’ diterima oleh PDA itu Z
latihan Diketahui PDA : M = (Q, , , q , Z , ∆, F) dengan Q = {q0 , q1 , q2 }, F = { q2 }, = {a, b, c}, = {A, B, Z0 }, dan fungsi transisi ∆ terdefinisi melalui tabel berikut :