LN Sederhana CFG

8
Penyederhanaan CFG (edisi 1) 1/8 INSTITUT BISNIS dan INFORMATIKAINDONESIA ecture otes Teori Bahasa dan Automata Penyederhanaan Context Free Grammar Thompson Susabda Ngoen Pendahuluan  Context Free Grammar  (CFG) t erdiri atas sejumlah production yang berbentuk A  α dengan α berupa sejumlah simbol terminal dan non-terminal. Selain contex-free grammar  terdapat jenis grammar  lain yang disebut context-sensitiv e grammar (CSG). Perbedaannya dengan CFG adalah pada bentuk production. Bagian head production (simbol di kiri tanda panah) CFG selalu berupa satu simbol non terminal. Bagian head production  CSG boleh terdiri atas sejumlah simbol. Production berikut milik sebuah CFG 1. P  0P0 2. P  1P1 3. P  0 4. P  1 5. P  ε Derivasi yang dapat dibentuk diantaranya P  1P1  10P01  101P101  101101 sentential form 1P1 diturunkan dari sentential form P berdasarkan production 2. sentential form 10P01 diturunkan dari sentential form 1P1 berdasarkan production  1. Production berikut milik sebuah CSG 1. P  0P0 2. 0P  01P1 3. P  0 4. P  1 5. P  ε Derivasi yang dapat dibentuk diantaranya P  0P0  01P10  01110 Production nomor 2, 0P  01P1, menyatakan simbol P boleh diderivasi dengan 1P1 hanya  jika P berada d i dalam konteks te rtentu yaitu di sebelah kiri P terdapat simbol 0. Jadi P tidak free diderivasi menjadi 1P1, maksudnya tidak bisa membentuk derivasi P  1P1  11P11  1111 Sepaham dengan namanya, production pada CFG mempunyai susunan body (simbol- simbol di kanan tanda panah) yang bebas, tidak ada ketentuan tentang jenis dan jumlah simbol pembentuk body  suatu production. Terlalu bebasnya bentuk production  CFG akan merepotkan implementasi. Eliminasi Useless Productio n  Apakah semua production  suatu CFG memang berguna ( usefull ) ? Simbol X pa da grammar  G = (V,T, P, S) disebut berguna jika terdapat derivasi S αXβ w dengan w terdiri atas simbol terminal. Dua persyaratan harus dipenuhi X untuk dianggap berguna: 1. generating , yaitu X w maksudnya X dapat menghasilkan minimum satu buah string 2. reachable, yaitu S αXβ Maksudnya dimulai dari start symbol harus bisa dihasilkan derivasi yang mengandung X

Transcript of LN Sederhana CFG

Page 1: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 1/8

Penyederhanaan CFG (edisi 1) 1/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

ecture NotesTeori Bahasa dan Automata

Penyederhanaan Context Free GrammarThompson Susabda Ngoen

Pendahuluan Context Free Grammar (CFG) terdiri atas sejumlah production yang berbentuk A → α dengan α berupa sejumlah simbol terminal dan non-terminal. Selain contex-free grammar terdapat jenis grammar lain yang disebut context-sensitive grammar (CSG). Perbedaannyadengan CFG adalah pada bentuk production . Bagian head production (simbol di kiri tandapanah) CFG selalu berupa satu simbol non terminal. Bagian head production CSG bolehterdiri atas sejumlah simbol.

Production berikut milik sebuah CFG1. P → 0P02. P → 1P1

3. P → 04. P → 15. P → ε

Derivasi yang dapat dibentuk diantaranyaP ⇒ 1P1 ⇒ 10P01 ⇒ 101P101 ⇒ 101101

sentential form 1P1 diturunkan dari sentential form P berdasarkan production 2.sentential form 10P01 diturunkan dari sentential form 1P1 berdasarkan production 1.

Production berikut milik sebuah CSG1. P → 0P02. 0P → 01P13. P → 04. P → 15. P → ε

Derivasi yang dapat dibentuk diantaranyaP ⇒ 0P0 ⇒ 01P10 ⇒ 01110

Production nomor 2, 0P → 01P1, menyatakan simbol P boleh diderivasi dengan 1P1 hanya jika P berada di dalam konteks tertentu yaitu di sebelah kiri P terdapat simbol 0. Jadi P tidakfree diderivasi menjadi 1P1, maksudnya tidak bisa membentuk derivasi P ⇒ 1P1 ⇒ 11P11⇒ 1111

