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
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 S A a b A c A A b b
CFG mengandung aturan produksi yang rekursif kiri
Aturan produksi yang tidak rekursif
kiri
Aturan produksi yang rekursif kiri
Lakukan penggantian, munculkan aturan produksi baru dan symbol variabel baru CFG bebas dari aturan produksi yang 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.
Steps:
Pisahkan aturan produksi yang rekursif kiri dan yang tidak.
Aturan produksi yang rekursif kiri diberi simbol n setelah variabel:
A A1 A2 A3 ……..An
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
◦ 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
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 = ab, 2 = bd & 1 = aSc, 2 = dd, 3 = ff
Lakukan penggantian aturan produksi yang rekursif kiri
S Sab Sbd, digantikan oleh:
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 1 2
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
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
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
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
◦ Z1 1 Z1 2 Z1 A Aa, digantikan oleh:
◦ A 1 Z2 2 Z2
◦ Z2 1
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
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
Lakukanlah penghilangan rekursif kiri untuk tata bahas bebas konteks dibawah:
S Sa
aAc
c
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
Untuk dapat diubah ke dalam
bentuk normal Greibach,
tata
bahasa semula harus memenuhi syarat:
◦ Sudah dalam bentuk normal Chomsky (CNF) ◦ Tidak bersifat rekursif kiri
Ada 2 cara merubah Tata bahasa bebas konteks menjadi
GNF:
•Substitusi
Steps:
Tentukan urutan symbol-simbol variabel A1, A2 ,….. Am
Berdasarkan urutan symbol, seluruh aturan produksi yang ruas kanannya diawali
dengan symbol variabel dapat dituliskan dalam bentuk
Ah Ai
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:
Ah Ap (dimana h p)
h = p, lakukan penghilangan rekursif kiri h < p, aturan produksi sudah benar
Steps - contd:
Lakukan penghilangan rekursif kiri bila
Ah Ap (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
Contoh:
Ubahlah Tata bahasa bebas konteks berikut (sudah dalam bentuk CNF) ke dalam GNF! S CA A a d B b 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)
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 A a d
B b
C aBD dBD D aB dB
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)
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
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 bCBZ1 aZ1 Z1 ACB Z1 ACB Z1
Variabel C yang sudah dalam bentuk normal Greibach: C bCB Z1 a Z1 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 Z1A a Z1A bCBA aA | b A BC A bCB Z1AC a Z1AC 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
Z1 ACB Z1 bCB Z1ACCB a Z1ACCB bCBACCB aACCB bCCB Z1 ACB Z1 Z1 bCB Z1ACCBZ1 a Z1ACCBZ1 bCBACCBZ1 aACCB Z1 bCCBZ1
Hasil akhir aturan produksi dalam GNF:
A bCB Z1AC a Z1AC bCBAC aAC bC B bCB Z1A a Z1A bCBA aA b
C bCB Z1 a Z1 bCB a
Z1 bCB Z1ACCB a Z1ACCB bCBACCB aACCB bCCB
Z1 bCB Z1ACCBZ1 a Z1ACCBZ1 bCBACCBZ1 aACCB Z1 bCCBZ1
Ubahlah Tata bahasa bebas konteks berikut ke dalam GNF
(sudah dalam bentuk CNF) !
1.
S AS | a
A a
2.S AA | d
A SS | b
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)
Tentukan V,R dan S. V = [ A B C ] R = 0 0 B C 0 0 0 A 0 S = [ 0 b a ]
‣
Persamaan matriksnya. V = VR + S [ A B C ] = [ A B C ] 0 0 B C 0 0 0 A 0 + [ 0 b a ] A =BC
B =CA
+ b C =AB
+ a Bentuk Persamaan Matriks Baru
V = SQ + S
Dimana Q = matriks n x n yang berisi simbol variabel2 baru
Q = D E F G H I J K L
‣
Matriksnya berupa: [ A B C ] = [ 0 b a ] + [ 0 b a ] D E F G H I J K L V = [ A B C ] S = [ 0 b a ] Dari hasil perkalian matriks didapat persamaan:
A = bG + aJ B = bH + aK + b
C = bI + aL + a
Bentuk Persamaan Matriks Baru
Q= RQ + R
Dimana Q = matriks n x n yang berisi simbol variabel2 baru
Q = D E F G H I J K L
‣
Matriksnya berupa: R = 0 0 B C 0 0 0 A 0 D E F G H I J K L 0 0 B C 0 0 0 A 0 0 0 B C 0 0 0 A 0 + D E F G H I J K L = 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)
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)
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
Ubahlah Tata bahasa bebas konteks berikut ke dalam GNF dengan
menggunakan perkalian matriks.
(sudah dalam bentuk CNF) !
1.