Anda di halaman 1dari 39

Teori Bahasa dan

Automata

Penghilangan Rekursif Kiri


Aturan Produksi Rekursif

Aturan Produksi yang rekursif memiliki ruas kanan (hasil produksi)


yang memuat simbol variabel.

Aturan Produksi Rekursif Kanan


Sebuah aturan produksi dalam bentuk:
A A
A : Variabel
:(VT)* atau kumpulan symbol variabel dan terminal

Aturan Produksi Rekursif Kiri


Aturan produksi dalam bentuk:
A A
Contoh:
S Sd
B Bad
Aturan Produksi Rekursif
Produksi yang rekursif kanan menyebabkan pohon penurunan
tumbuh ke kanan, sebaliknya produksi yang rekursif ke kiri
menyebabkan pohon penurunan tumbuh ke kiri.

Contoh :
tata bahasa bebas konteks dengan aturan produksi:
S aAc
A Ab

a A c

A b
Pohon penurunan sebuah CFG yang rekursif kiri.
A b

A b
Penghilangan Rekursif Kiri
Dalam banyak penerapan tata bahasa, rekursif kiri tak diinginkan. Untuk
menghindari penurunan yang bisa mengakibatkan loop hilangkan sifat
rekursif kiri dari aturan produksi.

Aturan produksi
yang tidak rekursif
kiri

Lakukan CFG bebas


CFG penggantian, dari aturan
mengandung munculkan aturan produksi yang
aturan produksi Aturan produksi produksi baru dan rekursif kiri
yang rekursif kiri yang rekursif kiri symbol variabel
baru
Penghilangan Rekursif Kiri
Steps:

Pisahkan aturan produksi yang rekursif kiri dan yang tidak.


Aturan produksi yang rekursif kiri diberi simbol n setelah
variabel:
A A 1 A 2 A 3 ..A n
Aturan produksi yang tidak rekursif kiri (termasuk produksi ) diberi
simbol m
A 1 2 3 .. m

Lakukan penggantian aturan produksi yang rekursif kiri, menjadi


sebagai berikut:

A 1Z 2Z mZ
Z 1 2 3 n
Z 1Z 2Z 3Z n Z
Penghilangan Rekursif Kiri
Hasil akhir berupa aturan produksi pengganti ditambah
dengan aturan produksi semula yang tidak rekursif kiri.

Contoh:
Lakukanlah penghilangan rekursif kiri untuk tata bahas bebas
konteks dibawah:
1. S Sab aSc dd ff Sbd

2. S Sab Sb cA
A Aa a bd
Contoh
1.
Aturan produksi yang rekursif kiri:
S Sab Sbd
Untuk symbol S
1 = ab, 2 = bd

Aturan produksi yang tidak rekursif kiri:


S aSc dd ff
Untuk symbol S
1 = aSc, 2 = dd, 3 = ff
Contoh
1 = ab, 2 = bd & 1 = aSc, 2 = dd, 3 = ff

Lakukan penggantian aturan produksi yang rekursif kiri

S Sab Sbd, digantikan oleh:


S 1 Z1 2 Z1 3 Z1
Contoh
1 = ab, 2 = bd & 1 = aSc, 2 = dd, 3 = ff

Lakukan penggantian aturan produksi yang rekursif kiri

S Sab Sbd, digantikan oleh:


S aScZ1 dd Z1 ff Z1
Z 1 1 2
Z 1 1 Z1 2 Z1
Contoh
1 = ab, 2 = bd & 1 = aSc, 2 = dd, 3 = ff

Lakukan penggantian aturan produksi yang rekursif kiri

S Sab Sbd, digantikan oleh:


S aScZ1 dd Z1 ff Z1
Z1 ab bd
Z1 ab Z1 bd Z1
Contoh
1 = ab, 2 = bd & 1 = aSc, 2 = dd, 3 = ff

Lakukan penggantian aturan produksi yang rekursif kiri

S Sab Sbd, digantikan oleh:


