Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks

Slides:



Advertisements
Presentasi serupa
Pertemuan 4 Finite Automata
Advertisements

Teori Bahasa dan Automata
Pertemuan 14 Pengantar ke Mesin Turing
BENTUK NORMAL CHOMKY.
BENTUK NORMAL CHOMSKY Teori Bahasa dan Otomata
11. BENTUK NORMAL CHOMSKY.
Teori Bahasa dan Automata
Pertemuan 6 Ekspresi dan Bahasa Regular
Session 10 Context-free grammar
Bentuk Normal Greibach
Normal Chomsky Pertemuan 8
Pertemuan 9 Sifat-sifat Bahasa Regular
Pengantar Teknik Kompilasi
Penyederhanaan Bahasa Bebas Context
Pertemuan 3 Konversi NFA - DFA dan Konversi ε-NFA - DFA
Session 11 Parse Tree, Application of Parse Tree, and Ambiguity
Session 12 Pushdown Automata
Pertemuan 2 Konsep dalam Teori Otomata dan Pembuktian Formal
KONSEP DASAR TEORI BAHASA DAN OTOMATA
Teori Bahasa dan Otomata 2 sks
Session 5 Finite Automata
14. PUSH DOWN AUTOMATA.
Teori Bahasa & OTOMATA.
TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)
Pertemuan 3 Finite Automata
Teori Bahasa dan Otomata 2 sks
TEORI BAHASA DAN OTOMATA
Session 7 Regular Expression and Language
Pohon penurunan dan Penyederhanaan Tata Bahasa Bebas Konteks
PENYEDERHANAAN TATA BAHASA BEBAS KONTEKS
10. PENYEDERHANAAN TATA BAHASA
Pertemuan 3 BAHASA REGULAR
7. ATURAN PRODUKSI.
Pertemuan 12 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
14. PUSH-DOWN AUTOMATA.
BAB X BENTUK NORMAL CHOMSKY.
TEORI BAHASA & AUTOMATA
Pertemuan 8 CONTEXT FREE GRAMMAR (CFG)
1 Pertemuan 11 CONTEXT FREE GRAMMAR (CFG) Lanjutan.. Matakuliah: T0162/Teori Bahasa dan Automata Tahun: 2005 Versi: 1/0.
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
BENTUK NORMAL CHOMSKY Teori Bahasa dan Otomata CHAPTER 6
KONSEP GRAMMAR & HIRARKI CHOMSKY
Teori-Bahasa-dan-Otomata
Teori-Bahasa-dan-Otomata
TEORI BAHASA DAN AUTOMATA TATA BAHASA LEVEL BAHASA
Bentuk Normal Chomsky (CNF)
TEORI BAHASA DAN OTOMATA
PENYEDERHANAAN TATA BAHASA BEBAS KONTEKS
TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)
Bahasa Type 2 (CONTEXT FREE GRAMMAR)
Pertemuan 1 Teori Bahasa dan Automata
Bentuk Normal Chomsky, Penghilangan Rekursif kiri dan Normal Greibach
Bentuk Normal Chomsky *YANI*.
GRAMMER ATAU TATA BAHASA
PENYEDERHANAAN TATA BAHASA BEBAS KONTEKS.
PENGHILANGAN REKURSIF KIRI
Bahasa Context Free.
Teori-Bahasa-dan-Otomata
TATA BAHASA BEBAS KONTEKS
TEORI BAHASA & OPERASI MATEMATIS (1)
Penyederhanaan Tata Bahasa Bebas Konteks
Penyederhanaan Tata Bahasa Bebas Konteks
Pengantar Teknik Kompilasi
Pertemuan 10 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Analisis Sintaksis By: Kustanto, S.T., M.Eng.
Grammar dan Bahasa Automata
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
OTOMATA DAN TEORI BAHASA.
Transcript presentasi:

Pertemuan 12 Bentuk 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 start symbol. Mengeliminasi ε-productions, yang berbentuk A  ε untuk variabel A. Mengeliminasi unit production, yang memiliki bentuk AB untuk variabel A dan B.

Mengeliminasi Useless Symbol Simbol X dikatakan useful untuk grammar G = (V,T,P,S) jika terdapat penurunan dengan bentuk S * X * w, dimana w adalah dalam T*. X dapat berada dalam V atau T, dan bentuk sentensial X dapat berada pada awal atau akhir penurunan. Jika X not useful maka dikatakan useless. Penghilangan useless symbol dari grammar tidak akan merubah bahasa yang di-generate.