Sepaham dengan namanya, production pada CFG mempunyai susunan body (simbol-simbol di kanan tanda panah) yang bebas, tidak ada ketentuan tentang jenis dan jumlahsimbol pembentuk body suatu production . Terlalu bebasnya bentuk production CFG akanmerepotkan implementasi.

Eliminasi Useless Production

Apakah semua production suatu CFG memang berguna ( usefull ) ? Simbol X pada grammar G = (V,T, P, S) disebut berguna jika terdapat derivasi S α Xβ w dengan w terdiri atassimbol terminal. Dua persyaratan harus dipenuhi X untuk dianggap berguna:1. generating , yaitu X w

maksudnya X dapat menghasilkan minimum satu buah string 2. reachable , yaitu S α Xβ

Maksudnya dimulai dari start symbol harus bisa dihasilkan derivasi yang mengandung X

Page 2: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 2/8

Penyederhanaan CFG (edisi 1) 2/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

Apakah production berikut usefull ?1. S → aSa2. S → Abd3. S → Bde4. A → Ada5. B → BBB6. B→ a

Uji generating dengan menggunakan production 6 diperoleh B ⇒ a, artinya B generating dengan menggunakan production 3 diperoleh S ⇒ Bde

pada derivasi berikut kita akan menggantikan simbol Bkarena B generating maka S generating

dengan menggunakan production 4 diperoleh A ⇒ Ada ⇒ Adada jika derivasi ini diteruskan maka tidak akan menghasilkan string karena simbol Atidak bisa diganti dengan simbol terminal, A tidak generating ,

Production yang mengandung A dibagian head atau body dibuang, diperoleh1. S → aSa

3. S → Bde5. B → BBB6. B→ a

Uji reachableS ⇒ Bde artinya B reachable dari S

Hasil:1. S aSa2. S Bde3. B BBB4. B a

Apakah production berikut usefull ?1. S → Aa2. S → B3. A → ab4. A → D5. B → b6. B → E7. C → bb8. E → aEa

Uji generating dengan menggunakan production 3 diperoleh A ⇒ ab, artinya A generating dengan menggunakan production 5 diperoleh B ⇒ b, artinya B generatingdengan menggunakan production 7 diperoleh C ⇒ bb, artinya C generating dengan menggunakan production 2 diperoleh S ⇒ B,

karena B generating maka S juga generating tidak tedapat production dengan D sebagai head , D tidak generating dengan menggunakan production 8 diperoleh E ⇒ aEa ⇒ aaEaa

jika derivasi ini diteruskan maka tidak akan menghasilkan string karena simbol Etidak bisa diganti dengan simbol terminal, E tidak generating ,

1. S → Aa2. S → B3. A → ab5. B → b

7. C → bb

Page 3: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 3/8

Penyederhanaan CFG (edisi 1) 3/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

Uji reachable S ⇒ Aa A reachable dari SS ⇒ B B reachable dari STidak terdapat derivasi S ⇒ … ⇒ α Cβ sehingga C tidak reachable dari SDengan demikian production yang usefull adalah1. S Aa2. S B3. A ab4. B b

Eliminasi -Production

Di dalam CFG mungkin terdapat ε-production , production berbentuk A → ε. Production inibermanfaat untuk membentuk empty string atau untuk mengakhiri suatu pengulangan.

Production di bawah ini1. P → 0P0

2. P → 1P13. P → 04. P → 15. P → ε

menggunakan P → ε untuk membentuk empty string (P ⇒ ε) dan mengakhiri pengulanganpada P ⇒ 0P0 ⇒ 00.

Jika sebuah language L mempunyai grammar CFG maka L – { ε} mempunyai CFG yangtidak mengandung ε-production .

Menghilang ε-production pada CFG diawali dengan mendeteksi variabel yang nullable .

Sebuah simbol non terminal atau variabel A disebut nullable jika A ε. Apabila A munculpada body production misalnya B → CAD maka production ini diubah menjadi dua versi,satu dengan A dan yang lain tanpa A.

Hilangkan ε-production di bawah ini1. S → aAb2. A → aAb3. A → ε

Contoh string yang dihasilkan dari production di atas:1) S ⇒ aAb ⇒ ab production 1, 32) S ⇒ aAb ⇒ aaAbb ⇒ aabb production 1, 2, 3

3) S ⇒ aAb ⇒ aaAbb ⇒ aaaAbbb ⇒ aaabbb production 1, 2, 2, 3

Dengan menggunakan production 3 diperoleh A ⇒ ε, artinya A nullable Apakah S nullable ? S ⇒ aAb ⇒ ab, artinya S tidak nullable

