Back to IF2224 Teori Bahasa Formal dan Otomata
Topic: Decision Properties & CYK Algorithm
Questions/Cues
Decidable vs Undecidable
Masalah Emptiness
Masalah Membership
Masalah Equivalence
Apa itu CYK?
Kompleksitas CYK
Syarat Utama CYK
Struktur Tabel CYK
Langkah Basis
Langkah Induksi
Syarat Diterima
Reference Points
Slide-15_2025_CNF.pdf (Hal 28-42) - Penjelasan CYK Visual
Bab 7 Sifat2 CFG.pdf (Hal 40-58) - Contoh Detail
Slide-13_2025_Properti CFL.pdf (Hal 25)
1. Decision Properties (Apa yang Bisa Dijawab?)
Dalam teori komputasi, kita membedakan masalah menjadi dua kelas:
A. Decidable (Bisa Dipecahkan)
Ada algoritma pasti yang berhenti dalam waktu berhingga untuk menjawab “Ya/Tidak”.
Emptiness (?): Apakah grammar ini “mandul” atau bisa menghasilkan setidaknya satu string?
Algoritma: Gunakan algoritma pencarian Generating Symbols. Jika Start Symbol tidak masuk himpunan generating, maka bahasanya kosong.
Kompleksitas: (sangat cepat).
Membership (?): Apakah string valid menurut tata bahasa ?
Algoritma: CYK Algorithm (Cocke-Younger-Kasami).
Kompleksitas: (Polynomial).
Finiteness: Apakah bahasa ini berhingga atau tak hingga?
Algoritma: Cek graf ketergantungan variabel. Jika ada cycle (perulangan) yang melibatkan simbol generating & reachable, maka bahasanya tak hingga.
B. Undecidable (Mustahil Dipecahkan)
Tidak ada (dan tidak akan pernah ada) algoritma umum yang bisa menjawab ini untuk SEMBARANG CFL.
Equivalence (?): Apakah dua grammar berbeda menghasilkan bahasa yang persis sama? (Ini decidable untuk Regular Language, tapi undecidable untuk CFL).
Subset (?): Apakah bahasa satu merupakan himpunan bagian dari bahasa lain?
Disjointness: Apakah irisan dua bahasa kosong?
Universality: Apakah grammar menghasilkan semua string yang mungkin ()?
2. Algoritma CYK (Cocke-Younger-Kasami)
Ini adalah algoritma parsing standar emas untuk CFG. Algoritma ini menggunakan pendekatan Dynamic Programming (memecah masalah besar menjadi sub-masalah kecil yang disimpan di tabel).
Prasyarat Mutlak: Grammar HARUS sudah dalam bentuk Chomsky Normal Form (CNF) ( atau ).
Struktur Tabel
Tabel berbentuk segitiga (atau matriks persegi yang diisi separuh atas).
Input: String .
Sel : Berisi himpunan variabel yang bisa menurunkan substring dari indeks sampai ().
Target: Cek apakah Start Symbol ada di sel puncak (seluruh string).
Langkah Pengerjaan
Langkah 1: Basis (Baris Terbawah/Diagonal Utama)
Isi sel (substring panjang 1).
Untuk setiap huruf input , cari aturan produksi .
Masukkan ke dalam sel .
Langkah 2: Induksi (Naik ke Atas)
Isi sel untuk substring panjang .
Substring dipecah menjadi dua bagian di titik (split point).
Bagian kiri: (diwakili sel ).
Bagian kanan: (diwakili sel ).
Cari aturan produksi dimana dan .
Lakukan untuk semua kemungkinan titik potong (dari sampai ).
3. Studi Kasus: Simulasi CYK
Grammar (CNF):
Input: ().
Tahap 1: Basis (Panjang 1)
: . Isi .
: . Isi .
: . Isi .
: . Isi .
: . Isi .
Tahap 2: Panjang 2 (Contoh substring “ba”)
Split hanya bisa di tengah: .
Cari kombinasi .
Pasangan: dan .
Cek Grammar:
? Ada! (Simpan A).
Ada aturan ? Ada ! (Simpan S).
Hasil .
Tahap 3: Panjang 3 (Contoh substring “aab”)
Split 1: ().
Split 2: ().
Gabungkan semua hasil temuan variabel.
Tahap Akhir:
Cek sel (seluruh string “baaba”).
Jika himpunan di memuat , maka string DITERIMA.
Decision Properties memetakan batas kemampuan komputasi pada CFL. Masalah dasar seperti Emptiness () dan Membership () bersifat decidable, sedangkan masalah perbandingan antar bahasa seperti Equivalence dan Subset bersifat undecidable. Algoritma CYK adalah metode standar untuk uji membership dengan pendekatan dynamic programming pada grammar bentuk CNF. CYK bekerja secara bottom-up, mengisi tabel dari substring terpendek (panjang 1) hingga terpanjang, dengan kompleksitas waktu kubik yang efisien dibandingkan pencarian brute-force.
Ad Libitum: Analisis Kompleksitas & Tips CYK
Mengapa ?
Mari bedah loop algoritma CYK:
Loop Panjang Substring (): dari 2 sampai . ()
Loop Posisi Awal (): dari 1 sampai . ()
Loop Titik Potong (): dari sampai . ()
Total = .
Ini jauh lebih baik dari parsing top-down naif yang bisa eksponensial () karena backtracking.
Tips Mengerjakan Tabel CYK Manual
Saat ujian, jangan acak mengisi tabel.
Buat pola segitiga terbalik atau tangga.
Isi baris paling bawah dulu (Basis).
Saat mengisi sel (misal baris 2), letakkan jari kiri di baris bawah kolom , dan jari kanan di diagonal kolom .
Gerakkan jari: jari kiri naik, jari kanan turun-kiri. Itu adalah pasangan sel yang harus dikalikan (Cartesian Product).
Undecidability: Mengapa Equivalence Sulit?
Masalah ekuivalensi CFG () terbukti undecidable karena bisa direduksi dari Post Correspondence Problem (PCP). Sederhananya, struktur pohon parse CFG terlalu fleksibel dan kompleks sehingga tidak ada cara sistematis untuk membandingkan dua himpunan string tak hingga yang dihasilkan oleh dua grammar berbeda.
Spaced Repetition Questions (Review)
1. Apa syarat wajib grammar sebelum bisa diproses dengan algoritma CYK?
Grammar harus dikonversi terlebih dahulu ke bentuk Chomsky Normal Form (CNF).
2. Berapa kompleksitas waktu algoritma CYK untuk string dengan panjang $n$?
atau kubik.
3. Sebutkan dua masalah keputusan (decision problem) yang Undecidable untuk CFL!
Equivalence (), Subset (), Disjointness, Universality.
4. Dalam tabel CYK, sel $X_{ij}$ menyimpan informasi apa?
Himpunan variabel (non-terminal) yang dapat menurunkan substring input dari indeks sampai .
5. Bagaimana cara mengecek Emptiness ($L(G) = \emptyset$) pada CFG?
Cek apakah Start Symbol () termasuk dalam himpunan “Generating Symbols” (simbol yang bisa mencapai terminal). Jika tidak, maka bahasanya kosong.