Anda di halaman 1dari 15

1

CONTEXT FREE GRAMMAR


(CFG)
FIRDAUS SOLIHIN
UNIVERSITAS TRUNOJOYO
KOMPONEN CFG
Terminal = ditulis huruf kecil {a, , .. }
Non Terminal = ditulis huruf besar {A,
S=Start Here, }
Himpunan String / Kata yang terbentuk
2
CFG
Bahasa yang mewakili CFG disebut
Context Free Language (CFL)
CFG memiliki ruang lingkup yang lebih
luas dari pada RE, FA dan TG karena
dapat mewakili sebagian Non Regular
Language
Contoh 1
RE = a*
CFG
S aS
S
S aS
S aaS
S aaaS
S aaa
3
Contoh 2
Himp = {,ab,aabb,aaabbb, }
CFG
S aSb
S
Atau
S aSb |
Contoh 3
RE = (a+b)*
CFG
S aS
S bS
S
S bS
S baS
S babS
S bab
4
RE = (a+b)*
CFG
S aS
S bS
S a
S b
S
atau
S aS | bS | a | b |
Latihan
Buatlah CFG dari:
a
n
b
2n
(n = 0,1,2 )
RE = (ab)*
RE = a*b*
5
TREE
TREE
Struktur pohon (tree) dapat digunakan
untuk menggambarkan proses
pembentukan kata/string dari CFG
S a X b b X a
x a X b X
6
Contoh
CFG
S S + S S * S angka
angka 0 1 2 3 9
S
S S +
S S * 3
4 5
Atau
S
S S *
S s + 5
3 4
Ambigous 1
Karena hasil keduanya tidak sama
maka tidak dapat diimplementasikan
pada pelajaran matematika.
Untuk menyempurnakannya maka
diberi tanda kurung = UNAMBIGOUS
S (S + S) (S * S) angka
angka 0 1 2 3 . 9
7
Ambigous 2
CFG
S a S | S a | a
bentuk tree dari kata aaa
S
S
a
a
S
a
S
a S
a
a
S
CFG diatas termasuk AMBIGOUS
(Satu kata dapat dibentuk lebih dari 1
cara) karena untuk membentuk kata
aaa dapat dengan lebih 1 cara.
Perbaikan CFG diatas
S a S | a UNAMBIGOUS
8
Contoh implementasi
S * | + | Angka
+ + + | + * | + Angka | * + | * * | *
Angka | Angka + | Angka * | Angka
Angka
* * * | + * | + Angka | * + | * * | *
Angka | Angka + | Angka * | Angka
Angka
Angka 0 | 1 | 3 | | 9
PREORDER
* + * + 1 2 + 3 4 5 6
* + * + 1 2 7 5 6
* + * 3 7 5 6
* + 21 5 6
* 26 6
156
S
*
+ 6
5
2 4
*
1 3
+ +
9
Latihan
Buatlah tree untuk membentuk kata
disamping
S aSb | ab // ab
S aS | bS | a // aaaa
S aS | aSb | X // aabb
X aXa | a // abaa
Periksa CFG dibawah ini ambigous?
S aSb | Sb | Sa | a
S aaS | aaaS | a
MEMBENTUK CFG dr FA
10
FA to CFG
Semua bahasa yang tergolong
Regular Language pasti dapat di
ekspresikan dalam bentuk CFG
Oleh karena itu, suatu CFG dapat
dibentuk dari RE, FA maupun TG
Cara Mengubah FA ke CFG
Tiap State diberi nama
State awal atau State awal-akhir = S
Selain State awal = Huruf besar (non
terminal)
Buat rule sesuai dengan arah panah
Khusus untuk state akhir diberi
tambahan
11
Contoh 1
Bahasa yang menerima semua string yang
mempunyai double a
FA
CFG
S aM | bS
M aF | bS
F aF | bF |
Contoh 2
Bahasa yang menerima semua string
yang panjangnnya ganjil
FA
CFG
S aF | bF
F aS | bS |
12
Contoh 3
Bahasa yang menerima semua string yang
panjangnya tidak lebih dari 3 karakter
FA
CFG
S aH | bH |
H aI | bI |
I aJ | bJ |
J aK | bK |
K aK | bK
CHOMSKY NORMAL FORM
(CNF)
13
Teorema Chomsky
Setiap CFG yang mempunyai pada
rulenya, dapat diubah menjadi CFG
lain yang tidak mengandung .
Jika CFG tersebut mewakili bahasa
yang mengandung , maka CFG baru
yang terbentuk memiliki bahasa yang
sama tetapi tidak termasuk .
Contoh
S aSa | bSb |
S a | Xb | aYa
X Y |
Y b | X
S Xa
X aX | bX |
S aSa | bSb | aa | bb
Sa | Xb | aYa | b | aa
X Y
Y b | X
S Xa | a
X aX | bX | a | b
14
Definisi CNF
CNF adalah suatu CFG yang rule-
rulenya selalu dalam bentuk :
Non Terminal String yang terdiri dari
min 2 Non terminal
Non Terminal 1 terminal
Contoh 1
Rubahlah CFG ke bentuk CNF
CFG = S aSa | bSb | a | b | aa | bb
CNF = S ASA | BSB | a | b | AA | BB
A a
B b
15
Contoh 2
Rubahlah CFG ke bentuk CNF
CFG = S bA | aB
A bAA | aS | a
B aBB | bS | b
CNF = S XA | YB
A XAA | YS | a
B YBB | XS | b
X b
Y a