Back to IF2224 Teori Bahasa Formal dan Otomata

Ekuivalensi PDA & CFG (Bagian 1: Konversi CFG ke PDA)

Questions/Cues

  • Apa hubungan CFG & PDA?

  • Apa tujuan konversi CFG PDA?

  • Apa ide utama di balik konversi ini?

  • Bagaimana PDA mensimulasikan derivasi?

  • Bagaimana jika top stack Variabel?

  • Bagaimana jika top stack Terminal?

  • Apa konstruksi formal ?

  • Transisi Tipe 1 ()

  • Transisi Tipe 2 ()

  • Teorema 6.13

Reference Points

  • Slide 12_2023_Equivalence PDA and CFG.pdf (hlm. 2-9)

Hubungan Fundamental CFG & PDA

Teorema inti dari bab ini adalah:

Sebuah bahasa adalah Context-Free Language (CFL) jika dan hanya jika bahasa tersebut diterima oleh sebuah Pushdown Automata (PDA).

Ini berarti:

  1. Setiap bahasa yang bisa dibangkitkan oleh CFG, pasti bisa dikenali oleh PDA.

  2. Setiap bahasa yang bisa dikenali oleh PDA, pasti bisa dibangkitkan oleh CFG.

Karena kita sudah tahu dari materi sebelumnya bahwa PDA (by final state) PDA (by empty stack), maka kita hanya perlu membuktikan:

CFG PDA (by empty stack).

Catatan ini berfokus pada arah pertama: CFG PDA.

Tujuan: Konversi CFG PDA

Diberikan sebuah CFG , kita ingin membuat sebuah PDA yang menerima bahasa yang sama, . Kita akan menggunakan metode acceptance by empty stack.

Tujuannya: Membuktikan bahwa .

Ide Utama: Simulasi Leftmost Derivation

Ide utamanya adalah membuat PDA yang mensimulasikan leftmost derivation () dari grammar .

  • Stack PDA akan digunakan untuk menyimpan sentential form (bentuk kalimat) dari proses derivasi. Sentential form adalah string yang berisi campuran Variabel dan Terminal.

  • Top (puncak) stack akan selalu mewakili simbol paling kiri dari sentential form yang tersisa.

Bagaimana PDA Mensimulasikan Derivasi?

PDA akan bekerja sebagai berikut:

  1. Jika top stack adalah Variabel (misal ):

    • PDA secara non-deterministik akan memilih salah satu aturan produksi untuk dari grammar (misal ).

    • PDA akan POP dari stack.

    • PDA akan PUSH (string isi aturan) ke stack.

    • Ini semua terjadi dalam satu transisi spontan (membaca input ).

  2. Jika top stack adalah Terminal (misal ):

    • PDA harus mencocokkan simbol ini dengan string input.

    • PDA akan membaca simbol input berikutnya.

    • Jika simbol input = (cocok): PDA akan POP dari stack dan melanjutkan.

    • Jika simbol input (tidak cocok): Komputasi di jalur non-deterministik ini “mati” (gagal).

Kondisi Penerimaan (Acceptance):

Jika di akhir proses, semua input telah habis dibaca DAN stack menjadi kosong, berarti string input tersebut berhasil diderivasi dari simbol , sehingga string tersebut diterima.

Konstruksi Formal

Diberikan , kita definisikan PDA sebagai:

  • State : Hanya punya satu state, yaitu .

  • Alfabet Input : Adalah himpunan terminal , yaitu .

  • Alfabet Stack : Adalah gabungan Variabel dan Terminal , yaitu .

  • Fungsi Transisi : Didefinisikan dalam 2 tipe (lihat di bawah).

  • Start State : Adalah .

  • Start Symbol : Adalah start symbol grammar, yaitu .

Transisi Tipe 1: Ekspansi Variabel

Untuk setiap Variabel , kita tambahkan transisi untuk setiap aturan produksinya.

Jika adalah aturan produksi di , maka:

  • Artinya: Di state , tanpa membaca input (), jika top stack adalah , ganti dengan (POP , PUSH ). Ini adalah langkah “derivasi”.

Transisi Tipe 2: Pencocokan Terminal

Untuk setiap Terminal , kita tambahkan transisi pencocokan.

  • Artinya: Di state , jika input adalah dan top stack adalah , maka POP dari stack (ganti dengan ) dan lanjut. Ini adalah langkah “pencocokan”.

Teorema 6.13

Jika dibuat dari CFG dengan metode di atas, maka .

Ini membuktikan bahwa untuk setiap CFG, ada PDA (by empty stack) yang ekuivalen.

Summary

Setiap Context-Free Grammar (CFG) dapat diubah menjadi Pushdown Automata (PDA) yang ekuivalen yang menerima bahasa yang sama melalui empty stack. PDA () ini bekerja dengan hanya satu state dan secara langsung mensimulasikan leftmost derivation dari grammar. PDA menggunakan transisi untuk mengganti Variabel di top stack dengan isi aturannya (seperti langkah derivasi), dan menggunakan transisi input untuk mencocokkan dan menghapus Terminal di top stack dengan simbol input (langkah pencocokan). String diterima jika seluruh input habis dibaca dan stack menjadi kosong, yang membuktikan bahwa string tersebut dapat diderivasi dari start symbol .