Back to IF2224 Teori Bahasa Formal dan Otomata
Topic: PDA dan Context-Free Grammar (CFG)
Questions/Cues
Apa Hubungan PDA & CFG?
Mengapa Ekuivalen?
Algoritma CFG PDA
Ide Dasar Simulasi
Hanya butuh 1 State?
Algoritma PDA CFG
Arti Variabel
Contoh Konversi
Reference Points
Bab 6 PDA.pdf (Halaman 53-72)
Konsep “Leftmost Derivation”
1. Ekuivalensi Kekuatan (The Power Duo)
PDA dan CFG memiliki kekuatan ekspresif yang setara dalam mendefinisikan bahasa.
Teorema: Sebuah bahasa adalah Context-Free Language (CFL) JIKA DAN HANYA JIKA ada PDA yang menerimanya.
CFG: Cara generatif (membuat string dari aturan).
PDA: Cara rekognisi (mengecek string dengan mesin).
Penting: Hanya Non-deterministic PDA (NPDA) yang ekuivalen sepenuhnya dengan CFG. Deterministic PDA (DPDA) hanya mencakup sebagian kecil dari CFL (biasanya untuk parsing bahasa pemrograman) (dibahas nanti).
2. Konversi CFG ke PDA (Metode Empty Stack)
Cara termudah mengubah Grammar menjadi Mesin adalah dengan mensimulasikan proses Derivasi Paling Kiri (Leftmost Derivation) di dalam stack PDA.
Prinsip: PDA akan “meniru” langkah-langkah derivasi CFG pada stacknya.
Remember: Leftmost Derivation bentuknya dimana:
- : string terminal yang sudah diproses (sudah cocok dengan input)
- : variabel paling kiri yang belum diganti
- : bagian yang masih tersisa (tail)
Resep Konstruksi
State: Cukup gunakan 1 State saja (misal ). Mesin ini tidak butuh pindah-pindah state, hanya fokus manipulasi stack.
Stack Symbol (): Gabungan dari Variabel () dan Terminal () milik CFG.
Start Symbol Stack: Sama dengan Start Symbol Grammar ().
Jenis Transisi ():
Tipe 1 (Expand Variabel): Jika Top Stack adalah Variabel (misal ), ganti dengan hasil produksinya (tanpa baca input/).
- Rule:
Tipe 2 (Match Terminal): Jika Top Stack adalah Terminal (misal ), cocokkan dengan input asli. Jika sama, pop keduanya.
Rule:
Resep Konstruksi (Formal)
Diberikan CFG Susun PDA dengan:
- Hanya satu state:
- Input alphabet: (terminal dari CFG)
- Stack alphabet: (variabel dan terminal)
- Start stack symbol: (start symbol CFG)
Fungsi Transisi: Untuk variabel :
Untuk terminal :
3. Contoh Studi Kasus: CFG PDA
Diberikan CFG:
(Bahasa )
Langkah Konversi:
Kita buat PDA dengan state tunggal .
1. Buat Aturan Expand (Transisi ):
Lihat aturan produksi CFG:
Dari : Tambahkan
Dari : Tambahkan
2. Buat Aturan Match (Transisi Input):
Untuk setiap terminal ( dan ) di grammar:
(Jika stack minta 0, dan input ada 0, coret keduanya).
(Jika stack minta 1, dan input ada 1, coret keduanya).
Simulasi String “01”:
Stack awal berisi .
(Expand )
(Match input
0dengan top stack0)(Expand . hilang, sisa )
(Match input
1dengan top stack1. Stack Kosong DITERIMA)4. Konversi PDA ke CFG (Konsep Inti)
Ini jauh lebih rumit. Idenya adalah mengubah “sejarah perjalanan” mesin antar state menjadi Variabel Grammar.
Variabel Komposit :
Variabel ini bermakna: “Satu proses komputasi yang dimulai di state dengan top stack , dan berakhir di state setelah stack tersebut (dan semua anak-anaknya) habis di-pop.”
Logika Konversi Transisi:
Jika POP:
Grammar:
Artinya: Dari , baca , buang , sampai di . Selesai.
Jika PUSH:
Ini ribet. Kita harus menebak “titik tengah” perjalanan.
Grammar:
Artinya: Baca , lalu tugas dipecah dua: sub-tugas bereskan (dari state ke ) dan sub-tugas bereskan (dari state ke ). State perantara dan state akhir harus dicoba semua kombinasinya.
5. Studi Kasus: PDA ke CFG (Latihan 6.3.3)
Diberikan PDA dengan 2 state () dan transisi berikut. Mari ubah menjadi Grammar.
A. Setup Awal
Start Symbol harus menghasilkan semua kemungkinan “perjalanan” dari start state untuk menghabiskan start symbol .
Rule Awal:
B. Konversi Transisi Pop (Mudah)
Transisi:
Logika: Dari , baca , pop , berakhir di .
Hasil CFG:
Transisi:
Logika: Dari , baca 1, pop , berakhir di .
Hasil CFG:
C. Konversi Transisi Stay/Replace (Sedang)
Transisi:
Logika: Stack diganti lagi. Jadi perjalanan menghabiskan lama = baca 0 + perjalanan menghabiskan baru.
Hasil CFG (Coba semua state akhir):
D. Konversi Transisi Push (Rumit)
Transisi:
Logika: Stack diganti . Kita harus pecah tugas: bereskan dulu, baru bereskan .
Pola:
Hasil CFG (Kombinasi 2 State 2 State = 4 Aturan):
(Mid: , End: )
(Mid: , End: )
(Mid: , End: )
(Mid: , End: )
CFG dan PDA adalah ekuivalen. Kita bisa mengubah sembarang CFG menjadi PDA yang hanya memiliki 1 state menggunakan metode Empty Stack. Stack PDA berfungsi sebagai tempat simulasi derivasi: Variabel di-expand (push body produksi), dan Terminal di-match (pop jika sesuai input). Sebaliknya, mengubah PDA ke CFG membutuhkan variabel kompleks berbentuk yang merepresentasikan perjalanan mesin menghabiskan simbol stack dari state ke .
Ad Libitum: Detail Transisi PDA ke CFG
Contoh Transisi Push (Exercise 6.3.3)
Misal ada transisi PDA: .
Ini adalah operasi PUSH ( diganti ).
Dalam CFG, ini diterjemahkan menjadi sekumpulan aturan untuk Variabel .
Karena stack menjadi (dua tumpuk), perjalanan harus dibagi dua seri.
Pola Umum:
Jika state PDA hanya ada dua (), kita harus membuat kombinasi untuk semua kemungkinan state “tengah” dan “akhir”:
Target akhir , tengah :
Target akhir , tengah :
Target akhir , tengah :
Target akhir , tengah :
Bayangkan betapa banyaknya aturan produksi yang dihasilkan dari satu transisi PDA saja!
Spaced Repetition Questions (Review)
1. Mengapa konversi CFG ke PDA umumnya hanya menggunakan 1 state?
Karena logika percabangan/keputusan sudah diwakili oleh simbol-simbol Variabel di dalam stack. State hanya berfungsi sebagai “tempat berjalannya mesin”, sementara memori kontrol ada di stack.
2. Apa makna variabel $[pXq]$ dalam konversi PDA ke CFG?
merepresentasikan proses menghabiskan simbol dari stack, dimulai saat mesin di state dan berakhir saat mesin sampai di state (tepat saat di-pop bersih).
3. Dalam konversi CFG ke PDA, apa yang dilakukan mesin jika Top Stack adalah Terminal?
Mesin melakukan “Matching”. Ia mengecek apakah input saat ini sama dengan terminal di stack. Jika sama, keduanya dihapus (pop & next input). Jika beda, mesin crash/reject.
4. Apakah DPDA (Deterministic) bisa dikonversi menjadi CFG yang mencakup seluruh CFL?
Tidak selalu. DPDA hanya setara dengan subset dari CFL (disebut Deterministic CFL). Ada bahasa CFL (inherently ambiguous) yang tidak bisa dikenali oleh DPDA.

