Bahasa Sebuah Pushdown Automata
Ekuivalensi Metode Penerimaan:
Final State vs. Empty Stack
IF2224 Teori Bahasa Formal dan Otomata
Dua Cara PDA Menerima Bahasa (1)
Sebuah PDA dapat menerima sebuah string input dengan dua cara yang ekuivalen:
-
Acceptance by Final State ()
- PDA selesai membaca seluruh input, dan berakhir di salah satu accepting state (anggota ).
- Isi stack pada akhirnya tidak penting.
Dua Cara PDA Menerima Bahasa (1)
-
Acceptance by Empty Stack ()
- PDA selesai membaca seluruh input, dan kondisi stack-nya benar-benar kosong ().
- State akhir PDA pada akhirnya tidak penting.
Kedua metode ini sama kuatnya (ekuivalen). Kita dapat membuktikan ini dengan menunjukkan cara mengonstruksi satu jenis PDA dari jenis lainnya.
Bukti 1: Konversi Empty Stack Final State (Diagram 6.4)
Tujuan: Mengubah PDA (yang menerima via empty stack) menjadi (yang menerima via final state).
Ide: Kita akan membuat PDA baru yang mensimulasikan . akan menambahkan “penanda dasar” di stack. Jika berhasil mengosongkan stack-nya, akan “melihat” dan segera pindah ke final state baru, .
Diagram 6.4 (Konstruksi ):