S aScZ1 dd Z1 ff Z1
Z1 ab bd
Z1 ab Z1 bd Z1

Hasil akhir setelah penghilangan rekursif kiri adalah:

S aSc dd ff
S aScZ1 dd Z1 ff Z1
Z1 ab bd
Z1 ab Z1 bd Z1
Contoh
2.
Aturan produksi yang rekursif kiri:
S Sab Sb
A Aa

Untuk symbol S 1 = ab, 2 = b


Untuk symbol A 1 = a

Aturan produksi yang tidak rekursif kiri:


S cA
A a bd

Untuk symbol S 1 = cA
Untuk symbol A 1 = a, 2 = bd
Contoh
S 1 = ab, 2 = b & 1 = cA
A 1 = a & 1 = a 2 = bd

Lakukan penggantian aturan produksi yang rekursif kiri

S Sab Sb, digantikan oleh:


S 1 Z1
Z1 1 2
Z 1 1 Z1 2 Z1

A Aa, digantikan oleh:


A 1 Z2 2 Z2
Z 2 1
Z 2 1 Z2
Contoh
S 1 = ab, 2 = b & 1 = cA
A 1 = a & 1 = a, 2 = bd

Lakukan penggantian aturan produksi yang rekursif kiri

S Sab Sb, digantikan oleh:


S cAZ1
Z1 ab b
Z1 ab Z1 bZ1

A Aa, digantikan oleh:


A aZ2 bdZ2
Z2 a
Z2 aZ2
Contoh
Hasil akhir setelah penghilangan rekursif kiri adalah:

S cA
A a bd
S cAZ1
Z1 ab b
Z1 ab Z1 bZ1
A aZ2 bdZ2
Z2 a
Z2 aZ2
Latihan
Lakukanlah penghilangan rekursif kiri untuk tata bahas bebas konteks
dibawah:

S Sa aAc c
A Ab ba
Teori Bahasa dan
Automata

Bentuk Normal Greibach (GNF)


Greibach Normal Form (GNF)

Suatu tata bahasa bebas konteks (CFG) dikatakan dalam bentuk


normal Greibach (GNF) jika setiap aturan produksinya ada dalam
bentuk:
A a

a : symbol terminal (tunggal), a T


: rangkaian symbol-simbol variabel (V*)

Contoh tata bahasa bebas konteks dalam bentuk normal Greibach:


S a aAB
A aB
B cS
Greibach Normal Form (GNF)

Untuk dapat diubah ke dalam bentuk normal Greibach, tata


bahasa semula harus memenuhi syarat:

Sudah dalam bentuk normal Chomsky (CNF)


Tidak bersifat rekursif kiri
Tidak menghasilkan
Pembetukan GNF

Ada 2 cara merubah Tata bahasa bebas konteks menjadi


GNF:

Substitusi
Perkalian Matrix
Pembetukan GNF dengan Substitusi
Steps:
Tentukan urutan symbol-simbol variabel A , A ,.. A
1 2 m

Berdasarkan urutan symbol, seluruh aturan produksi yang ruas kanannya diawali
dengan symbol variabel dapat dituliskan dalam bentuk

A h A i
dimana h </> i (rekursif kiri sudah dihilangkan), berupa symbol-simbol variabel.

Jika h < i, aturan produksi ini sudah benar (tidak perlu diubah)
Jika h > i, aturan produksi belum benar. Ubah Ai pada produksi ini dengan ruas
kanan produksi dari variabel Ai, sehingga diperoleh produksi dalam bentuk:

A h A p (dimana h p )

h = p, lakukan penghilangan rekursif kiri


h < p, aturan produksi sudah benar
Pembetukan GNF dengan Substitusi
Steps - cont d:

Lakukan penghilangan rekursif kiri bila

A h A p (dimana h = p )

