&
OTOMATA
Pohon Penurunan dan Penyederhanaan
Tata Bahasa Bebas Konteks (CFG)
CFG / Tata Bahasa Bebas Konteks
<subject> <predicate>
<verb phrase>
<noun phrase>
<verb>
<article> <noun phrase> <adverbial phrase>
<noun phrase>
<adj> <noun> <Preposition>
<article> <noun>
Pohon Penurunan
(Derivation Tree/Parse Tree)
Pohon penurunan berguna untuk
menggambarkan bagaimana memperoleh suatu
string (untai) dengan cara menurunkan simbol-
simbol variabel (VN) menjadi simbol-simbol
terminal (VT) sampai tidak ada yang belum
tergantikan.
Pohon Penurunan
(Derivation Tree/Parse Tree)
Pohon penurunan untuk untai : aabbb
S P: S AB
A aA|a
A B
B bB|b
aabbaa
Penurunan terkanan : S aAS aAa aSbAa aSbbaa
aabbaa
S S
4 2 1
1 S S
a A a A
4
2
S b 3A a S b A3 a
a b a a b a
Leftmost Rightmost
Ambiguitas
Terjadi bila terdapat lebih dari 1 pohon penurunan
yang berbeda untuk memperolah suatu untai.
Contoh :
SA|B
Aa
Ba
Utk untai : a terdapat 2 cara penurunan :
SAa
SBa
Ambiguitas
S SbS | ScS | a
Utk untai : abaca terdapat 2 cara penurunan :
S SbS abS abScS abacS abaca
S ScS SbScS abScS abacS abaca
S s
S b S
S c S
a S c S
S b S
a
a a a a
Ambiguitas
Tidak ada/belum ada algoritma yang dapat
menyelesaikan masalah ambiguitas.
Tetapi ada teknik standar untuk menulis grammar
yang tidak ambigu.
Ambiguitas
(Mengapa perlu diperhatikan)
a aa
E a2 E
E E E E
a E E E E a
a a a a
Ambiguitas
(Mengapa perlu diperhatikan)
E 2 22 E
E E E E
2 E E E E 2
2 2 2 2
Ambiguitas
(Mengapa perlu diperhatikan)
6 8
E E
2 4 4 2
E E E E
2 2 2 2
2 E E E E 2
2 2 2 2
2 22 6 2 22 8
Penyederhanaan CFG
Tujuan:
Untuk melakukan pembatasan sehingga tidak
menghasilkan pohon penurunan yang memiliki kerumitan
yang tidak perlu / aturan produksi yang tidak berarti.
Contoh:
SA
S AB | a
AB
Aa BC
Aturan S AB tidak berarti CD
karena B tidak memiliki Da|A
penurunan.
Memiliki kelemahan yaitu terlalu
panjang jalannya padahal berujung
pada S a, D A juga
menyebabkan kerumitan.
Penyederhanaan CFG
Suatu tata bahasa bebas konteks (CFG) dapat
disederhanakan dengan cara :
1. Penghilangan produksi useless
2. Penghilangan produksi unit
3. Penghilangan produksi
Penghilangan Produksi Useless
Produksi Useless :
Produksi yang memuat simbol variabel yang
tidak memiliki penurunan yang akan
menghasilkan terminal-terminal seluruhnya.
Produksi ini tidak berguna karena bila
diturunkan tidak akan pernah selesai (masih ada
simbol variabel yang tersisa).
Bentuk sederhana :
S aSa | Bde
B BBB | a
Contoh 2
S aB
A bcD | dAC
B e | Ab
C bCb | adF | ab
F cFB
Langkah penyederhaan :
1. A bCD, D tidak memiliki penurunan
2. Konsekuensi no1, A tidak memiliki
penurunan yang menuju terminal
3. B Ab tidak memiliki penurunan
4. F tidak memiliki penurunan yang menuju
terminal
5. C adF tidak memiliki penurunan
Contoh 2
Awal:
S aB
A bcD | dAC
B e | Ab
C bCb | adF | ab
F cFB
Sehingga menjadi :
S aB
Be
C bCb | ab
Penghilangan Produksi Unit
S bcAd
A
Catatan:
Untuk penggantian S AB tetap pertahankan
produksi S , krn S merupakan simbol awal.
Ini merupakan satu2nya perkecualian produksi
yang tdk dihapus, yaitu produksi yang
dihasilkan oleh simbol awal.
Contoh 2
S ABaC
A BC
Bb|
CD|
Dd
Contoh 2
Variabel yang nullable B, C. 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
Penyederhanaan CFG
Catatan:
Penghilangan suatu tipe produksi bisa menghasilkan
produksi tipe yang lain. Hal ini didasari bahwa
penghilangan produksi bisa menghasilkan produksi
unit.
Penghilangan produksi unit tidak menghasilkan
produksi . Penghilangan produksi useless tidak
menghasilkan produksi unit ataupun