LN Sederhana CFG
-
Upload
legowo-prayudi -
Category
Documents
-
view
226 -
download
0
Transcript of LN Sederhana CFG
![Page 1: LN Sederhana CFG](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/1.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/2.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/3.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/4.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/5.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/6.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/7.jpg)
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](https://reader031.fdocument.pub/reader031/viewer/2022021221/577c7ec21a28abe054a2561e/html5/thumbnails/8.jpg)
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