Anda di halaman 1dari 22

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 
Pembentukan GNF

Ada 2 cara merubah Tata bahasa bebas konteks menjadi GNF:

•Substitusi
•Perkalian Matrix
Pembetukan GNF dengan Substitusi
Steps:
• Tentukan urutan simbol-simbol variabel  A1, A2 ,….. Am
• Berdasarkan urutan simbol, seluruh aturan produksi yang ruas kanannya diawali dengan simbol
variabel dapat dituliskan dalam bentuk

Ah  Ai 
dimana h </> i (rekursif kiri sudah dihilangkan),  berupa simbol-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
Pembetukan GNF dengan Substitusi
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 simbol
terminal.
• Variabel baru yg didapat dari penghilangan rekursif kiri diubah dengan cara substusi untuk
menjadi GNF
Pembentukan GNF dengan Substitusi
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 simbol 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 simbol 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
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 simbol 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 simbol 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

Latihan
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
Pembentukan 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)
Pembentukan 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