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.

  1. Dengan berakhir di state penerima (final state).

  2. 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:

  1. Jika sebuah bahasa bisa diterima oleh PDA (dengan empty stack), maka pasti ada PDA (dengan final state) yang juga menerima .

  2. 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:

  1. Buat baru.

  2. Buat new start state (yang akan menjadi start state ).

  3. Buat new final state (ini akan menjadi satu-satunya final state di ).

  4. Buat new stack bottom marker . tidak ada di alfabet stack .

  5. Transisi 1 (Inisialisasi): Tambahkan transisi dari ke start state lama () tanpa membaca input (). Transisi ini PUSH start symbol lama () dan marker ke stack.

  6. Transisi 2 (Salin Transisi Lama): Salin semua transisi dari ke .

  7. 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:

  1. Buat baru.

  2. Buat new start state dan new “drain” state .

  3. Buat new stack bottom marker .

  4. Transisi 1 (Inisialisasi): Sama seperti sebelumnya, PUSH dan , lalu pindah ke .

  5. Transisi 2 (Salin Transisi Lama): Salin semua transisi dari ke .

  6. 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 ).
  7. 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 .

Summary

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.