Back to IF2224 Teori Bahasa Formal dan Otomata
Pushdown Automata (PDA): Metode Penerimaan & Ekuivalensi
Questions/Cues
Apa 2 cara PDA menerima bahasa?
Definisi: Acceptance by Final State ()
Definisi: Acceptance by Empty Stack ()
Apa perbedaan utamanya?
Apakah kedua metode ekuivalen?
Teorema: Konversi Empty Stack Final State
Bagaimana konstruksi ?
Teorema: Konversi Final State Empty Stack
Bagaimana konstruksi ?
Reference Points
- Slide 11_2023_Pushdown Automata.pdf (hlm. 12-21)
Dua Metode Penerimaan (Acceptance)
Ada dua cara standar untuk mendefinisikan kapan sebuah PDA “menerima” (accept) sebuah string input.
Dengan berakhir di state penerima (final state).
Dengan mengosongkan stack.
1. Acceptance by Final State ()
Ini adalah metode yang paling umum, mirip dengan NFA.
Definisi Formal: Bahasa dari sebuah PDA adalah:
Penjelasan Sederhana:
Sebuah string diterima jika, setelah semua input habis dibaca (tersisa ), PDA berada di salah satu accepting state (state ada di himpunan ).
Poin Kunci: Isi stack pada akhirnya () tidak penting. Stack boleh berisi apa saja, boleh kosong, boleh penuh. Yang penting hanya state akhirnya.
Contoh: PDA untuk (palindrom) yang kita bahas di catatan pertama adalah contoh PDA yang menerima dengan final state.
2. Acceptance by Empty Stack ()
Ini adalah metode alternatif yang berfokus pada memori (stack).
Definisi Formal: Bahasa dari sebuah PDA adalah:
Penjelasan Sederhana:
Sebuah string diterima jika, setelah semua input habis dibaca (tersisa ), stack PDA menjadi benar-benar kosong (tersisa ).
Poin Kunci: State akhir PDA () tidak penting. PDA bisa berakhir di state mana saja, selama stack-nya kosong.
Catatan: Himpunan (final state) tidak relevan dalam definisi ini.
Ekuivalensi Metode Penerimaan
Kedua metode penerimaan ini ekuivalen. Artinya:
Jika sebuah bahasa bisa diterima oleh PDA (dengan empty stack), maka pasti ada PDA (dengan final state) yang juga menerima .
Jika sebuah bahasa bisa diterima oleh PDA (dengan final state), maka pasti ada PDA (dengan empty stack) yang juga menerima .
Kita dapat membuktikan ini dengan menunjukkan cara mengubah (konstruksi) satu jenis PDA ke jenis lainnya.
Teorema 6.9: Konversi Empty Stack () Final State ()
Ide: Kita membuat PDA baru () yang mensimulasikan PDA lama (). akan memiliki “sensor” di dasar stack. Jika mengosongkan stack-nya, “sensor” ini akan terdeteksi, dan akan pindah ke final state baru.
Langkah Konstruksi:
Buat baru.
Buat new start state (yang akan menjadi start state ).
Buat new final state (ini akan menjadi satu-satunya final state di ).
Buat new stack bottom marker . tidak ada di alfabet stack .
Transisi 1 (Inisialisasi): Tambahkan transisi dari ke start state lama () tanpa membaca input (). Transisi ini PUSH start symbol lama () dan marker ke stack.
Transisi 2 (Salin Transisi Lama): Salin semua transisi dari ke .
Transisi 3 (Deteksi & Terima): Tambahkan transisi baru. Dari setiap state di , jika top stack adalah marker (artinya sudah mengosongkan stack aslinya), bisa pindah ke final state dan POP .
, untuk semua di lama.
Teorema 6.11: Konversi Final State () Empty Stack ()
Ide: Kita buat PDA baru () yang mensimulasikan . Jika masuk ke final state, kita aktifkan mode “kuras” di yang akan mengosongkan sisa isi stack.
Langkah Konstruksi:
Buat baru.
Buat new start state dan new “drain” state .
Buat new stack bottom marker .
Transisi 1 (Inisialisasi): Sama seperti sebelumnya, PUSH dan , lalu pindah ke .
Transisi 2 (Salin Transisi Lama): Salin semua transisi dari ke .
Transisi 3 (Deteksi Final State): Tambahkan transisi baru. Dari setiap state yang merupakan final state di (), bisa spontan () pindah ke drain state dan POP apapun yang ada di top stack.
- , untuk semua dan semua (termasuk ).
Transisi 4 (Kuras Stack): Buat loop di state . State akan terus-menerus mem-POP isi stack sampai kosong, tanpa membaca input.
, untuk semua (termasuk ).
Dengan demikian, jika menerima (berakhir di ), akan pindah ke dan mengosongkan stack-nya, sehingga juga menerima .
PDA dapat menerima bahasa dengan dua cara yang ekuivalen: (1) Acceptance by Final State (), di mana PDA harus berakhir di accept state setelah input habis, dan (2) Acceptance by Empty Stack (), di mana PDA harus mengosongkan stack-nya setelah input habis. Kekuatan kedua metode ini sama, karena terdapat algoritma konstruksi formal (Teorema 6.9 dan 6.11) untuk mengubah satu jenis PDA ke jenis lainnya, yang intinya menggunakan stack marker baru () dan state baru untuk mendeteksi kondisi penerimaan yang lama dan memicunya ke kondisi penerimaan yang baru.
Additional Information
Analogi Konstruksi Ekuivalensi
(Empty Stack ke Final State):
Bayangkan Anda memasang sensor tekanan () di dasar tumpukan piring (). Anda menjalankan mesin pencuci piring (PDA ). Jika tumpukan piring habis dan sensor terdeteksi (artinya stack asli kosong), lampu hijau (, final state) akan menyala.
(Final State ke Empty Stack):
Bayangkan mesin Anda memiliki lampu hijau (). Anda memasang sensor di dasar tumpukan . Anda menjalankan mesin (PDA ). Segera setelah lampu hijau menyala, Anda menekan tombol “kuras” (pindah ke state ). Mode “kuras” ini akan membuang semua piring yang tersisa di tumpukan, termasuk sensor di dasarnya, sampai tumpukan benar-benar kosong. Penerimaan terjadi saat tumpukan kosong.
Pendalaman: Contoh (Slide 18)
Slide 18 memberikan contoh untuk bahasa
if-else. Mari kita analisis PDA yang tertulis di slide:
Transisi 1:
Transisi 2:
Mari kita lacak cara kerjanya.
Setiap kali membaca ‘i’, PDA mengganti 1 ‘Z’ dengan ‘ZZ’. Efek bersihnya adalah PUSH 1 ‘Z’.
Setiap kali membaca ‘e’, PDA mengganti 1 ‘Z’ dengan . Efek bersihnya adalah POP 1 ‘Z’.
PDA ini akan menerima string jika stack-nya kosong di akhir. Ini akan terjadi jika jumlah ‘e’ yang dibaca sama dengan jumlah ‘Z’ yang di-push. Karena
Zawal sudah ada 1, dan setiapimenambah 1Z, maka string diterima jika:Jumlah ‘e’ = 1 (dari ) + Jumlah ‘i’
Mari kita uji:
Input: “ie”
(karena baca ‘i’)
(karena baca ‘e’)
Ditolak (Stack tidak kosong).
Input: “iee”
(karena baca ‘i’)
(karena baca ‘e’)
(karena baca ‘e’)
Diterima! (Stack kosong).
Input: “iieee”
Diterima!
Jadi, PDA ini menerima bahasa .
(Catatan: Ini berbeda dari bahasa “if-else” yang seimbang, namun ini adalah cara kerja PDA yang tertulis di slide).
Eksplorasi Mandiri
Coba ambil PDA dari Catatan 1 (yang menerima by final state ).
Gunakan algoritma dari Teorema 6.11 untuk mengubahnya menjadi yang menerima by empty stack.