14. PUSH-DOWN AUTOMATA.

Slides:



Advertisements
Presentasi serupa
Teori Bahasa dan Automata
Advertisements

Teori Bahasa dan Automata
Pertemuan 14 Pengantar ke Mesin Turing
Teori Bahasa dan Automata
SUATU FINITE STATE AUTOMATA
Pertemuan 11 PUSH DOWN AUTOMATA (PDA)
12. PENGHILANGAN REKURSIF KIRI
Session 12 Pushdown Automata
Push Down Automata (PDA)
STACK.
BAB II FINITE STATE AUTOMATA.
14. PUSH DOWN AUTOMATA.
Teori Bahasa & OTOMATA.
Stack (Tumpukan).
PUSH DOWN AUTOMATA & MESIN TURING
8. Otomata hingga dengan output
Mesin Turing Pertemuan 12
7. ATURAN PRODUKSI.
PRAKTIKUM STRUKTUR DATA STACK SULIDAR FITRI, M.Sc MARCH, 2014.
Teori Bahasa dan Otomata 2 sks
BAB XIV MESIN TURING.
BAB II FINITE STATE AUTOMATA.
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
BAB 13 PUSH DOWN AUTOMATA.
PUSH DOWN AUTOMATA.
Pushdown Automata PDA.
PUSH DOWN AUTOMATA ( PDA )
12. PENGHILANGAN REKURSIF KIRI Aturan Produksi Rekursif Aturan produksi yang rekursif adalah aturan produksi yang hasil produksinya (ruas kanan)
Teori Bahasa & OTOMATA.
BAB VI ATURAN PRODUKSI UNTUK SUATU FINITE STATE AUTOMATA.
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Non Deterministic Finite Automata dengan є – Move
TEORI BAHASA DAN AUTOMATA
PUSH DOWN AUTOMATA (PDA)
FINITE STATE AUTOMATA (FSA)
Teori-Bahasa-dan-Otomata
Kelompok 6 Turing Machine
BAB II FINITE STATE AUTOMATA.
Teori Bahasa Otomata D. Sinaga, M.Kom.
FINITE STATE AUTOMATA (FSA)
Chapt 04 : Stack Oleh : Yuli Praptomo PHS, S.Kom
STACK ( TUMPUKAN ) Fajrizal.
TEORI BAHASA DAN AUTOMATA TATA BAHASA LEVEL BAHASA
Program Studi Teknik Informatika STMIK AMIKOM Purwokerto
Defri Kurniawan ADT STACK Defri Kurniawan
Program Studi Teknik Informatika STMIK AMIKOM Purwokerto
TEORI BAHASA DAN OTOMATA
Pertemuan 11 PUSH DOWN AUTOMATA (PDA)
ATURAN PRODUKSI TATA BAHASA REGULER
MESIN TURING Kuliah Teori Bahasa dan Otomata S1 Teknik Informatika
Stack (Tumpukan) Sumber Kepustakaan : putuputraastawa.files.wordpress.com/.../pert_5_sta...
OTOMATA DAN TEORI BAHASA FORMAL
OTOMATA DAN TEORI BAHASA FORMAL
Aturan Produksi Untuk Suatu Finite State Automata
ATURAN PRODUKSI UNTUK SUATU FSA PERTEMUAN KE-10 & 11.
BAB VIII POHON PENURUNAN.
STACK / TUMPUKAN Struktur Data.
STACK Yohana Nugraheni.
Mesin Turing.
Tata Bahasa Kelas Tata Bahasa
Konsep dan Notasi Bahasa
Mesin Turing HP
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
OTOMATA DAN TEORI BAHASA FORMAL
Pertemuan4.
KELOMPOK 12: AGUNG KURNIAWAN MUHAMMAD AMIN REZA ARLIANSYAH
Pushdown Automata (PDA)
ATURAN PRODUKSI UNTUK SUATU FSA.
Defri Kurniawan ADT STACK Defri Kurniawan
MESIN TURING. TEST KOMPETENSI Ni nomor berapakah mobil ini parkir?
Transcript presentasi:

14. PUSH-DOWN AUTOMATA

