Anda di halaman 1dari 15

MENYEDERHANAKAN CFG

FIRDAUS SOLIHIN UNIVERSITAS TRUNOJOYO

Tujuan Penyederhanaan
Melakukan pembatasan dan kontrol agar tidak menghasilkan pohon penurunan yang memiliki kompleksitas yang tidak perlu (useless) atau proses yang tidak berarti

Contoh Tidak Sederhana 1


S AB | a Aa Aturan S AB tdk berarti krn B tdk memiliki penurunan

Contoh Tidak Sederhana 2


SA AB BC CD Da|A Memiliki kelemahan yaitu terlalu panjang prosesnya padahal hanya berujung pd S a, D A juga menyebabkan kerumitan.

Langkah Penyederhanaan CFG


Melakukan Penghilangan Thd Proses yang tidak perlu (useless) Tambahan Unit/Role yang tidak berarti Penghilangan null string

Penghilangan thd proses yang tidak perlu (useless)

Contoh Useless (1)


S aSa | Abd | Bde A Ada B BBB | a Simbol A tdk memiliki penurunan yg menuju terminal, shg bisa dihilangkan Konsekuensi no 1, aturan produksi S Abd tdk memiliki penurunan

Perbaikan Contoh Useless (1)


Bentuk sederhana : S aSa | Bde B BBB | a

Contoh Useless (2)


S aB A bcD | dAC B e | Ab C bCb | adF | ab F cFB

Perbaikan Contoh Useless (2)


Langkah penyederhaan : 1. A bCD, D tdk memiliki penurunan 2. Konsekuensi no1, A tdk memiliki penurunan yg menuju terminal 3. B Ab tdk memiliki penurunan 4. F tdk memiliki penurunan yg menuju terminal 5. C adF tdk memiliki penurunan 6. C tdk pernah dijumpai dipenurunan manapun

Perbaikan Contoh Useless (2)


Bentuk sederhana : S aB Be

Penghilangan Tambahan Unit yang tidak berarti (boros)

Tambahan unit tak berarti (boros)


adalah tambahan unit dimana ruas kiri dan kanan hanya memiliki rule berupa satu simbol variabel, misalnya :
A B, C D.

Keberadaan Tambahan unit/role yang tak berarti (boros) membuat tata bahasa memiliki kerumitan yg tidak perlu atau menambah panjang penurunan.

Penyederhanaan
Penyederhanaan ini dilakukan dgn melakukan penggantian aturan produksi.

Contoh Boros Unit (1)


S Sb SC CD C ef D dd Kita lakukan penggantian berturutan mulai dari rule yg paling dekat menuju ke penurunan terminal2 ( => dibaca menjadi)

Perbaikan Contoh Boros Unit (1)


C D => C dd S C => S dd | ef Shg disederhanakan mjd : S Sb S dd | ef

Contoh Boros Unit (2)


S Cba | D A bbC B Sc | ddd C eA | f | C D E | SABC E gh

Perbaikan Contoh Boros Unit (2)


Penggantian yg dilakukan : D E => D gh C C dihapus S D => S gh | SABC Shg aturan produksi setelah disederhanakan : S Cba | gh | SABC A bbC B Sc | ddd C eA | f

Penghilangan Null String ()

Penghilangan Null String ()


Penghilangan null string () dilakukan dgn mengganti rule yang menuju null string () dengan dua kondisi (kasus)
hanya merupakan satu-satunya rule. bukan satu-satunya rule Pengecualian untuk null string yang dimiliki oleh rule S (start here)

10

Kasus 1 (hanya merupakan satu-satunya rule)


Prinsip penggantiannya bisa dilihat kasus berikut : S bcAd A Pada kasus diatas A satu2nya rule dari A, mk variabel A bisa ditiadakan, hasil penyederhanaan tata bahasa bebas konteks mjd : S bcd

Kasus 2 (bukan satu-satunya rule)


S bcAd A bd | Pada kasus diatas A nullable, tapi A bukan satu2nya rule dari A, mk hasil penyederhanaan : S bcAd | bcd A bd

11

Contoh 1
S AB A abB | aCa | B bA | BB | C

Proses Peyederhanaan Contoh (1)


Proses penggantian : C dihapus (kondisi kasus 1) A aCa => A aa A , B dihapus (kondisi kasus 2) B bA => B bA | b B BB => B BB | B A abB => A abB | ab S AB => S AB | A | B |

12

Proses Peyederhanaan Contoh (1)


Perhatikan : untuk penggantian S AB tetap mempertahankan rule S , karen S merupakan simbol awal. Sebagai pengecualian (kasus 3)

Hasil Penyederhanaan
S AB | A | B | A abB | ab | aa B bA | b | BB | B

13

Contoh 2
S ABaC A BC Bb| CD| Dd

Proses penyederhanaan
Variabel yg nullable B, C. Kita lakukan penggantian : A BC => A BC | B | C S ABaC => S ABaC | AaC | BaC | ABa| aC | Aa | Ba | a Hasil penyederhanaan : S ABaC | AaC | BaC | ABa | aC | Aa | Ba | a A BC | B | C Bb CD Dd

14

Latihan
1.

Lakukan penyederhanaan CFG S a | aA | B | C A aB | B Aa C cCD D ddd

Latihan
2.

Lakukan penyederhanaan CFG S aB | aaB A B bA B

15

Anda mungkin juga menyukai