Back to IF2224 Teori Bahasa Formal dan Otomata
Topic: Sifat Ketertutupan (Closure Properties) CFL
Questions/Cues
Definisi Closure
Daftar Operasi “Closed”
Bukti Union/Concat/Star
Apa itu Substitusi?
Homomorfisma (vs Inverse)
Daftar Operasi “Not Closed”
Bukti Intersection Gagal
Bukti Complement Gagal
CFL Regular?
Reference Points
Slide-15_2025_CNF.pdf (Hal 16-27) - Sumber Utama
Bab 7 Sifat2 CFG.pdf (Hal 18-40) - Detail Pembuktian
1. Konsep Dasar Ketertutupan
Sebuah kelas bahasa dikatakan tertutup (closed) terhadap suatu operasi jika:
“Mengambil anggota dari kelas tersebut, lalu melakukan operasi padanya, hasilnya DIJAMIN tetap anggota kelas tersebut.”
Analogi: Himpunan bilangan bulat tertutup terhadap penjumlahan (, masih bulat), tapi TIDAK tertutup terhadap pembagian (, bukan bulat).
2. Operasi yang TERTUTUP (Closed) untuk CFL
Jika dan adalah CFL, maka hasil operasi berikut PASTI CFL:
A. Operasi Standar (Union, Concatenation, Kleene Star)
Pembuktiannya sangat mudah menggunakan konstruksi Grammar:
Union (): Buat start symbol baru .
Concatenation (): Buat start symbol baru .
Kleene Star (): Buat start symbol baru .
Reversal (): Balik urutan body di setiap produksi ( menjadi ).
B. Substitusi (Substitution)
Definisi: Mengganti setiap terminal dalam bahasa dengan sebuah bahasa lain .
Teorema: Jika adalah CFL, dan setiap terminal diganti dengan bahasa yang juga CFL, maka hasilnya tetap CFL.
Logika Grammar: Ganti terminal di body produksi dengan Start Symbol dari grammar .
C. Homomorfisma (Homomorphism)
Definisi: Kasus khusus dari substitusi di mana setiap terminal diganti dengan satu string tertentu (bukan bahasa).
- Karena substitusi bersifat tertutup, otomatis homomorfisma juga tertutup.
D. Inverse Homomorphism ()
Definisi: Mencari semua string sedemikian sehingga jika diterjemahkan oleh , hasilnya ada di .
Bukti: Menggunakan konstruksi PDA dengan “Buffer State” yang membaca input, menerjemahkannya, lalu mensimulasikan PDA asli.
3. Operasi yang TIDAK TERTUTUP (Not Closed)
Ini adalah kelemahan CFL dibanding Bahasa Reguler (Regular Languages).
A. Intersection (Irisan) -
CFL CFL CFL.
Bukti dengan Counter-Example:
Kita tahu bahasa BUKAN CFL (bisa dibuktikan dengan Pumping Lemma). Namun, bahasa ini bisa dibentuk dari irisan dua CFL sederhana:
(Jumlah a=b, c bebas). Ini CFL.
(a bebas, jumlah b=c). Ini CFL.
.
Karena hasil irisannya bukan CFL, maka CFL tidak tertutup terhadap irisan.
B. Complement (Komplemen) -
Bukti dengan Kontradiksi:
Hukum De Morgan mengatakan:
Kita tahu:
CFL tertutup terhadap Union ().
Jika CFL tertutup terhadap Complement, maka dan adalah CFL. Hasil union mereka CFL. Dan komplemen dari hasil union itu juga CFL.
Kesimpulan: Jika Complement tertutup, maka Intersection HARUS tertutup.
TAPI, kita baru saja membuktikan Intersection TIDAK tertutup.
Maka asumsi awal salah. Complement TIDAK tertutup.
C. Set Difference ()
Tidak tertutup karena sama dengan . Karena melibatkan komplemen dan irisan, operasi ini juga gagal.
4. Pengecualian Spesial: Intersection dengan Regular
Walaupun CFL CFL belum tentu CFL, tetapi:
CFL Regular Language = PASTI CFL.
Logika: Kita bisa menggabungkan PDA (untuk CFL) dengan Finite Automata (untuk Regular) menjadi PDA baru. State PDA baru adalah pasangan .
Sifat ini sangat berguna untuk membuktikan suatu bahasa BUKAN CFL dengan cara mengirisnya dengan Regular Language agar bentuknya jadi sederhana (seperti ).
Context-Free Languages (CFL) memiliki sifat ketertutupan yang lebih lemah daripada Bahasa Reguler. CFL TERTUTUP terhadap operasi generatif seperti Union, Concatenation, Kleene Star, Reversal, Substitusi, Homomorfisma, dan Inverse Homomorfisma. Namun, CFL TIDAK TERTUTUP terhadap operasi pembatas seperti Intersection (Irisan) dan Complement (Komplemen). Contoh klasiknya adalah irisan dua CFL dan menghasilkan bahasa yang bukan CFL. Meski begitu, irisan antara CFL dengan Bahasa Reguler dijamin menghasilkan CFL.
Ad Libitum: Pendalaman & Strategi Bukti
1. Mengapa Intersection Gagal? (Intuisi Stack)
Bayangkan PDA. Ia hanya punya satu stack.
Untuk mengenali , PDA menggunakan stack untuk mencocokkan jumlah dan . Bagian diabaikan.
Untuk mengenali , PDA menggunakan stack untuk mencocokkan jumlah dan .
Untuk mengenali irisannya , mesin perlu mencocokkan DAN secara bersamaan.
Masalahnya: Saat selesai mencocokkan dan , stack sudah kosong (atau isinya sudah di-pop). Mesin “lupa” berapa jumlah tadi, sehingga tidak bisa membandingkannya lagi dengan . Kita butuh dua stack untuk ini, yang mana itu adalah kekuatan Turing Machine, bukan PDA.
2. Strategi Membuktikan Bahasa BUKAN CFL
Jika Anda diminta membuktikan bahasa (yang aneh dan rumit) bukan CFL, jangan langsung pakai Pumping Lemma jika susah. Gunakan sifat Closure Intersection dengan Regular Set:
Cari bahasa Regular yang sederhana.
Lakukan .
Jika hasilnya adalah bahasa klasik non-CFL (seperti atau ), maka asli pasti bukan CFL.
Spaced Repetition Questions (Review)
1. Sebutkan 3 operasi yang membuat CFL tetap menjadi CFL (Closed)!
Union, Concatenation, Kleene Star (atau Substitution, Homomorphism, Reversal).
2. Sebutkan 2 operasi yang bisa mengubah CFL menjadi bukan CFL (Not Closed)!
Intersection dan Complement (serta Set Difference).
3. Apakah hasil irisan antara CFL dengan Bahasa Reguler?
Hasilnya PASTI CFL. (CFL Regular = CFL).
4. Mengapa kita bisa menyimpulkan Complement tidak closed jika kita sudah tahu Intersection tidak closed?
Karena Intersection bisa dinyatakan dalam bentuk Union dan Complement (Hukum De Morgan). Karena Union closed, jika Complement closed, maka Intersection terpaksa harus closed juga (padahal tidak).
5. Apa bukti penyangkal (counter-example) untuk Intersection CFL?
Bahasa diiris dengan menghasilkan , yang bukan merupakan Context-Free Language.