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

  1. State: Cukup gunakan 1 State saja (misal ). Mesin ini tidak butuh pindah-pindah state, hanya fokus manipulasi stack.

  2. Stack Symbol (): Gabungan dari Variabel () dan Terminal () milik CFG.

  3. Start Symbol Stack: Sama dengan Start Symbol Grammar ().

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

  1. (Expand )

  2. (Match input 0 dengan top stack 0)

  3. (Expand . hilang, sisa )

  4. (Match input 1 dengan top stack 1. 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):

    1. (Mid: , End: )

    2. (Mid: , End: )

    3. (Mid: , End: )

    4. (Mid: , End: )

Summary

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 .