Back to IF2224 Teori Bahasa Formal dan Otomata
Ekuivalensi PDA & CFG (Bagian 2: Konversi PDA ke CFG)
Questions/Cues
Apa tujuan konversi PDA CFG?
Apa ide utama di balik konversi ini?
Apa bentuk Variabel CFG yang baru?
Apa arti dari Variabel ?
Bagaimana konstruksi formal dari ?
Aturan Tipe 1 (Start Symbol)
Aturan Tipe 2 (Transisi PDA)
Bagaimana Tipe 2 menangani PUSH ()?
Bagaimana Tipe 2 menangani POP ()?
Contoh: Konversi PDA (slide 12)
Teorema 6.14
Reference Points
- Slide 12_2023_Equivalence PDA and CFG.pdf (hlm. 10-20)
Tujuan: Konversi PDA CFG
Ini adalah pembuktian arah sebaliknya: membuktikan bahwa bahasa apa pun yang diterima oleh PDA (khususnya , acceptance by empty stack) dapat dibangkitkan oleh sebuah Context-Free Grammar (CFG).
Tujuannya: Diberikan PDA , kita ingin membuat CFG sehingga .
Ide Utama: Variabel sebagai “Tugas Komputasi”
Ide utamanya sangat cerdik. Kita akan membuat CFG di mana setiap Variabel dalam grammar mewakili sebuah “tugas” atau “sub-komputasi” yang harus diselesaikan oleh PDA.
Bentuk Variabel Baru:
Variabel dalam grammar yang baru akan memiliki bentuk .
adalah state awal PDA.
adalah simbol stack yang berada di puncak.
adalah state akhir PDA.
Arti dari Variabel
Variabel mewakili “tugas” berikut:
“Hasilkan semua string yang dapat membawa PDA dari state ke state , di mana efek bersih dari komputasi ini adalah menghabiskan (POP) tepat satu simbol dari stack.”
Secara formal, jika dan hanya jika .
Konstruksi Formal dari
Diberikan PDA , kita definisikan CFG sebagai:
: Himpunan Terminal (sama dengan alfabet input ).
: Himpunan Variabel , terdiri dari:
Sebuah Start Symbol baru, .
Semua kemungkinan kombinasi variabel (untuk setiap dan ).
: Himpunan aturan produksi (dijelaskan di bawah).
: Start Symbol baru.
Aturan Produksi Tipe 1: Aturan Start Symbol
Aturan pertama menghubungkan dengan tugas awal PDA.
S \rightarrow [q_0 Z_0 p]$ , untuk setiap $p \in Q.
Artinya: “Untuk memulai grammar, mulailah komputasi di state awal dengan simbol stack awal . Tujuannya adalah untuk mengosongkan stack dan berakhir di state manapun.” (Karena tidak peduli state akhir).
Aturan Produksi Tipe 2: Mensimulasikan Transisi PDA
Ini adalah inti dari konstruksi. Untuk setiap transisi di PDA:
…kita membuat serangkaian aturan produksi baru.
Kasus (POP): Jika
Ini adalah kasus dasar. Transisi ini membaca , mem-POP , dan berakhir di .
Ini persis menyelesaikan tugas .
Aturan: (catatan: bisa ).
Kasus (PUSH/Ganti): Jika
Transisi ini membaca , mem-POP , dan me-PUSH .
Tugas (tugas “mem-POP dan berakhir di ”) sekarang dipecah menjadi:
- Baca .
- Selesaikan sub-tugas baru secara berurutan: - POP (mulai dari state , berakhir di state baru). - POP (mulai dari , berakhir di baru). - … - POP (mulai dari , berakhir di yang kita tuju).
Aturan:
PENTING: Aturan ini harus dibuat untuk setiap kemungkinan kombinasi state perantara .
Contoh: PDA (Slide 12)
:
()
()
Konstruksi :
Variabel : (satu-satunya kombinasi state dan simbol stack).
Aturan Tipe 1: (karena , dan ).
Aturan Tipe 2 (dari ):
. .
Aturan:
Aturan Tipe 2 (dari ):
. .
Kita butuh 1 state perantara . Satu-satunya pilihan adalah .
Aturan:
Substitusi:
Grammar Final:
Jika kita ganti , kita dapatkan:
(Ini adalah grammar terkenal untuk bahasa “Dyck” atau string kurung buka-tutup yang seimbang).
Teorema 6.14
Jika dibuat dari PDA dengan metode di atas, maka . Ini membuktikan bahwa untuk setiap PDA (by empty stack), ada CFG yang ekuivalen.
Setiap Pushdown Automata (PDA) yang menerima via empty stack dapat diubah menjadi Context-Free Grammar (CFG) yang ekuivalen. Metode ini menciptakan Variabel grammar baru yang canggih berbentuk , yang merepresentasikan “tugas” untuk menghasilkan string yang membawa PDA dari state ke state dengan efek bersih mem-POP . Aturan produksi CFG kemudian dibangun dengan memecah setiap transisi PDA menjadi serangkaian sub-tugas (sub-variabel) ini. Aturan Start Symbol bertugas memulai komputasi dari untuk berakhir di state manapun dengan stack kosong.
Additional Information
Kompleksitas Konstruksi PDA CFG
Metode konstruksi ini, meskipun terbukti benar, sangat tidak praktis untuk dilakukan manual pada PDA yang besar.
Jumlah Variabel: Jika PDA memiliki state dan simbol stack, CFG akan memiliki variabel. Untuk PDA dengan 5 state dan 3 simbol stack, kita sudah memiliki variabel.
Jumlah Aturan: Jumlah aturan produksi bisa meledak secara eksponensial. Untuk transisi PUSH simbol: , kita harus membuat aturan produksi baru (satu untuk setiap kombinasi state perantara ).
Inilah sebabnya mengapa dalam praktiknya, lebih mudah mengubah CFG ke PDA daripada sebaliknya.
Eksplorasi Mandiri
Coba pikirkan aturan produksi untuk PDA (dari slide 21, walaupun itu DPDA).
Misalnya transisi . Ini adalah kasus .
Jika PDA memiliki state , maka aturan adalah salah satu dari aturan yang harus dibuat (pilihan lain: atau ).