Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks

Presentasi serupa


Presentasi berjudul: "Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks"— Transcript presentasi:

1 Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks
Teori Bahasa dan Otomata (KOM208) SKS: 3(3-0)

2 TIK dan Waktu Penyajian
Tinjauan Instruksional Khusus: Mahasiswa akan dapat menjelaskan bentuk normal untuk tata bahasa bebas konteks . Waktu penyajian: 1 x 150 menit

3 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.

4 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.

5 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.

6 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

7 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.

8 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).

9 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.

10 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}.

11 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.

12 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}.

13 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).

14 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.

15 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.

16 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.

17 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

18 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

19 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

20 Teorema Jika grammar G1 dikonstruksi dari G dengan konstruksi untuk mengeliminasi ε-production, maka L(G1) = L(G) – {ε}

21 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

22 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.

23 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  .

24 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.

25 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).

26 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

27 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:

28 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).

29 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.

30 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).

31 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.

32 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.

33 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

34 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.

35 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.

36 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.

37 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

38 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) – {ε}.

39 Daftar Pustaka John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.


Download ppt "Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks"

Presentasi serupa


Iklan oleh Google