14.1 Push Down Automata (PDA) Merupakan mesin otomata dari bahasa bebas konteks. Perbedaan PDA dengan Otomata Hingga terletak pada kemampuan memori. Otomata hingga mempunyai memori yang terbatas, sedangkan PDA mempunyai memori yang tidak terbatas, berupa stack. Stack adalah kumpulan dari elemen-elemen sejenis dengan sifat penambahan elemen dan pengambilan elemen melalui suatu tempat yang disebut top of stack.

Aturan pengisian atau pengeluaran elemen stack menganut sistem LIFO (Last In First Out). Pengambilan elemen dari stack dikenal dengan istilah pop. Sedangkan memasukkan elemen ke dalam stack dikenal dengan istilah push. Contoh sebuah stack Top-stack  D E A Bila dilakukan operasi pop, maka kondisi stack menjadi: Top-stack  D E

Bila dilakukan operasi push B, maka kondisi stack menjadi: Top-stack  D E B

Sebuah PDA dinyatakan dalam 7 tupel: M = (Q, , , , S, F, Z) Q = himpunan state = himpunan simbol input = simbol-simbol tumpukan / stack = fungsi transisi S = state awal, S  Q F = himpunan final state, F  Q Z = simbol awal tumpukan / top stack, Z   Dari komponen diatas dapat disimpulkan bahwa: - Definisi untuk Q, , S, F sama dengan yang ada pada otomata hingga. Tupel baru adalah , Z yang berhubungan dengan stack.  memiliki kemiripan dengan  pada otomata hingga dengan beberapa perbedaan.

PDA dapat dianggap sebagai otomata hingga yang dilengkapi dengan stack. Sebuah PDA yang menerima input, selain bisa berpindah state juga bisa melakukan operasi pada stack. Kondisi atau konfigurasi PDA pada suatu saat dinyatakan dengan state dan stack. Jenis transisi pada PDA; Membaca simbol input Tanpa membaca simbol input.

Membaca simbol input Pada PDA yang membaca simbol input, terdapat sejumlah pilihan yang mungkin, bergantung pada simbol input, simbol pada top-stack, dan state. Setiap pilihan terdiri dari state berikutnya dan simbol-simbol (bisa satu, beberapa, atau kosong) untuk mengganti simbol pada top-stack. Penggantian simbol pada top-stack bisa berupa push, untuk satu atau beberapa simbol, atau berupa pop untuk simbol kosong. Setelah membuat pilihan, kemudian PDA membaca simbol input berikutnya.

2. Tanpa membaca simbol input Jenis transisi tanpa membaca input adalah transisi yang dilakukan tanpa membaca input atau . Transisi ini memungkinkan PDA memanipulasi isi stack atau berpindah state tanpa membaca input. Jenis-jenis PDA: PDA null stack, yaitu PDA yang melakukan penerimaan input dengan stack kosong. 2. PDA final state, yaitu PDA yang melakukan penerimaan input yang pilihan transisinya menyebabkan PDA mencapai final state.

Contoh 14.1 Sebuah PDA Q = {q1, q2} = {a, b} = {A, B, Z} S = q1 Z = Z F = {q2} PDA tersebut memiliki fungsi transisi: (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)}

Z A Z Fungsi transisi: (q1, , Z) = {(q2, Z)} Kita bisa membaca fungsi transisi tsb. sebagai berikut. (q1, a, Z) = {(q1, AZ)} Mesin dengan konfigurasi: State q1 dan top-stack Z membaca input ‘a’ Fungsi transisi: (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)} Z Konfigurasi menjadi: State q1 , push A ke stack, A menjadi top-stack Z A

A Z Z Fungsi transisi: (q1, , Z) = {(q2, Z)} (q1, b, A) = {(q1, )} Mesin dengan konfigurasi: State q1 dan top-stack A membaca input ‘b’ Fungsi transisi: (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)} Z A Konfigurasi menjadi: State q1 , pop A dari stack, elemen di bawah A menjadi top-stack Z

Mesin dengan konfigurasi: State q1 dan top-stack Z (q1, , Z) = {(q2, Z)} Mesin dengan konfigurasi: State q1 dan top-stack Z tanpa membaca input. Fungsi transisi: (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)} Z Konfigurasi menjadi: State q2, stack tidak berubah Z

Contoh 14.2 Sebuah PDA Q = {q1, q2} = {a, b} = {A, B, Z} S = q1 Z = Z F = {q2} PDA tersebut memiliki fungsi transisi: (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)} Tentukan apakah PDA diatas dapat menerima string ‘abba’ Penyelesaian:

