Back to IF2224 Teori Bahasa Formal dan Otomata

Topic: Konversi ke Chomsky Normal Form (CNF)

Questions/Cues

  • Definisi Formal CNF

  • Mengapa bentuk lain salah?

  • Prasyarat Konversi

  • Algoritma Utama

  • Step 1: Pisahkan Terminal

  • Variabel baru ()

  • Step 2: Pecah Body Panjang

  • Teknik Cascading

  • Jumlah variabel baru

  • Studi Kasus Lengkap

  • Contoh Ekspresi Matematika

Reference Points

  • Slide-15_2025_CNF.pdf (Hal 10-14) - Sumber Contoh Lengkap

  • Bab 7 Sifat2 CFG.pdf (Hal 13-14)

1. Definisi Ketat Chomsky Normal Form

Sebuah CFG dikatakan dalam bentuk CNF jika dan hanya jika setiap aturan produksinya memenuhi salah satu dari dua pola ini:

  1. Variabel Dua Variabel:

    (Syarat: B dan C adalah variabel, bukan terminal)

  2. Variabel Satu Terminal:

    (Syarat: a adalah terminal)

Bentuk yang DILARANG di CNF:

  • (Campuran terminal & variabel di body )

  • (Lebih dari 2 variabel)

  • (Kecuali pada Start Symbol, jika bahasa memuat )

  • (Unit production)

2. Algoritma Konversi (Setelah Penyederhanaan)

Asumsikan grammar sudah “bersih” (bebas , unit, useless). Kita tinggal memperbaiki bentuk body produksinya.

Langkah 1: Isolasi Terminal (Terminal Separation)

Masalah: Ada aturan di mana terminal “bercampur” dengan variabel dalam body yang panjangnya . Contoh: .

Solusi:

  1. Untuk setiap terminal yang muncul di body campuran, buat variabel baru (misal atau ).

  2. Tambahkan aturan: .

  3. Ganti semua kemunculan di body campuran dengan .

Contoh:

Awal:

Revisi:

  • Buat dan .

  • Ubah menjadi .

Langkah 2: Pecah Body Panjang (Cascading)

Masalah: Ada aturan dengan variabel di body. Contoh: .

Solusi:

Pecah menjadi rantai aturan biner menggunakan variabel perantara (new variables).

Pola:

Ubah menjadi:

Contoh ():

  1. Ambil 2 simbol pertama/terakhir. Misal kita sisakan di depan.

  2. Sisa body adalah . Karena panjangnya sudah 2, jadikan aturan untuk .

  3. .

    Hasil Akhir: (Semuanya bentuk CNF).

3. Studi Kasus Lengkap (Walkthrough)

Mari kita gunakan contoh kompleks dari Slide-15_2025_CNF.pdf (Hal 12-14): Grammar Ekspresi Matematika.

Grammar Awal (Setelah Simplify):

Tahap 1: Pisahkan Terminal

Terminal yang bercampur: , , , .

Buat variabel baru untuk mereka:

  • (Plus)

  • (Multiply)

  • (Left paren)

  • (Right paren)

Substitusi ke grammar:

(Perhatikan: dibiarkan karena sudah CNF)

Tahap 2: Pecah Body Panjang

Kita punya body panjang 3 variabel: , , .

  1. Pecah :

  2. Pecah (dan ):

  3. Pecah (dan lainnya):

Hasil Akhir Grammar CNF:

Summary

Konversi ke Chomsky Normal Form (CNF) berfokus pada restrukturisasi sintaksis grammar agar sesuai dengan format biner ketat ( atau ). Proses ini dilakukan setelah tahap penyederhanaan dan terdiri dari dua langkah sistematis: (1) Isolasi Terminal, di mana terminal yang berada dalam body majemuk diganti dengan variabel baru khusus, dan (2) Pemecahan Body (Cascading), di mana produksi dengan 3 variabel atau lebih dipecah menjadi rantai produksi biner menggunakan variabel-variabel perantara baru. Hasil akhirnya adalah grammar yang secara struktural lebih besar (lebih banyak variabel) namun sangat teratur dan mudah diproses oleh mesin.