Lakukan substitusi mundur mulai dari variabel Am, lalu Am-1, Am-2,.Dengan
cara ini aturan produksi dalam bentuk Ax Ay dapat diubah sehingga ruas
kanannya dimulai dengan symbol terminal.
Variabel baru yg didapat dari penghilangan rekursif kiri diubah dengan cara
substusi untuk menjadi GNF
Pembetukan GNF dengan Substitusi
Contoh:
Ubahlah Tata bahasa bebas konteks berikut (sudah dalam bentuk
CNF) ke dalam GNF!
S CA
Aad
Bb
C DD
D AB

Jawab:
Tentukan urutan symbol variabel S<A<B<C<D (bebas)

Periksa aturan produksi , apakah sudah memenuhi ketentuan urutan

variabel:
S CA ( sudah memenuhi karena S<C)
C DD ( sudah memenuhi karena C<D)
D AB ( tidak memenuhi karena D>A)
Contoh
Lakukan substitusi pada symbol variabel A, aturan produksi menjadi:
D AB D aB dB
Setelah semua aturan produksi memenuhi ketentuan urutan variabel,
lakukan substitusi mundur pada aturan produksi yang belum dalam
GNF
C DD C aBD dBD
S CA S aBDA dBDA
(Lakukan substitusi dari kanan ke kiri berdasarkan urutan variabel)
Hasil akhir aturan produksi dalam GNF:
S aBDA dBDA
Aad
Bb
C aBD dBD
D aB dB
Contoh
Ubahlah Tata bahasa bebas konteks berikut (sudah dalam bentuk
CNF) ke dalam GNF!

A BC
B CA b
C AB a

Jawab:
Tentukan urutan symbol variabel A<B<C (bebas)

Periksa aturan produksi , apakah sudah memenuhi ketentuan urutan

variabel:
A BC (sudah memenuhi karena A<B)
B CA (sudah memenuhi karena B<C)
C AB (tidak memenuhi karena C>A)
Contoh
Lakukan substitusi pada symbol variabel A, aturan produksi menjadi:
C AB C BCB C CACB bCB

Teradapat Rekursif kiri pada : C CACB, maka lakukan penghilangan


rekursif kiri:
C CACB bCB | a
(1 = ACB & 1 = bCB , 2 = a)

C 1 Z1 2 Z1
Z1 1
Z1 1 Z1
Contoh
Lakukan substitusi pada symbol variabel A, aturan produksi menjadi:
C AB C BCB C CACB bCB

Teradapat Rekursif kiri pada : C CACB, maka lakukan penghilangan


rekursif kiri:
C CACB bCB | a
(1 = ACB & 1 = bCB , 2 = a)

C bCBZ 1 aZ 1
Z 1 ACB
Z 1 ACB Z 1

Variabel C yang sudah dalam bentuk normal Greibach:

C bCB Z 1 a Z 1 bCB a
Setelah semua aturan produksi memenuhi ketentuan urutan variabel, lakukan
substitusi mundur pada aturan produksi yang belum dalam GNF

B CA| b B bCB Z 1A a Z 1A bCBA aA | b


A BC A bCB Z 1AC a Z 1AC bCBAC aAC bC
(Lakukan substitusi dari kanan ke kiri berdasarkan urutan variabel)

Variabel baru yg didapat dari penghilangan rekursif kiri diubah dengan cara
substusi untuk menjadi GNF
Z 1 ACB Z 1 bCB Z 1ACCB a Z 1 ACCB bCBACCB aACCB bCCB

Z 1 ACB Z 1 Z 1 bCB Z 1 ACCBZ 1 a Z 1ACCBZ 1 bCBACCBZ 1 aACCB Z 1

bCCBZ 1
Hasil akhir aturan produksi dalam GNF:

A bCB Z 1AC a Z 1AC bCBAC aAC bC


B bCB Z 1A a Z 1A bCBA aA b
C bCB Z 1 a Z 1 bCB a
Z 1 bCB Z 1ACCB a Z 1ACCB bCBACCB aACCB bCCB
Z 1 bCB Z 1ACCBZ 1 a Z 1ACCBZ 1 bCBACCBZ 1 aACCB Z 1 bCCBZ 1