Konfigurasi awal mesin: state q1 , top-stack Z, membaca input ‘a’. Fungsi transisinya: (q1, a, Z) = {(q1, AZ)} Konfigurasi mesin menjadi: state q1 dan push A Fungsi transisi: (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)} Z A

Z B Z 2. Membaca input ‘b’. Fungsi transisinya: (q1, b, A) = {(q1, )} Konfigurasi mesin menjadi: state q1 dan top-stack di pop Fungsi transisi: (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)} Z 3. Membaca input ‘b’. Fungsi transisinya: (q1, b, Z) = {(q1, BZ)} Konfigurasi mesin menjadi: state q1 dan B di push Z B

Z Z 4. Membaca input ‘a’. Fungsi transisi: Fungsi transisinya: (q1, a, B) = {(q1, )} Konfigurasi mesin menjadi: state q1 dan top-stack di pop Fungsi transisi: (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)} Z 5. Semua input sudah selesai dibaca. Fungsi transisinya: (q1, , Z) = {(q2, Z)} Konfigurasi mesin menjadi: state q2 State q2 berada dalam F (final state), maka ‘abba’ diterima oleh PDA Z

Contoh 14.3 Sebuah PDA Q = {q1, q2} ;  = {0, 1, 2} ; = {Z, B, G} ; S = {q1 , q2} ; Z = Z ; F =  PDA tersebut memiliki fungsi transisi: (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} Tentukan apakah PDA diatas dapat menerima string ‘020’ Penyelesaian:

Konfigurasi awal mesin: state q1 , top-stack Z, menerima input ‘0’. (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} Konfigurasi awal mesin: state q1 , top-stack Z, menerima input ‘0’. Fungsi transisinya: (q1, 0, Z) = {(q1, BZ)} Konfigurasi mesin menjadi: state q1 dan push B B Z

Konfigurasi mesin menjadi: state q2 dan stack tetap 2. Membaca input ‘2’ Fungsi transisinya: (q1, 2, B) = {(q2, B)} Konfigurasi mesin menjadi: state q2 dan stack tetap (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} B Z

Konfigurasi mesin menjadi: state q2 dan B di pop 3. Membaca input ‘0’ Fungsi transisinya: (q2, 0, B) = {(q2, )} Konfigurasi mesin menjadi: state q2 dan B di pop (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} Z

4. Tanpa membaca input (  ) Fungsi transisinya: (q2, , Z) = {(q2, )} Konfigurasi mesin menjadi: state q2 dan Z di pop Stack kosong (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} Karena string ‘020’ telah selesai dibaca dan berakhir pada stack kosong, maka PDA dapat menerima string ‘020’.

14.2 PDA untuk suatu tata bahasa bebas konteks PDA adalah merupakan penerima bahasa-bahasa bebas konteks, sehingga dari suatu tata bahasa bebas konteks kita dapat memperoleh sebuah PDA, begitu juga sebaliknya. Sebuah PDA bisa dibuat untuk kumpulan aturan Produksi dari suatu tata bahasa bebas konteks. Langkah-langkahnya adalah sebagai berikut: 1. Definisikan: Q = {q1, q2, q3 } S = q1 F = { q3 }  = simbol terminal

Untuk yang berhubungan dengan stack, tentukan : = semua simbol variabel, simbol terminal, dan Z (simbol awal stack) 2. Mesin ini dimulai dengan mem-push Z pada top stack. Pada setiap langkah berikutnya dilakukan salah satu dari dua hal berikut: Jika top-stack adalah variabel , misal A, kita gantikan dengan ruas kanan dari A, misal A w, maka kita ganti dengan w. Jika top-stack adalah terminal, dan sama dengan simbol masukan berikutnya, maka kita pop dari stack.

3. Berdasarkan aturan diatas, kita dapat mengkonstruksi empat tipe transisi berikut.  (q1 , , Z) = {(q2 , SZ)} untuk mem-push simbol awal (S) ke stack.  (q2 , , A) = {(q2 , w) | A  w adalah sebuah simbol produksi dalam tata bahasa bebas konteks itu} untuk semua variabel A.  (q2 , a, a) = {(q2 , )} untuk setiap simbol terminal (untuk mem-pop pembandingan terminal yang sama)  (q2 , , Z) = {(q3 , Z)}, bila selesai membaca semua input dan top-stack adalah Z, berarti string input sukses diterima oleh PDA ( q3 state akhir)