Mengeliminasi Useless Symbol 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

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 useless symbol, 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 nongenerating symbol 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 useless symbol dan L(G1) = L(G).

Komputasi Generating Symbol Misalkan G = (V,T,P,S) adalah grammar. Komputasi dari generating symbol 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 generating symbol adalah {a,b,A,S}.

Komputasi Reachable Symbol Misalkan G = (V,T,P,S) adalah grammar. Komputasi dari reachable symbol 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 reachable symbol 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 nullable symbol 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 nullable symbol. 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 Perhatikan grammar S  AB A  aAA | ε B  aBB | ε A dan B adalah nullable symbol, karena memiliki produksi dengan ε sebagai badannya. Selanjutnya, S adalah nullable, karena produksi S  AB memiliki body yang hanya terdiri dari nullable symbol. Dengan demikian ketiga variabel tsb adalah nullable.

Contoh 4 (lanjutan) Konstruksi grammar G1 dilakukan sebagai berikut Perhatikan produksi S  AB, semua simbol dari body adalah nullable, sehingga terdapat 4 cara yang dapat dipilih berdasarkan present atau absent untuk A dan B. 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) Dengan demikian produksi-produksi dalam G1: 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 unit production adalah produksi dengan bentuk A  B, dimana A dan B adalah variabel. Produksi-produksi ini dapat useful. Sebagai contoh, dalam pembahasan sebelumnya, unit production 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 Unit production dapat memperumit pembuktian dan memperbanyak langkah penurunan. Unit production dapat dihilangkan, sehingga diperoleh produksi E  a | b | Ia | Ib | I0 |I1 | (E) | T * F Cara yang dilakukan adalah memperluas unit production sampai mereka tidak muncul lagi. Langkah ini dapat gagal jika terdapat cycle dari unit production, 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 unit production saja. Perhatikan bahwa A * B mungkin benar walaupun tidak ada unit production yang terlibat. Contoh misal ada produksi A  BC dan C  ε. Setelah setiap pasangan demikian dapat ditemukan, kita dapat mengganti rangkaian langkah-langkah penurunan A  B1 B2...… Bn   dengan sebuah produksi yang menggunakan nonunit production Bn  secara langsung dari A; bahwa A  .

Teknik mengeliminasi Unit Production Pasangan (A,B) sedemikian sehingga A* B menggunakan hanya unit production, dinamakan unit pair. Definisi unit pair adalah Basis: (A,A) adalah unit pair untuk variabel A. Bahwa A * A dengan nol langkah. Induksi: Anggap telah ditentukan bahwa (A,B) adalah unit pair, dan B  C adalah produksi, dimana C adalah variabel, maka (A, C) adalah unit pair.

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 unit pair (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 unit pair (E,T). Dari (E,T) dan produksi T  F diperoleh unit pair (E,F). Dari (E,F) dan produksi F  I diperoleh unit pair (E,I). Dari (T,T) dan produksi T  F diperoleh unit pair (T,F). Dari (T,F) dan produksi F  I diperoleh unit pair (T,I). Dari (F,F) dan produksi F  I diperoleh unit pair (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 unit pair dari G Untuk setiap unit pair (A,B), tambahkan ke P1 semua produksi A  , dimana B   adalah non unit production dalam P. Mungkin saja A = B (P1 mengadung semua non unit production dalam P). -- Hapus semua unit production

Contoh 6 Pair Produksi (E,E) E  E + T (E,T) E  T * F (E,F) E  (E) (E,I) E  a | b | Ia | Ib | I0| I1 (T,T) T  T * F (T,F) T  (E) (T, I) T  a | b | Ia | Ib | I0| I1 (F,F) F  (E) (F,I) F  a | b | Ia | Ib | I0| I1 (I,I) I  a | b | Ia | Ib | I0| I1 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 unit production dan ekspresi yang di-generate sama dengan yg di-generate oleh grammar sebelumnya (menggandung unit production).

Teorema Jika grammar G1 dikonstruksi dari grammar G dengan algoritme untuk mengeliminasi unit production, 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, unit production atau useless symbol.

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 useless symbol. 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, unit production atau useless symbol (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 ke dalam CNF. 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.