Latihan
Ubahlah Tata bahasa bebas konteks berikut ke dalam GNF
(sudah dalam bentuk CNF) !

1.
S AS | a
Aa

2.

S AA | d
A SS | b
Pembetukan GNF dengan Perkalian Matriks
Kumpulan aturan produksi dapat dianggap sebagai sistem persamaan linear.
Contoh:
A BC
B CA b
C AB a
Dapat dilihat sebagai:
A = BC
B = CA + b
C = AB + a

Buat matriks dengan persamaan


V = VR + S

Dimana (n = banyaknya variable dalam tata bahasa) dan:

V = vektor baris 1 x n (berisi simbol2 variabel)


R = matriks n x n berisi simbol terminal dan variabel (utk mengganti produksi yg diawali
dengan variabel)
S = vektor baris 1 x n (berisi simbol terminal utk mengganti produksi yang diawali dengan
terminal)
Pembetukan GNF dengan Perkalian Matriks
Tentukan V,R dan S.

V = [A B C]
0 0 B A = BC
R = C 0 0 B = CA + b
0 A 0 C = AB + a

S = [0 b a]

Persamaan matriksnya.

V = VR + S
0 0 B
[A B C] [A B C] C 0 0 + [0 b a]
= 0 A 0
Pembetukan GNF dengan Perkalian Matriks
Bentuk Persamaan Matriks Baru

V = SQ + S
Dimana Q = matriks n x n yang berisi simbol variabel2 baru

D E F
Q = G H I V = [A B C] S = [0 b a]
J K L

Matriksnya berupa:

D E F
[A B C] [0 b a] G H I + [0 b a]
= J K L
Pembetukan GNF dengan Perkalian Matriks

Dari hasil perkalian matriks didapat persamaan:

A = bG + aJ
B = bH + aK + b
C = bI + aL + a
persamaan (1)
Pembetukan GNF dengan Perkalian Matriks
Bentuk Persamaan Matriks Baru

Q= RQ + R
Dimana Q = matriks n x n yang berisi simbol variabel2 baru

D E F 0 0 B
Q = G H I R = C 0 0
J K L 0 A 0

Matriksnya berupa:

D E F 0 0 B D E F 0 0 B
G H I = C 0 0 G H I + C 0 0
J K L 0 A 0 J K L 0 A 0
Pembetukan GNF dengan Perkalian Matriks
Dari hasil perkalian matriks didapat persamaan:

D = BJ
E = BK
F = BL + B
G = CD + C
H = CE
I = CF
J = AG
K = AH + A
L = AI
persamaan (2)
Pembetukan GNF dengan Perkalian Matriks
Substitusi persamaan (1) ke dalam persamaan (2)

D =bHJ + aKJ + bJ
E = bHK + aKK + bK
F = bHL + aKL + bL + bH + aK + b
G = bID + aLD + aD + bI + aL + a
H = bIE + aLE + aE
I = bIF + aLF + aF
J = bGG + aJG
K = bGH + aJH + bG + aJ
L = bGI + aJI
persamaan (3)
Pembetukan GNF dengan Perkalian Matriks
Hasil akhir aturan produksi dalam bentuk GNF adalah ( pers1 +
pers 3):

A = bG + aJ
B = bH + aK + b
C = bI + aL + a
D =bHJ + aKJ + bJ
E = bHK + aKK + bK
F = bHL + aKL + bL + bH + aK + b
G = bID + aLD + aD + bI + aL + a
H = bIE + aLE + aE
I = bIF + aLF + aF
J = bGG + aJG
K = bGH + aJH + bG + aJ
L = bGI + aJI
Contoh
Ubahlah Tata bahasa bebas konteks berikut ke dalam GNF dengan
menggunakan perkalian matriks.
(sudah dalam bentuk CNF) !

1.
S AA | d
A SS | b

Buktikan bahwa string yang sama dapat di hasilkan oleh kedua


cara