Pada production S → aAb terdapat sebuah simbol nullable yaitu A,Bentuk dua production :S → aAbS → ab

Pada production A → aAb terdapat sebuah simbol nullable yaitu A,Bentuk dua production :

A → aAb A → ab

Page 4: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 4/8

Penyederhanaan CFG (edisi 1) 4/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

Hasil:1. S aAb2. S ab3. A aAb4. A ab Contoh string yang dihasilkan dari keempat production tersebut:1) S ⇒ ab production 22) S ⇒ aAb ⇒ aabb production 1, 43) S ⇒ aAb ⇒ aaAbb ⇒ aaabbb production 1, 3, 4

Hilangkan ε-production di bawah ini1. S → ABaC2. A → BC3. B → b | ε 4. C → D | ε 5. D → d

Contoh string yang dihasilkan dari production di atas:1) S ⇒ ABaC ⇒ BCBaC ⇒ CBaC ⇒ BaC ⇒ aC ⇒ a production 1, 2, 3b, 4b, 3b, 4b2) S ⇒ ABaC ⇒ BCBaC ⇒ bCBaC production 1, 2, 3a

⇒ bDBaC ⇒ bdBaC ⇒ bdaC ⇒ bda production 4a, 5, 3b, 4b

Dengan menggunakan production 3 diperoleh B ⇒ ε, artinya B nullable Dengan menggunakan production 4 diperoleh C ⇒ ε, artinya C nullable Dengan menggunakan production 2 diperoleh A ⇒ BC

Karena B dan C nullable maka A juga nullable D dan S tidak nullable

Production S → ABaC mengandung 3 simbol nullable maka akan terbentuk 2 3 production :S → ABaC | BaC | AaC | ABa | aC | Ba | Aa | a

Production A → BC mengandung 2 simbol nullable , akan terbentuk 2 2 production : A → BC | B | CSalah lagi mana? A → ε, tidak digunakan

Hasil:1. S ABaC2. S BaC3. S AaC4. S ABa5. S aC

6. S Ba7. S Aa8. S a9. A BC10. A B

11. A C12. B b13. C D14. D d

Contoh string yang dihasilkan keempat production tersebut:1) S ⇒ a production 82) S ⇒ Aa ⇒ BCa ⇒ bCa ⇒ bDa ⇒ bda production 7, 9, 12, 13, 14

Page 5: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 5/8

Penyederhanaan CFG (edisi 1) 5/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

Eliminasi unit Production

Production berikut menghasilkan expression bahasa pemrograman1. E → T | E + T2. T → F | T * F3. F → I | (E)4. I → a | b

String b * (a + b) diperoleh dari derivasi:E ⇒ T ⇒ T * F ⇒ F * F ⇒ I * F ⇒ b * F ⇒ b * (E) ⇒ b * (E + T)⇒ b * (T + T) ⇒ b * (F + T) ⇒ b * (I + T) ⇒ b * (a + T)⇒ b * (a + F) ⇒ b * (a + I) ⇒ b * (a + b)

Derivasinya cukup panjang dan parse tree -nya cukup panjang.Penyebabnya adalah unit production . Unit production ialah production berbentuk A → B, pada contoh di atas berupaE → T

T → FF → I

Apabila unit production dihilangkan maka derivasi akan lebih singkat dan parse tree akanlebih pendek.

Variabel A membentuk unit pair (A,A).Jika (A,A) adalah unit pair dan A → B adalah production maka terbentuk unit pair (A,B).Jika (A,B) adalah unit pair dan B → C adalah production maka terbentuk unit pair (A,C).Unit pair (X,Y) dan production Y → α membentuk production X → α

(E, E) dan E → T membentuk unit pair (E, T)(E, T) dan T → T * F membentuk production E → T * F

(E, T) dan T → F membentuk unit pair (E, F)(E, F) dan F → (E) membentuk production E → (E)

(E, F) dan F → I membentuk unit pair (E, I)(E, I) dan I → a | b membentuk production E → a | b

(T, T) dan T → F membentuk unit pair (T, F)(T, F) dan F → (E) membentuk production T → (E)

(T, F) dan F → I membentuk unit pair (T, I)(T, I) dan I → a | b membentuk production T → a | b

(F, F) dan F → I membentuk unit pair (F,I)(F, I) dan I → a | b membentuk production F → a | b

Hasil:1. E E + T | T * F | ( E ) | a | b2. T T * F | ( E ) | a | b3. F ( E ) | a | b4. I a | b

String b * (a + b) diperoleh dari derivasi:E ⇒ T * F ⇒ b * F ⇒ b * (E) ⇒ b * (E + T)⇒ b * (a + T) ⇒ b * (a + b)