(q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} Contoh 14.4 Sebuah tata bahasa bebas konteks, D  aDa | bDb | c PDA nya dapat dikonstruksi menjadi: Q = {q1, q2, q3 } S = q1 F = { q3 } = {a, b, c} = {D, a, b, c, Z} Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)}

Dari aturan produksi yang ada, tata bahasa bebas konteks tersebut bisa menurunkan untai ‘aca’ dari D  aDa  aca Karena tata bahasa bebas konteks bisa menurunkan string ‘aca’ , maka PDA juga harus dapat menerima untai tersebut. Langkah pemeriksaan:

Z D Z Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} Konfigurasi awal mesin: state q1 , top-stack Z, tanpa menerima input (). Fungsi transisinya: (q1, , Z) = {(q2, DZ)} Konfigurasi mesin menjadi: state q2 dan push D D Z

2. Tanpa menerima input (). Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} 2. Tanpa menerima input (). Fungsi transisinya: (q2, , D) = {(q2, aDa)} Konfigurasi mesin menjadi: state q2, pop top-stack push‘aDa’ a D Z

Konfigurasi mesin menjadi: state q2 , pop top-stack D a Z 3. Menerima input ‘a’ Fungsi transisinya: (q2, a, a) = {(q2, )} Konfigurasi mesin menjadi: state q2 , pop top-stack Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} D a Z

4. Tanpa menerima input (  ) Fungsi transisinya: (q2, , D) = {(q2, c)} Konfigurasi mesin menjadi: state q2 , pop top-stack, push c Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} c a Z

Konfigurasi mesin menjadi: state q2 , pop top-stack a Z 5. Menerima input ’c’ Fungsi transisinya: (q2, c, c) = {(q2, )} Konfigurasi mesin menjadi: state q2 , pop top-stack Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} a Z

Konfigurasi mesin menjadi: state q2 , pop top-stack Z 6. Menerima input ’a’ Fungsi transisinya: (q2, a, a) = {(q2, )} Konfigurasi mesin menjadi: state q2 , pop top-stack Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} Z

7. Tanpa menerima input () Fungsi transisinya: (q2, , Z) = {(q3, Z)} Konfigurasi mesin menjadi: state q3 Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} Z Tidak ada transisi lagi dari q3 . Karena q3 state akhir dan semua input sudah selesai dibaca, sehingga menandakan untai ‘aca’ diterima oleh PDA tersebut.

Konfigurasi suatu saat dapat dinyatakan dengan triplet: (q, w, u) 14.3 Deskripsi seketika pada PDA Langkah 1 s.d. 7 pada contoh soal 14.4, dapat juga dinyatakan dalam suatu notasi yang disebut deskripsi seketika (instantaneous description). Deskripsi seketika tersebut digunakan untuk menyatakan secara formal konfigurasi PDA pada suatu saat. Perubahan dari suatu kondisi ke kondisi berikutnya dipisahkan dengan tanda ‘┣’. Konfigurasi suatu saat dapat dinyatakan dengan triplet: (q, w, u) Dimana q menyatakan state, w adalah string yang belum dibaca, sedangkan u adalah isi stack dengan simbol terkiri adalah pop-stack.

Tahapan nomor 1 s.d. 7 dapat dinyatakan sebagai berikut: (q1 , aca, Z) (q2, aca, DZ) (q2, aca, aDaZ) (q2, ca, DaZ) (q2, ca, caZ) (q2 , a, aZ) (q2 , , Z) (q3, , Z)

Latihan 1. Sebuah PDA Q = {q1, q2} ;  = {0, 1, 2} ; = {Z, B, G} ; S = {q1 , q2} ; Z = Z ; F =  PDA tersebut memiliki fungsi transisi: (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} Tentukan apakah PDA diatas dapat menerima string ‘121’ Penyelesaian:

Konfigurasi awal mesin: state q1 , top-stack Z, menerima input ‘1’. (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} Konfigurasi awal mesin: state q1 , top-stack Z, menerima input ‘1’. Fungsi transisinya: (q1, 1, Z) = {(q1, GZ)} Konfigurasi mesin menjadi: state q1 dan push G G Z

