1 / 39

Pertemuan 1 2 Bentuk Normal untuk Grammar Bebas Konteks

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.

gray-maddox
Download Presentation

Pertemuan 1 2 Bentuk Normal untuk Grammar Bebas Konteks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  4. MengeliminasiUselessSymbol • SimbolXdikatakanusefuluntukgrammar G = (V,T,P,S) jikaterdapatpenurunandenganbentuk S*X*w, dimanawadalahdalamT*. • XdapatberadadalamVatauT, danbentuksentensialXdapatberadapadaawalatauakhirpenurunan. • Jika X not useful maka dikatakan useless. • Penghilangan useless symbol dari grammar tidak akan merubah bahasa yang di-generate.

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

  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 A  b

  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 uselesssymbol, 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 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).

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

  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 generatingsymbol adalah {a,b,A,S}.

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

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

  16. Contoh 4 • Perhatikangrammar SAB AaAA | ε BaBB | ε • AdanBadalahnullablesymbol, karenamemilikiproduksidengan ε sebagaibadannya. • Selanjutnya, Sadalahnullable, karenaproduksiSABmemilikibodyyanghanyaterdiridarinullablesymbol. • Dengandemikianketigavariabeltsbadalahnullable.

  17. Contoh 4 (lanjutan) • KonstruksigrammarG1 dilakukansebagaiberikut • PerhatikanproduksiSAB, semuasimboldaribodyadalahnullable, sehinggaterdapat 4 carayangdapatdipilihberdasarkanpresentatauabsentuntukAdanB. • 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) • 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 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

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

  23. 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 B1B2...… Bn  dengan sebuah produksi yang menggunakan nonunitproduction Bnsecara langsung dari A; bahwa A .

  24. Teknik mengeliminasi Unit Production • Pasangan (A,B) sedemikiansehinggaA* Bmenggunakanhanyaunitproduction, dinamakanunitpair. Definisiunitpairadalah • Basis: (A,A) adalahunitpairuntukvariabelA. BahwaA* Adengannollangkah. • Induksi: Anggaptelahditentukanbahwa (A,B) adalahunitpair, danBCadalahproduksi, dimanaCadalahvariabel, maka (A, C) adalahunitpair.

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

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

  27. Contoh 6 • 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 unitproduction dan ekspresi yang di-generate sama dengan yg di-generate oleh grammar sebelumnya (menggandung unitproduction).

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

  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 uselesssymbol. • 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, 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.

  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 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. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.

More Related