390 likes | 672 Views
Pertemuan 1 2 Bentuk Normal untuk Grammar Bebas Konteks. Teori Bahasa dan Otomata (KOM 208) SKS: 3(3-0). TIK dan Waktu Penyajian. Tinjauan Instruksional Khusus : Mahasiswa akan dapat menjelaskan bentuk normal untuk tata bahasa bebas konteks . Waktu penyajian : 1 x 150 menit.
E N D
Pertemuan 12Bentuk Normal untuk Grammar Bebas Konteks Teori Bahasa dan Otomata (KOM208) SKS: 3(3-0)
TIK dan Waktu Penyajian • Tinjauan Instruksional Khusus: • Mahasiswa akan dapat menjelaskan bentuk normal untuk tata bahasa bebas konteks. • Waktu penyajian: 1 x 150 menit
Bentuk normal Chomsky • Setiap CFL (tanpa ε) di-generate oleh sebuah CFG dengan semua produksinya dapat ditunjukkan memiliki bentuk A BC atau A a, dimana A, B, C adalah variabel dan a adalah terminal. • Bentuk ini dinamakan bentuk normal Chomsky. • Hal ini dapat ditunjukkan dengan terlebih dahulu membuat penyederhanaan berikut: • Mengeliminasi useless symbols, variabel-variabel atau terminal-terminal yang tidak muncul dalam penurunan string terminal dari startsymbol. • Mengeliminasi ε-productions, yang berbentuk A ε untuk variabel A. • Mengeliminasi unit production, yang memiliki bentuk AB untuk variabel A dan B.
MengeliminasiUselessSymbol • SimbolXdikatakanusefuluntukgrammar G = (V,T,P,S) jikaterdapatpenurunandenganbentuk S*X*w, dimanawadalahdalamT*. • XdapatberadadalamVatauT, danbentuksentensialXdapatberadapadaawalatauakhirpenurunan. • Jika X not useful maka dikatakan useless. • Penghilangan useless symbol dari grammar tidak akan merubah bahasa yang di-generate.
MengeliminasiUselessSymbol • Identifikasi sebuah simbol dapat menjadi useful: • X dikatakan generating jika X *w untuk string terminal w. Perhatikan bahwa setiap terminal adalah generating, karena w dapat menjadi terminal, yang diturunkan oleh nol langkah. • X dikatakan reachable jika terdapat penurunan S * X, untuk dan • Sebuah symbol yang useful adalah generating dan reachable.
Contoh 1 • Perhatikan grammar S AB | a A b • Semua simbol kecuali B adalah generating; a dan b me-generate dirinya sendiri; S men-generate a, dan A men-generate b. Jika B dieliminasi, maka produksi S AB harus dieliminasi. Sehingga grammar menjadi: S a A b
Contoh 1 (lanjutan) • Hanya S dan a yang reachable dari S. • Dengan mengeliminasi A dan b, produksi yang tertinggal: S a. • Produksi tersebut dengan sendirinya merupakan grammar yang memiliki bahasa {a}. • Perhatikan bahwa jika eliminasi dimulai dengan uji reachability, ditentukan bahwa grammar S AB | a A b adalah reachable. • Jika kemudian simbol B dieliminasi karena alasan non-generating, grammar yang diperoleh masih memiliki uselesssymbol, A dan b.
Teorema • Misal G = (V,T,P,S) adalah CFG, dan asumsikan bahwa L(G) ; yaitu G memiliki sedikitnya satu string. Misal G1 = (V1,T1,P1,S) adalah grammar yang diperoleh dengan langkah berikut: • Pertama mengeliminasi nongeneratingsymbol dan semua produksi yang melibatkan satu atau lebih simbol-simbol tersebut. Misalkan G2=(V2,T,P2,S) adalah grammar baru yang dihasilkan. • Perhatikan bahwa S haruslah generating, karena kita asumsikan bahwa L(G) memliki sedikitnya satu string, sedemikian sehingga S tidak dieliminasi. • Kedua, eliminasi semua simbol yang tidak reachable dalam grammar G2. Maka G1 tidak memiliki uselesssymbol dan L(G1) = L(G).
Komputasi Generating Symbol • Misalkan G = (V,T,P,S) adalah grammar. Komputasi dari generatingsymbol dari G dilakukan induksi berikut: • Basis: setiap simbol dari T adalah generating; simbol tersebut men-generate dirinya sendiri. • Induksi: Anggap terdapat produksi A , dan setiap simbol telah diketahui merupakan simbol generating. Maka A adalah generating. Perhatikan bahwa aturan ini termasuk kasus dimana = ε, semua variabel yang memiliki ε sebagai badannya adalah generating.
Contoh 2 • Perhatikan grammar S AB | a A b • Dari basis diperoleh bahwa a dan b adalah generating. Dari induksi, digunakan A b untuk menyimpulkan bahwa A adalah generating, dan produksi S a untuk menyimpulkan bahwa S adalah generating. Produksi S AB tidak dapat digunakan, karena B tidak ditetapkan merupakan simbol generating. Dengan demikian, himpunan dari generatingsymbol adalah {a,b,A,S}.
Komputasi Reachable Symbol • Misalkan G = (V,T,P,S) adalah grammar. Komputasi dari reachablesymbol dari G dilakukan induksi berikut • Basis: S adalah reachable • Induksi: Anggap bahwa kita telah menemukan bahwa variabel A adalah reachable. Maka untuk semua produksi dengan A sebagai head-nya, semua simbol dari body produksi tersebut juga reachable.
Contoh 3 • Perhatikan grammar S AB | a A b • Dari basis, diperoleh bahwa S adalah reachable. Karena S memiliki badan produksi AB dan a, maka A, B, dan a adalah reachable. B tidak memiliki produksi, tetapi A memiliki A b. Dengan demikian b adalah reachable. Sehingga himpunan reachablesymbol adalah {S,A,B,a,b}.
Mengeliminasi ε-production • Sebuah variabel A adalah nullable jika A *ε. • Jika A adalah nullable, maka jika A muncul dalam body dari produksi, katakanlah B CAD, A dapat (atau tidak dapat) menurunkan ε. • Terdapat 2 versi produksi, yaitu tanpa A dalam body (B CD), yang terkait dengan kasus dimana A telah digunakan untuk menurunkan ε, dan produksi yang lain, yaitu B CAD (A tetap ada).
Mengeliminasi ε-production • Misalkan G = (V,T,P,S) adalah CGF. • Kita dapat menemukan semua simbol nullable dari G dengan induksi berikut. • Dapat ditunjukkan tidak ada simbol nullable kecuali yang ditemukan oleh induksi tersebut. • Basis: Jika A ε adalah produksi dari G, maka A adalah nullable. • Induksi: Jika terdapat produksi B C1C2…CK dimana Ci adalah nullable, maka B adalah nullable. • Perhatikan bahwa setiap Ci haruslah menjadi sebuah variabel yang menjadi nullable, sehingga kita hanya perlu memperhatikan produksi dengan body semua variabel.
Konstruksi Grammar tanpa ε-production • Misalkan G = (V,T,P,S) adalah CFG. • Tentukan semua nullablesymbol dari G. • Grammar baru G1 = (V,T,P1,S), yang memiliki produksi P1 ditentukan sebagai berikut: • untuk setiap produksi A X1X2…Xk dari P, dimana k 1, anggap bahwa m dari k para Xi adalah nullablesymbol. • Grammar baru G1 akan memiliki 2m versi dari produksi, dimana nullable para Xi, dalam semua kombinasi adalah present atau absent. • Terdapat satu pengecualian: jika m = k, yaitu semua simbol adalah nullable, maka kita tidak memasukkan kasus dimana semua para Xi adalah absent. • Perhatikan juga bahwa jika sebuah produksi dari bentuk A ε dalam P, kita tidak mengikutkan produksi tersebut dalam Pi.
Contoh 4 • Perhatikangrammar SAB AaAA | ε BaBB | ε • AdanBadalahnullablesymbol, karenamemilikiproduksidengan ε sebagaibadannya. • Selanjutnya, Sadalahnullable, karenaproduksiSABmemilikibodyyanghanyaterdiridarinullablesymbol. • Dengandemikianketigavariabeltsbadalahnullable.
Contoh 4 (lanjutan) • KonstruksigrammarG1 dilakukansebagaiberikut • PerhatikanproduksiSAB, semuasimboldaribodyadalahnullable, sehinggaterdapat 4 carayangdapatdipilihberdasarkanpresentatauabsentuntukAdanB. • Tetapi pemilihan dimana keduanya absent tidak digunakan, sehingga terdapat 3 produksi: S AB | A | B
Contoh 4 (lanjutan) • Perhatikan produksi A aAA. Simbol pada posisi ke dua dan ketiga adalah nullable, sehingga terdapat 4 pilihan untuk absent/present dari simbol-simbol tersebut. Dalam kasus ini, semua pilihan boleh digunakan, karena simbol nonnullable a akan ada dalam setiap kasus. Produksi-produksi yang dihasilkan: A aAA | aA | aA | a. Karena dua produksi ditengah sama, produksi-produksi yang dihasilkan menjadi A aAA | aA | a
Contoh 4 (lanjutan) • Cara yang sama dilakukan untuk menghasilkan produksi B : B bBB | bB | b • Dengan demikian produksi-produksi dalam G1: S AB | A | B A aAA | aA | a B bBB | bB | b
Teorema • Jika grammar G1 dikonstruksi dari G dengan konstruksi untuk mengeliminasi ε-production, maka L(G1) = L(G) – {ε}
Mengeliminasi Unit Production • Sebuah unitproduction adalah produksi dengan bentuk A B, dimana A dan B adalah variabel. Produksi-produksi ini dapat useful. • Sebagai contoh, dalam pembahasan sebelumnya, unitproduction E T dan T F digunakan untuk membuat grammar tidak ambigu untuk ekspresi aritmatika sederhana. • Produksi-produksi untuk memperoleh ekspresi tersebut adalah I a | b | Ia | Ib | I0 |I1 F I | (E) T F | T * F E T | E + T
Mengeliminasi Unit Production • Unitproduction dapat memperumit pembuktian dan memperbanyak langkah penurunan. • Unitproduction dapat dihilangkan, sehingga diperoleh produksi E a | b | Ia | Ib | I0 |I1 | (E) | T * F • Cara yang dilakukan adalah memperluas unitproduction sampai mereka tidak muncul lagi. • Langkah ini dapat gagal jika terdapat cycle dari unitproduction, misalnya: A B, B C dan C A.
Teknik mengeliminasi Unit Production • Pertama melibatkan penemuan semua pasangan dari variabel A dan B sedemikian sehingga A *B menggunakan serangkaian unitproduction saja. • Perhatikan bahwa A *B mungkin benar walaupun tidak ada unitproduction yang terlibat. • Contoh misal ada produksi A BC dan C ε. • Setelah setiap pasangan demikian dapat ditemukan, kita dapat mengganti rangkaian langkah-langkah penurunan A B1B2...… Bn dengan sebuah produksi yang menggunakan nonunitproduction Bnsecara langsung dari A; bahwa A .
Teknik mengeliminasi Unit Production • Pasangan (A,B) sedemikiansehinggaA* Bmenggunakanhanyaunitproduction, dinamakanunitpair. Definisiunitpairadalah • Basis: (A,A) adalahunitpairuntukvariabelA. BahwaA* Adengannollangkah. • Induksi: Anggaptelahditentukanbahwa (A,B) adalahunitpair, danBCadalahproduksi, dimanaCadalahvariabel, maka (A, C) adalahunitpair.
Contoh 5 • Perhatikan grammar untuk ekspresi sederhana berikut: I a | b | Ia | Ib | I0 |I1 F I | (E) T F | T * F E T | E + T • Dari basis diperoleh unitpair (E,E), (T,T), (F,F) dan (I,I). Untuk langkah induktif, kita dapat membuat inferensi berikut: • Dari (E,E) dan produksi E T diperoleh unitpair (E,T). • Dari (E,T) dan produksi T F diperoleh unitpair (E,F). • Dari (E,F) dan produksi F I diperoleh unitpair (E,I). • Dari (T,T) dan produksi T F diperoleh unitpair (T,F). • Dari (T,F) dan produksi F I diperoleh unitpair (T,I). • Dari (F,F) dan produksi F I diperoleh unitpair (F,I).
Langkah-langkah eliminasi unit production • Diberikan CFG G = (V,T,P,S), konstruksi CFG G1 = (V,T,P1,S) dilakukan melalui langkah berikut: • Temukan semua unitpair dari G • Untuk setiap unitpair (A,B), tambahkan ke P1 semua produksi A , dimana B adalah non unitproduction dalam P. Mungkin saja A = B (P1 mengadung semua nonunitproduction dalam P). -- Hapus semua unit production
Contoh 6 • Tabel berikut merupakan hasil dari langkah 2 dalam konstruksi CFG G1 dari grammar dalam Contoh 5:
Contoh 6 (lanjutan) • Grammar yang dihasilkan adalah E E + T | T * F | (E) | a | b | Ia | Ib | I0| I1 T T * F | (E) | a | b | Ia | Ib | I0| I1 F (E) | a | b | Ia | Ib | I0| I1 I a | b | Ia | Ib | I0| I1 • Grammar ini tidak memiliki unitproduction dan ekspresi yang di-generate sama dengan yg di-generate oleh grammar sebelumnya (menggandung unitproduction).
Teorema • Jika grammar G1 dikonstruksi dari grammar G dengan algoritme untuk mengeliminasi unitproduction, maka L(G1) = L(G). • Jika G adalah CFG yang me-generate bahasa yang mengandung sedikitnya satu string selain ε, maka terdapat CFG G1 yang lain sedemikian sehingga L(G1) = L(G) – {ε}, dan G1 tidak memiliki ε-production, unitproduction atau uselesssymbol.
Bentuk Normal Chomsky • Setiap CFL tak kosong tanpa ε memiliki sebuah grammar G dimana semua produksinya adalah salah satu dari dua bentuk sederhana berikut: A BC, dimana A, B, dan C adalah variabel A a, dimana A adalah variabel dan a adalah terminal. • G tidak memiliki uselesssymbol. • Grammar demikian dinamakan ada dalam bentuk Chomsky Normal Form (CNF).
Mengkonversi grammar ke dalam bentuk CNF • Mulai dengan pernyataan bahwa grammar yang akan dibentuk tidak memiliki ε-production, unitproduction atau uselesssymbol (Teorema 2). • Setiap produksi dalam grammar demikian memiliki bentuk A a (diperbolehkan oleh CNF), atau memiliki body dengan panjang 2 atau lebih.
Langkah mendapat grammar dalam bentuk CNF • Susun semua body dari produksi dengan panjang 2 atau lebih yang hanya berisi variabel-variabel. • Pisahkan body-body produksi yang memiliki panjang lebih dari 3 atau lebih ke dalam produksi-produksi secara bertingkat, masing-masing dengan sebuah body yang terdiri dari 2 variabel.
Langkah mendapat grammar dalam bentuk CNF • Dalam langkah 1: • untuk setiap terminal a yang muncul dalam body dengan panjang 2 atau lebih, buat variabel baru, katakanlah A. • Variabel ini hanya memiliki satu produksi, A a. • Gunakan A menggantikan a dimanapun a muncul dalam body dengan panjang 2 atau lebih. • Sampai langkah ini, setiap produksi memiliki body berupa sebuah single terminal atau sedikitnya dua variabel dan bukan terminal. • Dalam langkah 2: • pisahkan produksi A B1B2..Bk, untuk k 3, ke dalam kelompok produksi dengan dua variabel dalan setiap body-nya. • Gunakan n-2 variabel baru, C1,C2,…Ck-1. • Produksi asal digantikan oleh k-1 produksi • A B1C1, C1 B2C2,…, Ck-3 Bk-2Ck-2, Ck-2 Bk-1Bk
Contoh 7 • Konversikan grammar E E + T | T * F | (E) | a | b | Ia | Ib | I0| I1 T T * F | (E) | a | b | Ia | Ib | I0| I1 F (E) | a | b | Ia | Ib | I0| I1 I a | b | Ia | Ib | I0| I1 ke dalam CNF.
Contoh 7- Langkah 1 • Terdapat 8 terminal: a,b,0,1, +, *, (, dan ), masing-masing muncul dalam body yang bukan single terminal. Selanjutnya gunakan 8 variabel baru dan produksi: A a B b Z 0 O 1 P + M * L ( R ) • Ganti semua terminal dalam body selain single terminal dengan variabel yang sesuai. Sehingga diperoleh grammar: E EPT | TMF | LER | a | b | IA | IB | IZ | IO T TMF | LER | a | b | IA | IB | IZ | IO F LER | a | b | IA | IB | IZ | IO I a | b | IA | IB | IZ | IO A a B b Z 0 O 1 P + M * L ( R ) • Semua produksi dalam bentuk CNF kecuali yang memiliki body dengan panjang 3, yaitu EPT, TMF, dan LER.
Contoh 7- Langkah 2 • Beberapa variabel baru diperkenalkan dan pergantian produksi dilakukan sebagai berikut: • Untuk EPT, digunakan variabel baru C1, dan ganti produksi E EPT dengan E E C1 dan C1 PT. • Untuk TMF, digunakan variabel baru C2, dan ganti produksi E TMF dan T TMF dengan E T C2, T T C2 dan C2 MF. • Untuk LER, digunakan variabel baru C3, dan ganti produksi E LER, T LER dan F LER dengan E LC3, T LC3, F LC3 dan C3 ER.
Contoh 7- Langkah 2 • Dengan demikian, final grammar dalam CNF E EC1 | TC2 | LC3 | a | b | IA | IB | IZ | IO T TC2 | LC3 | a | b | IA | IB | IZ | IO F LC3 | a | b | IA | IB | IZ | IO I a | b | IA | IB | IZ | IO A a B b Z 0 O 1 P + M * L ( R ) C1 PT C2 MF C3 ER
Teorema • Jika G adalah CFG yang memiliki bahasa yang mengandung sedikitnya satu string selain ε, maka terdapat grammar G1 dalam CNF, sedemikian sehingga L(G1) = L(G) – {ε}.
Daftar Pustaka • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.