Page 6: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 6/8

Penyederhanaan CFG (edisi 1) 6/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

Hilangkan unit production di bawah ini1. S → Aa | B2. A → a | bc | B3. B → A | bbContoh string yang dihasilkan:1) S ⇒ Aa ⇒ Ba ⇒ bba production 1a, 2c, 3b2) S ⇒ B ⇒ A ⇒ bc production 1b, 3a, 2b

Unit production :S → BB → A

A → B(S, S) dan S → B membentuk unit pair (S, B)

(S, B) dan B → bb membentuk production S → bb(S, B) dan B → A membentuk unit pair (S, A)

(S, A) dan A → a | bc membentuk production S → a | bc(B, B) dan B → A membentuk unit pair (B. A)

(B, A) dan A → a | bc membentuk production B → a | bc

(A, A) dan A → B membentuk unit pair (A, B)(A, B) dan B → bb membentuk production A → bb

Jika dikumpulkan semua maka hasilnya1. S Aa | a | bb | bc2. A a | bb | bc3. B a | bb | bcContoh string yang dihasilkan:1) S ⇒ Aa ⇒ bba production 1a, 2b2) S ⇒ bc production 1c

Chomsky Normal Form

Kita telah melakukan penyederhaan production CFG dengan mengeliminasi simbol yangtidak berguna, ε-production , dan unit production . Ketiga proses ini tidak menjaminterbentuknya production yang seragam, misalnya bagian body tidak lebih dari dua simbol.

Chomsky Normal Form (CNF) adalah bentuk production A → BC A → a dengan A, B, dan C berjenis simbol non terminal dan a simbol terminal.

CFG yang tidak mengandung ε-production dapat diubah sehingga semua production -nyaberbentuk CNF, dengan cara:

1. apabilabody

mengandung simbol terminal dan panjangbody

lebih dari satu makagunakan variabel pembantu untuk menggantikan simbol terminal.S → aBcD diuraikan menjadiS → ABCD

A → aC → c

2. uraikan body yang panjangnya tiga atau lebih menjadi sejumlah production yangpanjangnya masing-masing dua dengan bantuan variabel baru.S → ABCD diuraikan menjadiS → AEE → BF

F → CD

Page 7: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 7/8

Penyederhanaan CFG (edisi 1) 7/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

Ubah production berikut menjadi CNF1. S → ABa2. A → aab3. B → Ac

Ubah simbol terminal1. S → ABa menjadi

S → ABC (1a)C → a (1b)

2. A → aab menjadi A → CCD (2a)D → b (2b)

3. B → Ac menjadiB → AE (3a)E → c (3b)

Ubah body yang panjang lebih dari dua1a. S → ABC menjadi

S → AFF → BC2a. A → CCD menjadi

A → CGG → CD

Hasil:1. S AF2. F BC3. C a4. A CG5. G CD

6. D b7. B AE8. E c

Ubah production berikut menjadi CNF1. E → E + T | T * F | ( E ) | a | b2. T → T * F | ( E ) | a | b3. F → ( E ) | a | b4. I → a | b

Ubah simbol terminal1a. E → E + T menjadi

E → EPT (a)P → +

1b. E → T * F menjadiE → TMF (b)M → *

1c. E → (E) menjadiE → LER (c)L → (R → )

Ubah body yang panjangnya lebih dari dua(a). E → EPT menjadi

E → EC 1 C1 → PT

Page 8: LN Sederhana CFG

8/17/2019 LN Sederhana CFG

http://slidepdf.com/reader/full/ln-sederhana-cfg 8/8

Penyederhanaan CFG (edisi 1) 8/8

INSTITUT B ISNIS dan INFORMATIKA INDONESIA

(b). E → TMF menjadiE → TC 2 C2 → MF

(c). E → LER menjadiE → LC3 C3 → ER

Hasil:1. E EC 1 | TC 2 | LC 3 | a | b2. T TC 2 | LC 3 | a | b3. F LC 3 | a | b4. I a | b5. P +6. M *7. L (8. R )9. C 1 PT10. C 2 MF

11. C 3 ER

Referensi

Hopcroft, E. John, Rajeev Motwani, Jeffrey D. Ullman, (2001), Introduction to AutomataTheory, Languages, and Computation , 2 nd edition, Addison-Wesley

Linz, P., (1990), An Int roduct ion to Formal Languages and Automata , D.C. Heath andCo.

Martin, J. C. (1991), Introduc tion to Languages and the Theory of Computation ,McGraw-Hill