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:

    1. Sebuah Start Symbol baru, .

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

  1. Kasus (POP): Jika

    • Ini adalah kasus dasar. Transisi ini membaca , mem-POP , dan berakhir di .

    • Ini persis menyelesaikan tugas .

    • Aturan: (catatan: bisa ).

  2. Kasus (PUSH/Ganti): Jika

    • Transisi ini membaca , mem-POP , dan me-PUSH .

    • Tugas (tugas “mem-POP dan berakhir di ”) sekarang dipecah menjadi:

      1. Baca .
      2. 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.

Summary

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.