Penjelasan Diagram 6.4 (Peran State & Transisi)
Peran dan Fungsi State:
-
p0 (New Start State):
-
Ini adalah start state baru untuk .
-
Fungsinya hanya satu: melakukan inisialisasi. Ia meletakkan “penanda dasar” di stack, lalu meletakkan simbol start milik di atasnya, dan kemudian menyerahkan kontrol ke start state lama, .
-
-
q0 (Old Start State):
- Ini adalah start state dari (PDA lama). Simulasi dimulai dari sini.
-
PN (Blok Simulasi):
- Ini merepresentasikan semua state dan transisi orisinal dari . menyalin dan menjalankan semua logika persis seperti aslinya.
-
pf (New Final State):
-
Ini adalah satu-satunya final state di .
-
hanya akan masuk ke state ini jika dan hanya jika (yang disimulasikan) telah mengosongkan stack aslinya.
-
Arti Transisi Kunci:
-
(dari ke ):
-
Tanpa membaca input (), jika top stack adalah (simbol start baru), ganti dengan .
-
Artinya: PUSH simbol start lama () di atas penanda dasar baru ().
-
Arti Transisi Kunci:
-
(dari semua state ke ):
-
Tanpa membaca input (), jika top stack adalah , POP (ganti dengan ).
-
Artinya: “Deteksi penanda dasar”. Ini adalah transisi yang memicu penerimaan.
-
Penjelasan Diagram 6.4 (Logika Penerimaan)
Bagaimana tahu telah mengosongkan stack?
tahu karena “penanda dasar” yang sebelumnya diletakkan di dasar stack, kini muncul di top stack. Ini hanya bisa terjadi jika (yang disimulasikan) telah berhasil mem-POP semua simbol di atasnya (termasuk aslinya). Kemunculan adalah sinyal bahwa telah mencapai kondisi empty stack.
Mengapa acceptance via , bukan empty stack?
Karena tujuan dari konstruksi ini adalah mengubah metode penerimaan. PDA lama () menerima dengan empty stack. PDA baru () harus menerima dengan final state. Kita “mendeteksi” kondisi empty stack (via ) dan “menerjemahkannya” menjadi kondisi final state (via transisi ke ).
Bagaimana memastikan sisa stack () bisa dihapus?
Transisi itulah yang melakukannya. Transisi ini tidak hanya memindahkan ke final state , tetapi juga sekaligus mem-POP dari stack. Setelah berada di , isi stack-nya menjadi (kosong). Namun, ini tidak masalah, karena sudah berada di final state, dan definisi acceptance by final state tidak memedulikan isi stack akhir.
Trace Komputasi (Diagram 6.4)
- Contoh (Empty Stack): (Contoh dari materi).
-
Transisi :
-
-
Transisi (Baru):
-
-
(Salinan)
-
(Salinan)
-
(Baru)
-
- Trace Input: “iee”
| Step | Input | State | Stack | Transisi yang Digunakan |
|---|---|---|---|---|
| 1 | iee | p0 | X0 | (Inisialisasi) |
| 2 | iee | q | ZX0 | (1) p0 q, Push Z |
| 3 | ee | q | ZZX0 | (2) Baca i, Push Z |
| 4 | e | q | ZX0 | (3) Baca e, Pop Z |
| 5 | q | X0 | (3) Baca e, Pop Z | |
| 6 | pf | (4) -move, Deteksi X0, Pop X0 |
Hasil: Input habis (), berakhir di state pf (sebuah final state).
Kesimpulan: String “iee” DITERIMA oleh .
Bukti 2: Konversi Final State Empty Stack (Diagram 6.7)
Tujuan: Mengubah PDA (yang menerima via final state) menjadi (yang menerima via empty stack).
Ide: Kita akan membuat baru yang mensimulasikan . Jika masuk ke final state, akan memiliki transisi spontan untuk pindah ke state baru (“drain state” ). Tugas state ini hanya satu: mengosongkan sisa isi stack secepat mungkin.
Diagram 6.7 (Konstruksi ):
Slide 8: Penjelasan Diagram 6.7 (Peran State & Transisi)
Peran dan Fungsi State:
-
p (Drain State):
-
Ini adalah state baru yang krusial untuk .
-
Perannya adalah sebagai “mode kuras” (drain mode).
-
Begitu masuk ke state
p, ia akan secara spontan (via -move) mem-POP simbol apapun dari stack, dan tetap berada di statepuntuk melakukannya lagi, sampai stack benar-benar kosong.
-
Arti Transisi Kunci:
-
(dari ke ):
- Sama seperti sebelumnya. Transisi inisialisasi untuk PUSH penanda dasar dan simbol start lama .
-
(dari ke , dan loop di ):
-
anyberarti “simbol stack apapun” (semua ). -
Artinya: “Tanpa membaca input (), apapun simbol di top stack, POP simbol itu.”
-
Transisi dari ke “mengaktifkan” mode kuras.
-
Transisi loop di “melanjutkan” mode kuras sampai stack habis.
-
Penjelasan Diagram 6.7 (Logika Penerimaan)
Kapan (baru) mengetahui (lama) sedang berada di final state?
mengetahuinya karena transisi spontan ($\epsilon, \text{any} / \epsilon$) dari final state (anggota ) ke drain state p menjadi “tersedia” atau “aktif”.
Karena PDA ini bersifat non-deterministik, jika (yang baru) berada di sebuah state yang merupakan final state di (lama), dan input telah habis, kini memiliki pilihan:
-
(Jika ada) Mengambil transisi lainnya.
-
Mengambil transisi spontan
$\epsilon, \text{any} / \epsilon$untuk pindah ke statep.
Jika input sudah habis, akan mengambil pilihan (2). Perpindahan ke state p ini memicu “mode kuras” yang akan menghabiskan sisa stack (termasuk ). Ketika stack akhirnya kosong, string DITERIMA oleh (sesuai definisi acceptance by empty stack).
Trace Komputasi (Diagram 6.7)
-
Contoh (Final State): (Misal dari materi).
-
Transisi (disederhanakan):
-
(A) (Push)
-
(B) (Tebak tengah)
-
(C) (Pop)
-
(D) (Ke Final State )
-
-
Transisi (Baru):
-
-
Semua transisi (A, B, C, D) disalin.
-
(Deteksi , )
-
(Loop kuras,
-
-
Trace Input: “00”
| Step | Input | State | Stack | Transisi yang Digunakan |
|---|---|---|---|---|
| 1 | 00 | p0 | X0 | (Inisialisasi) |
| 2 | 00 | q0 | Z0X0 | (1) p0 \rightarrow q0, Push Z0 |
| 3 | 0 | q0 | 0Z0X0 | (A) Baca 0, Push 0 |
| 4 | 0 | q1 | 0Z0X0 | (B) -move, tebak tengah |
| 5 | q1 | Z0X0 | (C) Baca 0, Pop 0 | |
| 6 | q2 | Z0X0 | (D) -move, ke final state q2 | |
| 7 | p | X0 | (3) -move, deteksi q2, Pop Z0 | |
| 8 | p | (4) -move, loop kuras, Pop X0 |
Hasil: Input habis (), Stack akhir ().
Kesimpulan: String “00” DITERIMA oleh .
Kesimpulan
-
Kita telah membuktikan bahwa kedua metode penerimaan PDA adalah ekuivalen.
-
: Setiap PDA empty stack dapat diubah menjadi PDA final state dengan menambahkan penanda dasar stack () dan final state baru () untuk mendeteksi penanda tersebut.
-
: Setiap PDA final state dapat diubah menjadi PDA empty stack dengan menambahkan “drain state” () yang akan mengosongkan stack secara otomatis ketika final state (lama) tercapai.
-
Artinya, kekuatan komputasi kedua model adalah sama.