PERTEMUAN I Teori
Bahasa dan Otomata
Buku
Teori Bahasa dan Otomata, Firrar Utdirartatmo An Introduction to
Formal Language and Automata, Peter Linz Otomata
Arti menurut American Heritage Dictionary: 1. a robot 2. one that behaves in an automatic
or mechanical fashion Arti dalam dunia matematika Berkaitan dengan teori mesin abstrak,
yaitu mesin sekuensial yang menerima input, dan mengeluarkan output, dalam bentuk
diskrit. Contoh :
Mesin
Teori dasar
Def. 1 sebuah string dengan panjang n yang dibentuk dari himpunan A adalah barisan
dari n simbol
A Panjang
string
1aa 2...a
n a x dituliskani dengan |
x|
Def 2. String kosong (null string), dilambangkan dengan adalah untaian dengan panjang 0
dan tidak berisi apapun. Panjang string x dituliskan dengan |x| Def 3. dua buah string a = a
dapat disambungkan menjadi
...am dan
c dengan
b=b1b2panjang
...bn
m+n sebagai berikut c = a
1a 2string
Operasi penyambungan tersebut dapat pula1aditerapkan
...a
b
b
...b
himpunan
2
m 1 2 pada
n
Z=XY = {st | s X tY} Def 4.
(Closure) . A
n
adalah himpunan string
dengan panjang n yang dibentuk dari simbol-simbol di himpunan
simbol/alfabet A: Transitif Closure/Kleen Closure adalah himpunan seluruh string yang
dapat dibentuk dari A dengan berbagai panjang
A * = A0 A 1 A 2 A 3 ...
2
3. Simbol awal S N, yang merupakan salah satu anggota dari himpunan simbol nonterminal. 4. Himpunan berhingga aturan produksi P yang setiap elemennya dituliskan
dalam bentuk :
dimana dan adalah string yang dibentuk dari himpunan T N dan harus
berisi
paling sedikit satu simbol non-terminal. Keempat
komponen tersebut sering dituliskan sbb :
G = (T,N,S,P)
Bahasa yang dihasilkan oleh G ditulis sebagai L(G), yaitu himpunan string yang dapat
diturunkan dari simbol awal S dengan menerapkan aturan-aturan produksi yang terdapat
pada P. Aturan Produksi
Aturan produksi yang diterapkan pada suatu string w=ac mengganti kemunculan.
menjadi , sehingga string tersebut berubah menjadi w=ac, sehingga dapat dituliskan
ac ac (ac memproduksi ac).
P r o d u k s i
t e r 1 swe 2
bw u3 ...
t w d n a p a t
ad i t t ae ru a p k a n
bdjikaeminimal
k * harus
k aproduksi
l i yang diterapkan :
a r 1 p
t i 1 -aturan
waan l ada
dw i
t
u
l
+ a
iContoh
s w
k
11 Tatabahasa
wn n G = {{S} , {a,b}, S , P } dengan aturan produksi P
w
adalah
S aSb S
maka dapat dihasilkan suatu string S
aSb aaSbb aabb
sehingga dapat dituliskan S
aabb Bahasa
* yang dihasilkan dari tatabahasa tersebut
adalah
L(G) = { , ab, aabb , aaabbb , aaaabbbb, ... } atau
dapat pula dituliskan
|L(G)
n 0=}{aContoh n2bn
Unrestricted (TN)
||
|| aD Da AD aCD
- CB DB ADc
0 0 Ganjil
Genap 1 1
M=(Q , , , S , F ) Q =
himpunan state
= himpunan simbol input
1
start q
10 0 0 1
q1
q2
q3
00
1
6
DFA nya
Q = {q
} = {0,1} 0 , q1 , q2 , q3
SF==q{ q
0
} fungsi
0 transisi
01q
q0
q1
q2
2q
1q
3q
q
0
0q
3q
( q
3
1q
2q
Ditolak
0,011)=((q q 2,11) =( q3,1)= q2
0,1010)= ( q 1,010) =( q3,10)=( q 2,0)= q0 Diterima
Contoh lain DFA : Variabel dalam bahasa pascal diawali oleh huruf (besar/kecil), dan
diikuti dengan huruf atau angka.
A..Z,a..z,0..9
A..Z,a..z start
q
q0
0..9
A..Z,a..z,0..9
q0
Contoh
DFA lainnya :
1 0 0 1 0,1
q0
q1
q2
= ({q
dengan NFA: fungsi transisi dapat memiliki 0 atau lebih fungsi transisi
0 , q1 , q2 , q3, q4 }, {0,1}, , q0 , { q2 , q4}}
01q
}0 q
{ q0,q3} {q
0,q1
}1 q {q
2
}2 q
{q2} {q
2
{q
}3 q
4
{q
4
4} {q
4}
0,1
q3
0,1
q4
0,1 0
q0
11
q1
q2
String
diterima NFA bila terdapat suatu urutan transisi berdasar input, dari state awal
ke state akhir.
harus mencoba semua kemungkinan.
Contoh : string 01001
q0
0 1 0 q00 1 0 1 100q0
q3
q1
q0
q0
q0
q3
q3
q1
q4
q4
01
Def 2. Dua buah FSA disebut ekuivalen apabila kedua FSA tersebut menerima bahasa
yang sama
Contoh : FSA yang menerima bahasa {a n | n0 }
8
aaq
q4
a
q4
Def 3. Dua buah state dari FSA disebut indistinguishable (tidak dapat dibedakan)
apabila :
(q,w)F sedangkan (p,w)F dan
*
(q,w) F sedangkan (p,w) F untuk semua w
Def 4. Dua buah state dari FSA disebut distinguishable (dapat dibedakan) bila terdapat w
* sedemikian hingga:
(q,w)F sedangkan (p,w)F dan
*
Prosedur
menentukan
pasangan
status
indistinguishable
(q,w)
F sedangkan
(p,w)
F untuk
semua w 1.
Hapus semua state yang tak dapat dicapai dari state awal.
2. Catat semua pasangan state (p,q) yang distinguishable, yaitu {(p,q) | p F q F} 3.
Untuk setiap pasangan (p,q) sisanya,
untuk setiap a , tentukan (p,a) dan (q,a) Contoh
q1
0
q0
001
q2
10
q4
1
q3
1. Hapus state yang tidak tercapai -> tidak ada
2. 3.Pasangan
).
Pasangan
distinguishable
sisanya (q (q 0,q4), (q1,q4), (q2,q4), (q3,q4
) state 1 state 02,qpasangan
1 00,q13),hasil
(q1,q2) (q1,q3) (q2,q3
1), (q0,q2),0(q
) q1
(q
0,qq3
1 q2 q4 distinguishable (q
) q1
,q
q3
0 2 q1 q4 distinguishable (q
) q2
1,qq4
2 q1 q4 indistinguishable (q
) q1
0,qq3
3 q2 q4 distinguishable (q
) q2
,q
q4
1 3 q2 q4 indistinguishable (q
2,q3) q1 q4 q2 q4 indistinguishable
9
0,1
Catatan
Prosedur
: jumlah
Reduksipasangan
DFA seluruhnya :
5! 2!3!
5
C 2 10
0,1
0,1 1 0
q0
q123
10
q4
PERTEMUAN IV
Ekuivalensi NFA-DFA
Ada
0,1 0
q0
q1
1
0,q1}
{q
0,q1} {q
0,q1
0,q1
11
1 10,1
} {q
}0
}1
{q0
1
{}
{q0,q1
p r p,r
q0
qp1 q
12
}ppr
{q
r0 {q
,q2} {q
}{ } p,r
pr
{q2
p,r
q0
b
q
q
1
bb
q3
q4
Def 1. -move adalah suatu transisi antara 2 status tanpa adanya input. Contoh gambar :
transisi antara status q1 ke q 3
Def 2. -closure adalah himpunan state yang dapat dicapai dari suatu state tanpa adanya
input. Contoh gambar :
-closure(q0) = [q0,q1,q3]
-closure(q1) = [q1,q3]
-closure(q3) = [q3]
Ekuivalensi NFA dengan -move ke NFA tanpa -move 1.
Buat tabel transisi NFA dengan -move
2. Tentukan -closure setiap state 3. Carilah fungsi transisi
/tabel transisi yang baru, rumus :
(state,input)=-closure((-closure(state,input)) 4. Tentukan state akhir ditambah
dengan state yang -closure nya menuju state akhir,
rumusnya
13
F = F {q | (-closure(q) F } Contoh
q0
q1
ab
q2
q3
Tabel transisi-nya
01q
0 q
q1
2q
2 q
3
-closure dari FSA tersebut
-closure(q0) = [q0,q1]
-closure(q1) = [q1]
-closure(q2) = [q2]
= [qbaru
] Cari tabel
-closure(q
transisi3)yang
() :
3
a b q
0 -cl((-cl(q
}q
1 -cl((-cl(q
}q
2 -cl((-cl(q
q
3 -cl((-cl(q
14
3q
0),a))
-cl(({q 0,q1},a))
) {q 2
-cl(q
2}
1),a))
-cl(({q 1},a))
)-cl(q
{q 2
2}
2),a))
},a))
-cl(({q 3
-cl()
3),a))
-cl(({q 3},a))
-cl()
-cl((-cl(q0),b))
-cl(({q0,q1},b))
) {q 3
-cl(q
3
-cl((-cl(q1),b))
-cl(({q1},b))
)-cl(q
{q 3
3
-cl((-cl(q2),b))
-cl(({q2},b))
-cl()
-cl((-cl(q3),b))
-cl(({q3},b))
-cl()
Hasilnya menjadi
a
q0
q1
bq
a
b
q2
Penggabungan FSA
Bila
adalah
diketahui
bahasa Lyang
diterima oleh M1 dan L2 adalah bahasa yang diterima oleh M2
1
maka 1. FSA M3 yang dapat menerima L
1+L2 dibuat dengan cara
Tambahkan state awal untuk M3, hubungkan dengan state awal M1 dan state awal
M2 menggunakan transisi
Tambahkan state akhir untuk M3, hubungkan dengan state-state akhir M1 dan
state-state akhir M2 menggunakan transisi
2. FSA M4 yang dapat menerima L 1L 2 dibuat dengan cara
State awal M1 menjadi state awal M4
State-state akhir M2 menjadi state-state akhir M4
Hubungkan state-state akhir M1 dengan state awal M2 menggunakan transisi
Contoh FSA M1 dan M2
0
1
qA0
qA1
110
qB0
FSA M3
15
qB1
0
1
qA0
qA1
qS
110
qB0
qF
qB1
FSA M4
01q
qA0
110
A1
16
qB0
qB1
PERTEMUAN V
Ekspressi reguler
Bahasa
Bahasa Reguler
Apabila r adalah RE, maka L(r) adalah bahasa reguler yang dibentuk
menggunakan ekspressi reguler r. Contoh
Tentukan bahasa reguler yang dibentuk oleh r=(aa)*
Jawab L(r) = L( (aa)* )
=
{
,
a a ,
2n
a| n a 0a } am e ,n y a t a k a n h i m p u n a n s t r i n g a
da e nag a na j u am l aah gae n a, p Te. n t .u k a. n b a h}a s a
r=e g u l e r y {a n g d iab e n t u k o l e h r = ( a a * ) ( b b ) * b
Jawab L(r) = L( (aa)* (bb)*b )
{ a 0 }
| =n,m
17
2n
b2m+1
18
jika
maka
w h(w)
= a1 a=2 ...
h(aan
) ... h(a
) Jika L adalah bahasa
maka
homomorphic
1) h(a2pada
n
image bahasa L adalah h(L)=
{ h(w) | wL}
Contoh
Dimisalkan = {a,b} dan = {a,b,c} dan didefinisikan h(a) = ab dan h(b) =bbc
homomorphic image bahasa L = {aa,aba } adalah h(L)= { abab, abbbcab}
Dimisalkan = {a,b} dan = {b,c,d} dan didefinisikan h(a) = dbcc dan h(b)
=bdc homomorphic image bahasa L(r) yang dibentuk dari ekspresi reguler r =
(a+b*)(aa)* adalah h(L(r)) yang dibentuk dengan ekspresi reguler r = (dbcc +
(bdc)*) (dbccdbcc)*
Hubungan RE dan NFA
Setiap RE ada satu NFA dengan -move yang ekuivalen
Konversi ekspresi reguler ke FSA
Ekspresi FSA
q
a
q0=qf
qf
q0
aq
r+t
q0
sR
fR
qf
sT
19
fT
rt
q0
qf
sR
RT
fR
sT
fT
r*
q
0
sR
20
f
R
qf
A x
dengan A, B N dan x T* Suatu tatabahasa G (T,N,S,P) disebut linier kiri jika seluruh
aturan produksinya berbentuk
A Bx
A x
dengan A, B N dan x T* Tatabahasa reguler bila bersifat
linier kiri atau linier kanan. Contoh 1
Tatabahasa G = {{S} , {a,b}, S , P } dengan aturan produksi P adalah S abS |a adalah
tatabahasa linier kanan /reguler Tatabahasa G = {{S, S
} , {a,b}, S , P } dengan
produksi P adalah S S
1,Saturan
2
ab
S
S2 S
a adalah tatabahasa
linier kiri 1/reguler
S 1ab |Tatabahasa
G2 = {{S, A, B} , {a,b}, S ,
1
P } dengan aturan produksi P adalah
S A A aB | B Ab adalah bukan
tatabahasa reguler
Konversi DFA ke tatabahasa linier
Setiap DFA dapat diubah menjadi tatabahasa yang memiliki aturan produksi yang linier.
Aturan pengubahan ini adalah sebagai berikut :
setiap transisi status (A,a)=B diubah menjadi aturan produksi A aB
setiap status akhir P diubah menjadi aturan produksi P
Contoh
FSA berikut
q0
q1
ab
q2
q3
21
S S
S1SaS
2 bS
S3
2
3
V0
abaV
Vf
PR / Latihan buku firrar bab 6 nomor 2,3,4,5 Pertanyaan mendasar tentang bahasa reguler
1. Apakah terdapat suatu algoritma untuk menentukan diterima atau tidaknya suatu suatu
string pada bahasa L ? Jawab : YA, dengan menggunakan FSA. 2. Apakah terdapat suatu
algoritma untuk menentukan suatu bahasa reguler kosong, finite atau infinite ? Jawab : YA
dengan
DFA, jika terdapat lintasan dari simpul start ke simpul Final, maka
bahasa tersebut tidak kosong.
Cari simpul simpul yang membentuk siklus. Jika terdapat lintasan dari simpul start ke
simpul Final yang melalui simpul yang membentuk siklus, maka bahasa tersebut infinite.
Jika tidak, maka bahasa tersebut finite.
Penerapan ekspresi reguler
Digunakan untuk memerinci unit-unit leksikal sebuah bahasa pemrograman
(token).
22
q0
0 101qq
q4
q2
Ambil
n maka
bisa menulis
w=uvx
sedemikian
sehingga uvi
xsama
L dengan
untuk semua
i kita
0. dengan
|v|1 dan
|uv|n
.
Notasi matematisnya
23
L n z z L z n
Penjelasan
Mengidentifikasi sifat yang harus dimiliki oleh suatu bahasa reguler.
Cara untuk menentukan apakah sebuah bahasa tidak reguler
Untuk memperlihatkan bahwa suatu bahasa infinite tidak reguler, maka kita tunjukkan
bahwa untuk nilai n yang cukup besar, sekurang-kurangnya satu untai yang panjangnya n
atau lebih besar gagal untuk dapat dipompa. Contoh :
L =| {a i i^2 1 }
1 4 9 16
,{...}a {a , aaaa , aaaaaaaaa
, a ,a , a , aaaaaaaaaaaaaaaa, ... } Suatu string dalam L harus
mempunyai panjang yang berupa nilai kuadrat (1,4,9,16, ..., n
, 2...) Misal bahwa L adalah bahasa
reguler.
n^2
Perhatikan
bahwa
terdapat
sebuah
nilai
n sedemikian
L, Menurut
pumping
lemma
dapat
kita
tuliskan a sehingga a
n^2
=uvx, sedemikian hingga
1 |v| n
i
w L) karena
(i) (uv
|v|1 maka
jelas
bahwa
2
2
w|<
|uvw|<|uv
... ambil i=2 maka
w|<|uv
kita
dapatkan
n2 = |uvw| < |uv2 w| n2 + n < (n+1)2
Jelas n
Panjang2|uv
< |uv2w| < (n+1) 2
2
w| bukan merupakan
kuadrat sempurna, karena berada diantara 2 nilai kuadrat
sempurna yang berurutan.
2
berarti
w
L uv
Jadi
disimpulkan
bahwa bahasa
L = {a reguler.i^2
| i1}
bukan merupakan
24
PERTEMUAN VII
FSA dengan Output
FSA : accepter, dapat menerima atau tidak. FSA
dengan output : transducer 1. Mesin Moore :output
berasosiasi dengan state 2. Mesin Mealy :output
berasosiasi dengan transisi Mesin Moore
M = (Q,,,S,, ) Q :
himpunan state
: himpunan simbol input
: fungsi transisi S :
state awal S Q
: himpunan output
: fungsi output untuk setiap state Contoh mesin moore untuk memperoleh
modulus 3 pada suatu bilangan biner:
M = (Q,,,S,, )
Q : q0,q1,q2
: [0,1]
S : q0
: [0,1,2]
(q 0) =0
(q 1) =1
) =2 Prinsip:
(q 2 jika i diikuti dengan 0, maka
hasilnya 2i 101
= 2*5
1010
jika i diikuti2 dengan 1, maka
2 =5=10
hasilnya 2i+1 101
= 2*5+12=5
=111011
jika i/3 mempunyai
sisa p, maka untuk input berikutnya bernilai
2
0 maka 2i/3 mempunyai sisa 2p mod 3 untuk p=0 maka 2p mod 3 = 0 untuk
p=1 maka 2p mod 3 = 2 untuk p=2 maka 2p mod 3 = 1 jika i/3 mempunyai sisa
p, maka untuk input berikutnya bernilai 1 maka (2i+1)/3 mempunyai sisa
(2p+1) mod 3 untuk p=0 maka (2p+1) mod 3 = 1 untuk p=1 maka (2p+1) mod
3 = 0 untuk p=2 maka (2p+1) mod 3 = 2 Sehingga didapat mesin FSA sbb :
25
/2 0 1
q0/0 1 0 0 /q1 1 q
Contoh :
/2 , 5 mod
input
5 (101
3 2=) ,2state
inputterakhir
10 (1010q2
/1 , 10 mod 3 =2)1, Mesin
state terakhir
Mealy q1
M = (Q,,,S,, ) Q :
himpunan state
: himpunan simbol input
: fungsi transisi S :
state awal S Q
: himpunan output
: fungsi output untuk setiap transisi Contoh mesin
Mealy untuk mendeteksi ekspresi reguler (0+1)*(00+11)
Jawab
M = (Q,,,S,, )
Q : q0,q1,q2
: [0,1]
S : q0
: [0,1,2]
(q 0,0) =T
(q 0,1) =T
(q 1,0) =Y
(q 1,1) =T
(q 2,0) =T
,1) =Y (q 2
26
0/Y
q1
0/T
q0
1/T 0/T
1/T q
1/Y
Ekuivalensi mesin Moore dengan mesin Mealy
Mesin Moore ke mesin Mealy Jml state = jml
state sebelum * jml output
11
q0T 0 0q
0
q0Y 0 q
Tq
0101
Yq
Mesin
27
0/0 1/2
q0
1/1
1/0 0/2
q 0/11q
Contoh kasus
Tentukan
FSA dari rangkaian sirkuit berikut ini. Asumsi bahwa terdapat waktu yang
cukup untuk perambatan sinyal menuju kondisi yang stabil.
y1
F y2
input x
Kelereng
28
AB
X1 X2 X3
Latihan : buku Firrar bab 7 PR. Buatlah mesin Mealy dan Moore untuk
proses membaca input (0+1)* :
Jika
29
kiri dari aturan produksi terdiri dari SATU simbol non terminal
kanan dapat berupa string yang dibentuk dari simbol terminal dan non terminal
Contoh
Ruas
30
BBb | Menspesifikasikan
bahasa
2n m
{a Leftmost
b derivation untuk
| L(G)
n0 ,=m0}
menghasilkan string aab
S AB aaAB aaB aaBb aab Righmost
derivation untuk menghasilkan string aab
S AB ABb aaABb aaAb aab Contoh 2
G=({A,B,S}, {a,b},S,P} dengan aturan produksi P :
S aAB
AbBb BA
|
Leftmost derivation untuk menghasilkan string abbbb
S aAB abBbB abAbB abbBbbB
abbbbB
abbbb
Righmost derivation untuk menghasilkan string aab S
aAB aA abBb abAb abbBbb abbbb
Pohon urai Untuk menampilkan penguraian, dapat dilakukan dengan membentuk pohon
urai (sayangnya, urutan penguraian tidak terlihat) . Contoh pohon urai pada contoh
sebelumnya :
S a bBb BA
bBb A
31
SS
bSa S
bSa S
bSa
bSa
32
L n z z L z n
z1u v w
x,y ,
u,v ,w
x y v w x n vx
i u iv w i x y
L
S uAy A
vAx A w
maka aturan derivasinya S uAy uwy S uAy
uvAxy uvwxy S uAy uvAxy uvvAxxy
uvvwxxy sehingga untuk setiap i 0 , uv
y L
wxi
awaldigunakan
baru S untuk memilih salah satu simbol awal S 1 atau S2
Sdari
Ssimbol
1|S2 yang
G3 = (N1N 2{S},T 1T 2 ,S,P 1P 2 {SS 1|S2}}
Penyambungan dua CFL merupakan CFL juga Jika
diketahui
buah CFG Gbahasa L 1= (N1,T1,S1,P1) dan G2=(N2,T2 ,S2,P2
) yangdua
menghasilkan
dapat dibentuk oleh : G1 dan L2 , maka bahasa L1L 2
S 1S2}}
4 = (N1N 2{S},T 1T 2 ,S,P 1P 2 {S
Klosure Kleene dari CFL adalah CFL juga.
Klosure
KleeneGdari tatabahasa G=(N,T,S
,P) adalah
1
S 5| = }(N
) Latihan
{S} , T
G(L
, S , P {S S 1
) = (1{S , A , B}, {a,b} , S , P ) dengan P : S AB
| A aB
33
B Sb G(L
) = (2{S , A , B}, {a,b} , S , P ) dengan P : S
aaB A bBb | B aA
Bagaimanakah : a.
G(L G(L
)CFG
b. CFG
1 L 2
) c. CFG G(L
1L 2
1*
)
Bahasa bebas konteks tertutup terhadap substitusi
Contoh
n n
R
L| aw={0
1 | n}1
= { ww
(0+2)*
dihasilkan
} dan L boleh
tatabahasa
G
d
e
n
g
a an
a1 | 01t serta
tatabahasa
0S r a a G n
au
p
r
o
d 2 dengan
u
k aturan
s produksi
i
S
Sb 0S b0 | tatabahasa
2Sb
2 | Didefinisikan
G dengan aturan
produksi
S aSbS | bSaS | jika f adalah
maka f(L)f(a)=
adalah
dihasilkan
f(b) = Loleh
tatabahasa dengan aturan
b
substitusi
L bahasa yanga dan
produksi
SS S|
a SSSbS | SbSSa
a 0S a1 | 01
Sb 0S b0Bebas
| 2Sb Konteks dan Bahasa
2 | Tatabahasa
Pemrograman
Tatabahasa bebas konteks digunakan untuk mendefinisikan sintaks bahasa
pemrograman
Menggunakan notasi BNF (Backus-Naur Form)
variabel / non terminal : <...>
terminal : tanpa tanda
diganti dengan ::=
Contoh statemen if then else <
if_statement> ::= if <expression>
<then_clause> <else_clause>
34
PERTEMUAN IX
PENYEDERHANAAN TATA BAHASA
BEBAS KONTEKS
Tujuan
Melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki
kerumitan yang tidak perlu atau aturan produksi yang tidak berarti. Contoh 1: S AB | a Aa
A t u r a n p r o d u k s i S AB t i d a k b e r a r t i k a r e n a B t i d a k m e m i l i k i
p e n u r u n a n C o n t o h 2 : S A AB B C C D D a | A
Memiliki
35
36
37
PRINSIP
Setiap kali melakukan penyederhanaan diperiksa lagi aturan produksi yang tersisa,
apakah semua produksi yang useless sudah hilang.
Penghilangan Produksi Unit
Produksi dimana ruas kiri dan kanan aturan produksi hanya berupa satu simbol variabel,
misalkan: A B, C D.
Keberadaannya membuat tata bahasa memiliki kerumitan yang tak perlu.
Penyederhanaan dilakukan dengan melakukan penggantian aturan produksi unit. Contoh: S
Sb S C C D C ef D dd Dilakukan penggantian berturutan mulai dari aturan produksi yang
paling dekat menuju ke penurunan terminal-terminal (=> dibaca menjadi):
C D => C dd
S C => S dd | ef Sehingga aturan produksi setelah
penyederhanaan: S Sb S dd | ef C dd C ef C dd
Contoh lain: S A S Aa A B B C B b C D C ab D
b Penggantian yang dilakukan :
38
C
B
A
S
D => C b
C => B b | ab, karena B b sudah ada, maka cukup dituliskan B ab
B => A ab | b
A => ab | b
D E menjadi D gh
C C , kita hapus
S D menjadi S gh | SABC Sehingga aturan
produksi setelah penyederhanaan: S Cba | gh | SABC
A bbC B Sc | ddd C eA | f D gh | SABC E gh
Penghilangan Produksi e
Produksi e adalah produksi dalam bentuk
a e atau bisa dianggap sebagai produksi kosong ( empty ). Penghilangan produksi e
dilakukan dengan melakukan penggantian produksi yang memuat variabel yang bisa menuju
produksi e, atau biasa disebut nullable.
Prinsip penggantiannya bisa dilihat kasus berikut: S bcAd A e A nullable serta A e satusatunya produksi dari A, maka variabel A bisa ditiadakan, hasil penyederhanaan tata bahasa
bebas konteks menjadi: S bcd Tetapi bila kasusnya:
39
A aCa => A aa
B bA => B bA | b
B BB => B BB | B
A abB => A abB | ab
S AB => S AB | A | B | e
C e, B e, A e dihapus *Perhatikan untuk penggantian S AB kita tetap mempertahankan
S e, karena S merupakan simbol awal. Ini merupakan satu-satunya perkecualian produksi e
yang tidak dihapus, yaitu produksi e yang dihasilkan oleh simbol awal. Hasil akhir dari
penyederhanaan: S AB | A | B | e A abB | ab | aa B bA | b | BB | B Contoh tata bahasa bebas
konteks: S aAb A aAb | e Hasil penyederhanaan: S aAb | ab A aAb | ab Contoh tata bahasa
bebas konteks: S ABaC A BC B b | e C D | e D d Hasil penyederhanaan: S ABaC | BaC |
AaC | ABa | aC | Aa | Ba | a A B | C | BC B b C D D d
41
Prakteknya ketiga penyederhanaan tersebut dilakukan bersama pada suatu tata bahasa bebas
konteks, yang nantinya menyiapkan tata bahasa bebas konteks tersebut untuk diubah kedalam
suatu bentuk normal Chomsky. Urutan penghapusan aturan produksi : 1) Hilangkan produksi
e 2) Hilangkan produksi unit 3) Hilangkan produksi useless Contoh : S AA | C | bd A Bb |
e B AB | d C de Hilangkan produksi e, sehingga menjadi: S A | AA | C | bd A Bb B B |
AB | d C de Selanjutnya penghilangan produksi unit menjadi: S Bb | AA | de | bd A Bb B
AB | d C de Penghilangan produksi unit bisa menghasilkan produksi useless. Terakhir
dilakukan penghilangan produksi useless: S Bb | AA | de | bd A Bb B AB | d Hasil akhir
aturan produksi tidak lagi memiliki produksi e, produksi unit, maupun produksi useless.
42
PERTEMUAN X BENTUK
NORMAL CHOMSKY
Pengertian Bentuk Normal Chomsky
Bentuk normal Chomsky / Chomsky Normal Form (CNF) merupakan salah satu bentuk
normal yang sangat berguna untuk tata bahasa bebas konteks ( CFG ). Bentuk normal
Chomsky dapat dibuat dari sebuah tata bahasa bebas konteks yang telah mengalami
penyederhanaan yaitu penghilangan produksi useless, unit, dan e. Dengan kata lain, suatu
tata bahasa bebas konteks dapat dibuat menjadi bentuk normal Chomsky
dengan syarat tata bahasa bebas kontesk tersebut:
Tidak memiliki produksi useless
Tidak memiliki produksi unit
Tidak memiliki produksi e Aturan produksi dalam bentuk normal Chomsky ruas
kanannya tepat berupa sebuah terminal atau dua variabel. Misalkan: A BC A b B a C
BA | d
43
Biarkan yg
sudah CNF
CFG yang
sudah
disederhanakan
Penggantian simbol
terminal pada a.p,
dg ruas kanan > 1
Buat
bilavariabel
perlu CNF
dan a.p, baru
Penggantian a.p,
dengan simbol
variabel > 2
44
A aB bS P
A S P1
BA P2
1P 3
SABP P 2
B P 2P4
SP 1
b1 P
aP
2
AA
P
3
BB Contoh, tata bahasa bebas konteks: S4 aB | CA A a | bc B
BC | Ab C aB | b Aturan produksi yang sudah dalam bentuk
normal Chomsky :
S aB => S P
B A bc => S P 1
B Ab => B A P 2P3
C aB => C P
2
B Terbentuk aturan1 produksi dan simbol variabel baru:
P
a1 P
b2 P
c3 Hasil akhir aturan produksi dalam bentuk normal
Chomsky :
S CA A a
B BC
45
C bS P
BS P1
B A P2P3
C P
2
BP 1
a1 P
b2 P
c Contoh, tata bahasa bebas konteks : S aAB
| ch | CD A dbE
3
| eEC B ff | DD C ADB | aS D i E jD Aturan produksi yang
sudah dalam bentuk normal Chomsky :
1P 2
SAchdbE
=> =>
S PA P 3P4
A eEC => A P
5P 6
B ff => B P
8P9
10P10
CC ADB
aS =>=>
C CP AP
11
S E jD => E P 1
D Terbentuk aturan
12 produksi baru:
P
a1 P
AB
2 P
c3 P
h4 P
d5 P
E6PP 7
b7 P
e8 P
9 EC
46
Pf10P
DB
11 P
j 12Hasil akhir dalam bentuk normal Chomsky:
S CD B DD D i S P
1P 2
SA PP 3P4
A P 5P6
B P 8P9
C AP10P10
C P 11
SE P 1
D P 12
a 1P
2AB P
c3 P
h4 P
d P5
E
6 P 7
b7 P
e8P
EC
P
9
f P10
DB P
11
j Algoritma CYK untuk Tata Bahasa
Algoritma CYK
12 Bebas Konteks
merupakan algoritma parsing dan keanggotaan ( membership) untuk tata
bahasa bebas konteks. Algortima ini diciptakan oleh J. Cocke, DH. Younger,
dan T. Kasami. Syarat untuk penggunaan algortima ini adalah tata bahasa
harus berada dalam bentuk normal Chomsky . Obyektif dari algortima ini
adalah untuk menunjukkan apakah suatu string dapat diperoleh dari suatu
tata bahasa. Algoritma CYK sebagai berikut:
47
4)
for i:= 1 to (n-j+1) do
begin 5)
V
:=; 6)
forijk:=1 to (j 1) do
7 ) ( A | A
} end end
BC Vadalah
ij := Vijsuatu produksi, dimana B di V
ik dan C di Vi+k,j-k
Penjelasan:
n = panjang untai yang akan diperiksa, missal : untuk untai ada, n = | ada | =3
i akan menyatakan kolom kej akan menyatakan baris ketahapan no (1) dan (2) untuk mengisi table baris pertama kolom 1 n
no (3), interasi dari baris ke- 2 sampai n
no (4), interasi untuk mengisi kolom 1 sampai ( n baris + 1) pada suatu baris.
no (5) inisialisasi V
ij dengan
no (6) dan no (7), interasi untuk memeriksa mana saja yang menjadi anggota V
ij
Kita lihat contoh kasus, dimana terdapat tata bahasa bebas konteks ( simbol awal S ): S
AB | BC A BA | a B CC | b C AB | a Periksalah apakah untai baaba termasuk kedalam
bahasa tersebut
b
u
ij
( V kolom,baris
a
t
b
1
1
a
:
a
2
3
5
Tabel diatas kita gunakan unruk mempermudah kita dalam menyelesaikan persoalan, i
akan menyatakan kolom, j akan menyatakan baris. Kita ketahui n = 5. Dari Algoritma
langkah (1) dan (2) kita bisa mengisi baris pertama pada tabel, sebagai berikut:
48
Untuk V
11 , kita periksa variabel yang bisa menurunkan b, dari B b kita isi
V11 = {B}
Untuk
, kita
V periksa
variabel yang bisa menurunkan a, dari A a dan C a kita isi V
21
21{A,C}
, kita
varibel yang bisa menurunkan a, dari A a dan C a kita isi V
Untuk
V periksa
31
31={A,C}
Untuk V
41 , kita periksa variabel yang bisa menurunkan b, dari B b kita isi
V41 ={B}
, kita
variabel yang bisa menurunkana, dari A a dan C A kita isi V
Untuk
V periksa
51
={A,C}
51
Dari hasil tersebut kita bisa tabel :
b
i
4
A
3
5
1
5
C
1
B
2
B
A
3
A
C
C
2
Selanjutnya kita akan mengisi baris ke-2 sampai n sebagai berikut Pada
baris ke -2 ( k =1 )
, yaitu
B-A,C,
variabel
Vik- yang
Vi+k,
bisa
, berarti V 11-V
BA
Untuk
V
12 , periksa
j-kmenurunkan
21 atau BC adalah S dan A, maka
V
12 kita isi {S, A}
Untuk
, yaitu
V A,C-A,C,
variabel
Vik Vyang
menurunkan
V 21-V 31
AA, AC, CA, atau CC adalah B
22 , periksa
i+k , bisa
j-k, berarti
maka V
22 kita isi {B}
C-B,
periksa
variabel
Vik -V
yang
berarti V31 -VAB
Untuk yaitu
V A,32,
i+k,bisa
j-k , menurunkan
41 atau CB adalah S dan C, maka
V
12 kita isi {S, C}
,
yaitu
A,C-B,
,
periksa
variabel
V
yang
,
bisa
berarti
menurunkan
V
V
AB
atau
CB adalah S dan C, maka
Untuk V
42
ik-Vi+k j-k
41- 51
kita isi V
{S,A} Dari hasil tersebut kita bisa mengisi tabel:12
b
1
A
2
S
5
49
,
,
a
2
C
S
A
a
3
A
A
b
4
,
C
B
5
B
S
1
,
A
C
B
,
C
4
i
S , C
1 2
S , A
3
3
5 1 B
B B
A , C
A , C
4
5
Pada baris ke 4 ( k = 1 sampai 3):
Untuk
, periksa
Vik-&V-B,
berarti V
& menurunkan
V12-V32 & VBB,
yaituVB-B14&
S,A-S,C
yang
bisa
SS, SC, AS AC
i+k, j-k,variabel
11- V23
13- V41,
adalah tidak ada, maka V
14 kita isi
Untuk
yaituVA,C-B
& B-S,A
Vik-&VB-S,A
& B-A,C,
V21-variabel
V33 & Vyang
&V
menurunkan
AC, AB,
24, periksa
i+k, j-k, berarti
22-V 42bisa
23- V51,
BS, BA, BC adalah S, C, A, maka V
kita isi {S,A,C} Dari hasil tersbut24kita bisa mengisi
tabel:
b a a b a
A , C 2 S , A
4
5
i
S , C
1 2
S , A
3
3
5 1 B
B B
A , C
A , C
i
S , C
1 2
S , A
3
3
4 5 1 B
B B
A , C
A , C
S
,
A
,
C
Perhatikan
5 , syarat suatu untai dapat
S diturunkan
, dari simbol
A awal, V1n
, memuat simbol
C
awal. Terlihat pada tabel, simbol awal S termuat di V
, m a k a u n t a i b a a b a d a p a t d i t u r u n k a n o l e h t a15t a b a h a s a t e r s e b u t .
Kita bisa mencoba-coba untuk membuat pohon penurunan dari untai
baaba, Kita lihat untuk contoh lain, terdapat tata bahasa bebas
konteks:
S AB | b A B A | a B AS | b
Periksalah apakah
untai aaab termasuk ke dalam bahasa tersebut Pertama-tama kita
akan membuat tabel untuk V
ij
a
1
b
2
3
2
Kita ketahui n = 4. Dari algoritma langkah (1) dan(2) kita bisa mengisi baris pertama
pada tabel, sebagai berikut:
Untuk V 11, kita periksa variabel yang bisa menurunkan a, dari A a kita isi V
= {A}
Untuk V 21, kita periksa variabel yang bisa menurunkan a, dari A a kita isi V
= {A}
Untuk V 31, kita periksa variabel yang bisa menurunkan a, dari A a kita isi V
= {A}
Untuk
, kitaVperiksa
variabel yang bisa menurunkan b, dari B b dan S b kita isi V
41
= {S,B}
41
51
11
21
31
1
A
j
4
2
S
a
,
3
B
4
2
A
3
12
Untuk
,yaitu
V A-A,
variabelVyang
bisaj-kmenurunkan
, berarti V 21AA
V31adalah tidak ada, maka V
22, periksa
ik-V i+k,
22 kita isi
Untuk
V A,S-B,
,yaitu
variabel
V ik-yang
Vi+k,bisa
menurunkan
V 31-VAS
32, periksa
j-k, berarti
41 atau AB adalah S dan B, maka V
32 kita isi {S,B}
Dari hasil tersebut kita bisa mengisi tabel:
a a a b
1 2 3 4 1 A A A S,B 2 S,B
j
3
4
Pada baris ke 3 (k = 1 sampai 2)
Untuk
V A-
periksa
V 11- V22 & V 12V31 tidak ada, maka V
, yaitu
-A, V
variabel
bisa menurunkannya
adalah
13, &
ik-Vi+k,yang
j-k, berarti
13 kita isi
Untuk
V A-SB
V ikVi+k, j-kyang
, berarti
V41atau AB adalah S dan B,
, yaitu
& -SB,
variabel
bisaVmenurunkan
AS
23, periksa
21-V 32 & V 22kita isi maka
{S,B}VDari hasil tersebut kita bisa mengisi tabel:
23
a a a b
1 2 3 4 1 A A A S,B 2 S,B
j
3
52
a a a b
1 2 3 4 1 A A A S,B 2 S,B
j
3 S,B 4 S,B
Terlihat pada tabel, simbol awal S termuat di V
, maka untai aaab dapat diturunkan oleh tata bahasa tersebut.
14
SA
BBA
CC
B B AB a
ab
53
PERTEMUAN XI PENGHILANGAN
REKURSIF KIRI
Aturan Produksi Rekursif
Aturan P roduks i ya ng rekurs if me mi lk i ruas kanan (has i l
produksi) yang memuat simbol variabel pada ruas kiri. Sebuah aturan
produksi dalam bentuk: A A merupakan aturan produksi yang
rekursif kanan
=(VT)* atau kumpulan simbol variabel dan terminal Contoh aturan produksi yang
rekursif kanan: S dS B adB Produksi dalam bentuk: A A Merupakan aturan produksi
yang rekursif kiri, contohnya: S Sd B Bad Produksi yang rekursif kanan menyebabkan
pohon penurunan tumbuh ke kanan, sebaliknya Produksi yang rekursif kiri menyebabkan
pohon penurunan tumbuh ke kiri. Bisa dilihat pohon penurunanpada gambar 11.1 dari tata
bahasa bebas konteks dengan aturan produksi: S aAc A Ab | e
54
a Ac
Ab AbAb
Gam bar 11.1 Pohon penur unan sebuah CFG yang rekursif kir i
Dala m
ban yak penerapan tata bahasa, rekursif kiri tak diinginkan. Untuk
menghindari penurunan ya ng bis a mengakibatkan loop kita perlu
menghilangkan s ifat rekurs if kiri dari aturan produksi. Penghilangan
rekursif kiri dis ini me mungkinkan s uatu tata bahas a bebas konteks nantin ya
diubah ke dalam bentuk norm al Greibach.
Tahapan Penghilangan Rekursif Kiri
L a n g k a h l a n g k a h
p Pisahkan
e n aturan
g h produksi
i l a yang
n rekursif
g a nkiri dan yang tidak, misal:
Aturan
kiri:
r e kproduksi
u r yang
s irekursif
f
k iA Aa
r i :
A t u r a n p r o d u k 1s| iAay2 a| Aa
n g3 | t.......
i d aAa
k n
rekursif kiri (termasuk produksi e): A
| 2 | 3 | ........ m
Daridari
situsetiap
kita bisa
aturan
tentukan
produksi
a yang
dan 1,ruas
2, kiri
.... yang
sama
1, a memiliki
2, .... a n, simbol
m
Lakukan penggantian aturan produksi yang rekursif kiri, menjadi sebagai berikut: 1) A
Z 2) Z a1Z | 2Z | .... m
3) Z a 1 | a 2 | a 3 | .... an
Z
1Z | a 2Z | a 3Z | .... a n
55
Penggantian diatas dilakukan untuk setiap aturan produksi dengan simbol ruas kiri yang
sama.
Bisa muncul
simbol
variabelvariabel
baru Z yang menghasilkan
dan seterusnya,
sesuai
banyaknya
produksi yang rekursif
1, Z 2
kiri.
Hasil akhir berupa aturan produksi pengganti ditambah dengan aturan produksi semula
yang tidak rekursif kiri. Tahapan-tahapan tersebut bisa dilihat pada Gambar berikut
Aturan
produksi
CFG
mengan
d
Aturan
dki
Lakukan
penggantian
lk
56
| dd Z1 | ffZ 1
| bd Z1
CFG
bebas
di
S cAZ
1
ii.abZ| b iii.1 Z
Untuk yang
memiliki
1 abZ
1 | bZ1simbol ruas kiri A : A Aa,
digantikan oleh: i. A a Z
i.
ii. Z
a iii. Z
2
2
57
| bdZ2
aZ
S aAcZ
1 | cZ1 | Z 1
ii.a iii.
Z Z
1
Untuk yang1 memiliki
a Z 1 simbol ruas kiri A:
A Ab, digantikan oleh: i. A ba Z
i.
ii. Z
2
58
iii.
Hasil
Z akhir
setelah
penghilangan rekursif kiri adalah: S aAc |
2 bZ
2
c | e S aAcZ
| cZ1 | Z1
A ba A ba
ZZ
2
a Z1
1Za Z
1
b Z2
2 bZ 2
1
59
a: rangkaian simbol-simbol variabel (V*) Atau dengan kata lain, suatu tata
bahasa bebas konteks dalam bentuk normal Greibach bila hasil produksinya (ruas
kanan) diawali dengan satu simbol terminal, slanjutnya bisa diikuti oleh
rangkaian simbol variabel. Contoh tata bahasa bebas konteks dalam bentuk
bentuk normal Greibach:
S a | aAB A aB B cS Untuk dapat diubah ke dalam bentuk normaol Greibach, tata bahasa
semula haru memenuhi syarat:
Tentukan urutan simbol-simbol variabel yang ada dalam tata bahasa. Misalkan terdapat m
variabel dengan urutan A
1, A 2, ...., Am
2. Berdasarkan urutan simbol yang ditetapkan pada langkah (1) seluruh aturan produksi yang
ruas kanannya diawali dengan simbol variabel dapat dituliskan dalam bentuk A
1.
h A dimana
h <> i (rekrusif kiri sudah dihilangkan), bisa berupa simbol-simbol variabel
i
a. Jika h < i, aturan produksu ini sudah benar ( tidakperlu diubah)
60
b. Jika h > i, aturan produksi belum benar. Lakukan substitusi berulang-ulang terhadap A
pada produksi
ini dengan
Ai
ruas kanan produksi dari variabel A
i (ganti
) sehingga
suatu saat diperoleh produksi dalam bentuk A
i
(dimana
h A hp p ) i) Jika h = p , lakukan penghilangan rekursif kiri ii) Jika h < p, aturan
produksi sudah benar
3. Jika terjadi penghilangan rekursif kiri pada tahap (2b),
sejumlah simbol variabel baru yang muncul dari operasi ini dapat disisipkan pada urutan
variabelsemula dimana saja asalkan ditempatkan tidak sebelum A
(di kiri) 4. Setelah langkah (2) & (3) dikerjakan maka haturan-aturan produksi yang ruas
kanannya dimulai simbol variabel sudah berada dalam urutan yang benar
A x (Adi mana
x < y ) Produksi-produksi yang lain
y
ada dalam bentuk:
Aa x ( a = simbol terminal ) B
x(B
= simbol 2variabel baru yang akan muncul sebagai akibat dari operasi penghilangan rekursif
kiri ) 5. Bentuk normal Greibach diperoleh dengan cara melakukan substitusi mundur mulai
dari variabel A
, ..... Dengan cara ini aturan
A m-1 , A m-2
dalam bentuk A
m, lalu produksi
dapat diubah
sehinga
ruas kanannya dimulai dengan simbol terminal.
x A
y
6. Produksi dalam bentuk Bx juga dapat diubah dengan cara substitusi seperti pada
langkah (5) Contoh (tata bahasa bebas konteks sudah dalam bentuk normal Chomsky dan
memenuhi syarat untuk diubah ke bentuk normal Greibach), simbol awal adalah S: S CA A
a | d B b C DD D AB Kita tentukan urutan simbol variabel, misalnya S, A, B, C, D
(S<A<B<C<D). *Perhatikan urutan tersebut boleh anda tentukan sendiri, buatlah urutan
sedemikian sehingga memudahkan untuk proses selanjutnya Kita periksa aturan produksi
yang simbol pertama pada ruas kanan adalah simbol variabel, apakah sudah memenuhi
ketentuan urutan variabel:
61
Yang belum memenuhi urutan yang telah kita tentukan adalah: D AB, karena ruas kiri >
simbol pertama pada ruas kanan. Maka kita lakukan sibstitusi pada simbol variabel A, aturan
produksi menjadi: D aB | dB Setelah semua aturan produksi sudah memenuhi ketentuan
urutan variabel, kita lakukan substitusi mundur pada aturan produksi yang belum dalam
bentuk normal Greibach (=> dibaca menjadi):
62
C bCBZ1 | aZ
1
Z
1 ACB
Z lihat
Kita
seluruh hasil
produksi dari variabel C, sudah dalam bentuk normal Greibach: C
1 ACBZ
1
bCBZ
| bCB | a Setelah
1 | aZ1 semua aturan produksi sudah memenuhi ketentuan urutan variabel, kita
laukan substitusi mundur: B CA => B bCBZ
A | bCBA | aA A BC =>1A
A |bCBZ
aZ 1
AC | bCBAC | aAC | bC 1AC
Selanjutnya
| aZ1
lakukan pula substitusi pada aturan produksi dengan
variabel baru yang terbentuk (pada contoh ini Z
):
Z
1 ACB => Z
1 bCBZ 1ACCB | aZ1 ACCB | bCBACCB | aACCB | bCCB
Z | bCCBZ
ACBZ
=>
Z 1 bCBZ 1ACCBZ1 | aZ 1ACCBZ1 | bCBACCBZ 1 | aACCBZ 1
1
1
Hasil akhir 1aturan produksi dalam bentuk bentuk normal Greibach: A
bCBZ
AC | bCBAC
| aAC
| aZ|1 bC | B bCBZ
1AC
A | bCBA | aA
A
|
aZ
B
C
1
1 bCBZ
| bCB | a Z 1 | aZ1
ACCB
| bCBACCB
aACCB
| bCCB Z
1 bCBZ
1ACCB | aZ
1
1 bCBZ 1ACCBZ1 | aZ 1ACCBZ1 | bCBACCBZ1 | aACCBZ 1 | bCCBZ1
63