Konfigurasi mesin menjadi: state q2 dan stack tetap 2. Membaca input ‘2’ Fungsi transisinya: (q1, 2, G) = {(q2, G)} Konfigurasi mesin menjadi: state q2 dan stack tetap (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} G Z

Konfigurasi mesin menjadi: state q2 dan G di pop 3. Membaca input ‘1’ Fungsi transisinya: (q2, 1, G) = {(q2, )} Konfigurasi mesin menjadi: state q2 dan G di pop (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )} Z

4. Tanpa membaca input (  ) Fungsi transisinya: (q2, , Z) = {(q2, )} Konfigurasi mesin menjadi: state q2 dan Z di pop Stack kosong (q1, 0, Z) = {(q1, BZ)} (q1, 0, B) = {(q1, BB)} (q1, 0, G) = {(q1, BG)} (q1, 2, Z) = {(q2, Z)} (q1, 2, B) = {(q2, B)} (q1, 2, G) = {(q2, G)} (q2, 0, B) = {(q2, )} (q2, , Z) = {(q2, )} (q1, 1, Z) = {(q1, GZ)} (q1, 1, B) = {(q1, GB)} (q1, 1, G) = {(q1, GG)} (q2, 1, G) = {(q2, )}

(q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} Latihan 2 Sebuah tata bahasa bebas konteks, D  aDa | bDb | c PDA nya dapat dikonstruksi menjadi: Q = {q1, q2, q3 } S = q1 F = { q3 } = {a, b, c} = {D, a, b, c, Z} Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)}

Dari aturan produksi yang ada, tata bahasa bebas konteks tersebut bisa menurunkan untai ‘bcb’ dari D  bDb  bcb Karena tata bahasa bebas konteks bisa menurunkan string ‘bcb’ , maka PDA juga harus dapat menerima untai tersebut. Langkah pemeriksaan:

Konfigurasi awal mesin: state q1 , top-stack Z, Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} Konfigurasi awal mesin: state q1 , top-stack Z, tanpa menerima input (). Fungsi transisinya: (q1, , Z) = {(q2, DZ)} Konfigurasi mesin menjadi: state q2 dan push D D Z

2. Tanpa menerima input (). Fungsi transisinya: (q2, , D) = {(q2, bDb)} Konfigurasi mesin menjadi: state q2 , pop top-stack push ‘bDb’ Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} b D Z

Konfigurasi mesin menjadi: state q2 , pop top-stack D b Z 3. Menerima input ‘b’ Fungsi transisinya: (q2, b, b) = {(q2, )} Konfigurasi mesin menjadi: state q2 , pop top-stack Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} D b Z

4. Tanpa menerima input (  ) Fungsi transisinya: (q2, , D) = {(q2, c)} Konfigurasi mesin menjadi: state q2 , pop top-stack, push c Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} c b Z

Konfigurasi mesin menjadi: state q2 , pop top-stack b Z 5. Menerima input ’c’ Fungsi transisinya: (q2, c, c) = {(q2, )} Konfigurasi mesin menjadi: state q2 , pop top-stack Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} b Z

Konfigurasi mesin menjadi: state q2 , pop top-stack Z 6. Menerima input ’b’ Fungsi transisinya: (q2, b, b) = {(q2, )} Konfigurasi mesin menjadi: state q2 , pop top-stack Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} Z

7. Tanpa menerima input () Fungsi transisinya: (q2, , Z) = {(q3, Z)} Konfigurasi mesin menjadi: state q3 Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} Z Tidak ada transisi lagi dari q3 . Karena q3 state akhir dan semua input sudah selesai dibaca, sehingga menandakan untai ‘bcb’ diterima oleh PDA tersebut.

Fungsi transisinya: (q1, , Z) = {(q2, DZ)} (q2, , D) = {(q2, aDa), (q2, bDb), (q2, c)} (q2, a, a) =  (q2, b, b) =  (q2, c, c) = {(q2, )} (q2, , Z) = {(q3, Z)} Latihan 3: Kerjakan latihan 2, dengan deskripsi seketika. (q1 , bcb, Z) (q2, bcb, DZ) (q2, bcb, bDbZ) (q2, cb, DaZ) (q2, cb, cbZ) (q2 , b, bZ) (q2 , , Z) (q3, , Z)