Dokumen tersebut membahas tentang teori otomata formal dan bahasa formal. Pembahasan dimulai dari definisi dasar seperti alfabet, kata, bahasa, operasi pada kata dan bahasa, bahasa reguler, ekspresi reguler, dan hierarki Chomsky. Dokumen ini juga membahas tentang sejarah teori otomata dan kontribusi ilmuwan seperti Turing, Chomsky, dll.
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
Ho automata
1. DAFTAR ISI
HAL
MODUL-00 : Prolog 1
MODUL-01 : Teori Himpunan 5
MODUL-02 : Operasi-Operasi Pada Untai 9
MODUL-03 : Finite State Automata ( FSA ) 20
MODUL-04 : Non Deterministic Finite Automata (NFA) 28
MODUL-05 : Kesetaraan NFA dan DFA 37
MODUL-06 : NFA Dengan ε – Move 44
MODUL-07 : Ekpresi Reguler 56
MODUL-08 : Aturan Produksi 73
MODUL-09 : FSA Dengan Output 80
MODUL-10 : Pohon Penurunan 88
1
2. MODUL-11 : Penyederhanaan CFG 94
MODUL-12 : Bentuk Normal Chomsky ( BNC ) 104
MODUL-13 : Penghilangan Rekursif Kiri 111
MODUL-14 : Bentuk Normal Greibach ( BNG ) 120
MODUL-15 : Push Down Automata ( PDA ) 132
DAFTAR PUSTAKA 173
2
3. 0.1.Latar Belakang, Tujuan FSA Dan ER
• Pemikiran Neural Network dan Switching Circuit
FSA.
• Tool dalam perancangan Leksikal Analyzer.
• Pengelompokan karakter dalam “ Token “.
• Penggunaan FSA dalam : Text editor, Pattern
Matching, sejumlah pemrosesan text dan
program file searching dan sebagai konsep
matematis untuk aplikasi di disiplin lain seperti
Logika.
3
4. DEFINISI-DEFINISI
1. Definisi 1: Teori adalah serangkaian bagian/ variabel,
definisi dan dalil yang saling berhubungan yang
menghadirkan sebuah pandangan sistematis mengenai
fenomena dengan menentukan hubungan antar
variabel, dengan maksud menjelaskan fenomena
alamnya.
2. Definisi 2 : Teori adalah seperangkat preposisi yang
terintegrasi secara siktaksis yang memiliki aturan-
aturan tertentu yang dapat dihubungkan secara logis
atau dengan lainnya dengan data-data yang diamati
dan berfungsi sebagai wahana untuk meramalkan dan
menjelaskan fenomena yang diamati ( L. Moeleong ).
4
5. 0.2. Pengertian Bahasa Dan Automata
• Bahasa : Adalah pengantar komunikasi baik lisan
maupun tulisan, antar satu atau banyak orang (
mahluk )/ alat dengan satu atau banyak orang
(mahluk) / alat
• Pengertian simbol yang didefinisikan secara formal.
• Pengertian string, string kosong dan panjang string.
• Pengertian Alphabet, huruf ( Letter ) dan angka
( Digit ).
• Pengertian Automata.
• Contoh : Misalkan sebuah mesin sederhana yang
dapat menerima input kata dalam bahasa Indonesia
yang dapat dilihat pada gambar berikut :
5
6. Pada gambar berikut, bila mesin mendapat input string
berikut :
1. ada : diterima
2. adu : diterima
3. add : ditolak
a
Start a d u
d
q0 q1 q2 q4
q3
q5
6
7. A pioneer of automata theory
Alan Turing (1912-1954)
1. Father of computer science
2. English logician
3. Propose Turing machine as a
mathematical model of computation
4. Codebreaker for German Enigma
machine in World War II.
5. Many other pioneering work, e.g.
Turing test
7
8. Historical perspective of Automata theory
1930 Turing machines (A. Turing)
1940 - 1950 Finite state automata (W. McCulloch, W. Pitts, S.
Kleene, etc.) Chomsky hierarchy (N. Chomsky)
1960 - 1970 Pushdown automata (A.G. Oettinger, M.P.
Schutzenberger) B¨uchi automata over ω-words
(J. R. B¨uchi) Rabin tree automata over ω-trees
(M. O. Rabin) Tree automata (J. E. Doner, J. W.
Thatcher, J. B. Wright, etc.)
1980 - 1990 ω-automata applied to formal verification (M.
Vardi, P. Wolper, O. Kupferman, etc.)
2000 - 2010 Automata over unranked trees applied to XML (A.
Bruggemann-Klein, M. Murata, D. Wood, F.
Neven, etc.) Visibly pushdown automata (R. Alur,
P. Madhusudan)
8
9. 0.3. Hirarki Chomsky
Definisi 3 : Tata Bahasa adalah sebagai kumpulan dari
himpunan-himpunan Variabel, Simbol-Simbol, Terminal,
Simbol Awal yang dibatasi oleh aturan produksi.
Tabel 1 : 4 Penggolongan bahasa (Hirarki Noam Chomsky)
Bahasa Mesin Otomata Batasan-Batasan Produksi
Reguler / tipe 3 FSA : DFA dan NFA α adalah sebuah simbol variabel
β mak memiliki sebuah simbol
var yg bila ada terletak di kanan
Bebas Konteks/
Context Free / tipe - 1
Push Down Otomata
(PDA)
α berupa simbol variabel
Context Sensitive /
tipe - 2
Linier Bounded
Automata
│α │ ≤ │β │
Unrestricted / Phase
Structure / Natural
Language / tipe - 0
Mesin Turing Tidak ada batasan
9
10. MODUL – 01
TEORI HIMPUNAN
• Definisi 4 : Alphabet (abjad) adalah himpunan berhingga
tak kosong dari simbol-simbol. Contoh :
Misalkan Σ = { a,b,c,d } ; a Є Σ , b Є Σ , s Є Σ .
• Definisi 5 : Kata (untai/ string) adalah barisan berhingga
simbol-simbol dari sebuah alphabet. Contoh :
Misalkan Σ adalah abjad, Σ = { e,f,g,h } maka efg adalah
kata dari Σ .
• Definisi 6 : Bahasa adalah kumpulan dari kata-kata.
Contoh : Σ adalah sebuah alphabet ; Σ = { a,b } , maka
{a,aa,b,bb,ab,ba,ε} adalah sebuah bhs berdasarkan Σ.
• Definisi 7 : Bahasa kosong adalah bhs yang tdk terdiri
dari untai-untai ; Notasi = Ø .
10
11. Definisi 8 : Bahasa Universal adalah bahasa yang terdiri
dari semua untai berdasarkan abjad Σ, Notasi Σ* . Contoh
Σ adalah sebuah abjad ; Σ = { 2 } , maka
Σ* = { ε,2,22,222, … } , dimana ε adalah untai kosong
{ ε } adalah bahasa yang terdiri dari untai kosong
“ Epsilon “ ε “ adalah lintasan yang sangat-sangat cepat
dan sangat-sangat kecil “.
Dalam sistem biner berlaku :
1. ε a = a ε = a untuk sistem perkalian dianggap bernilai
satu ( 1 ).
2. ε + b = b + ε = b untuk sistem perjumlahan dianggap
bernilai 0 ( nol ).
11
12. 1.1. Operasi-Operasi Pada Untai
1. Panjang ( length ) = banyaknya simbol pada untai.
Notasi : │w │ , dimana w merupakan untai dari Σ .
Contoh : Σ = { a,b,c } ; w = aba ,maka │w │ = 3 ;
│ε │= Ø
2. Concatenation ( perangkaian )
Misal u dan w adalah untai-untai, maka
concatenation u dgn w adalah untai yg diperoleh
dgn merekatkan untai u dan untai w. Contoh : u = “
Bani “ , w = “ Saleh “ , maka concatenation u dgn
w or u.w adalah
uw = “ Bani saleh “ , │uw │= │u │+ │w │
12
13. 3. Eksponensiasi ( Exponentiation )
Misal w sebuah kata berdasarkan Σ , maka
ε , jika n = 0
W n =
W n-1 , jika n > 0 ; n Є N
Contoh : Misalkan w = 21 berdasarkan Σ = { 1,2 } , maka
W 0 = ε , w1 = 21 , w2 = 21 , w3 = 2121 … dan seterusnya.
4. Sama Dengan ( Equal ).
Misal u dan w untai-untai, u dan w dikatakan sama jika
keduanya mempunyai panjang yang sama dan simbol-
simbol sama pada posisi yang sama. Notasi ; u = w.
5. Awalan ( prefix ) dan Akhiran ( suffix ).
Jika u dan w adalah kata-kata, maka u dikatakan
awalan dari w, jika untuk ssuatu kata/ untai y, maka ;
13
14. w = uy ; Contoh : w = abcd . u = ab adalah awalan dari w .
ε selalu merupakan awalan dari kata apa saja.
6. Sub untai atau sub string
Jika sebuah untai w adalah sub untai atau sub kata dari
z, jika untai x dan y Є Z = xwy.
7. Pembalikan ( Reversal ) atau Transpose.
Reversal dari suatu kata z merupakan bayangan cermin
dari Z. Notasi pembalikan dari W = WR
W jika W = ε
Definisi 9 : WR =
yRa jika W = ay untuk a Є Σ
dan y Є Σ * . Contoh : x adalah sebuah untai , X = 2314
XR = (2314)R = (314)R 2 = (14)R 32 = (4)R 132 = (ε) R
4132 = ε 4132 = 4132
14
15. Catatan : jika w dan y adalah untai-untai dan x = wy, maka
XR = (wy)R = yRwR
Contoh : w = abc dan x = wy ; y = de
XR = (abcde)R = edcba
(wy)R = yRwR = (de)R(abc)R = edcba
XR = (wy)R = y RwR
1.2 Operasi Pada Bahasa
1. Concatenation ( perangkaian )
Definisi 10 : A.B = AB = { xy │xЄA dan yЄB } . ab
merupakan bahasa.
2. Eksponensiasi
Misalkan A merupakan sebuah bahasa berdasarkan
suatu abjad Σ, maka dapat didefinisikan sebagai berikut
15
16. { ε } , jika n = 0
A n =
A.A n-1 , jika n ≥ 1
3. Gabuangan ( Union ).
A U B = { x │ xЄA atau xЄB }
4. Irisan ( Intersection ).
A ∩ B = { x │ xЄA dan xЄB }.
5. Sub bahasa
Jika A dan B adalah bahasa-bahasa berdasarkan abjad
Σ dan jika semua untai di A ada dalam B, maka A
adalah sub bahasa dari B. Notasi : A sub bahasa B
B = { bn │n = 0,1,2, …… } ; A sub bahasa B
Catatan : L adalah suatu bahasa berdasarkan abjad Σ,
maka L adalah sub bahasa dari Σ* atau L sub bahasa Σ*
16
17. 6. Equal ( sama dengan )
A = B jika hanya jika
a. A sub bahasa atau sama dengan B dan sebaliknya.
A. ( BUC ) = A.B U A.C
b. ( B∩C ).A = B.A U C.A
7. Selisih : A – B = { x │ xЄA atau xЄB }
8. Reversal Pembalikan dari sebuah bahasa A adalah :
AR = { xR │ xЄA }. Contoh :
Misalkan A = { saya, laki } , maka
AR = { ayas,ikal }
Teorema : ( A.B ) R = BR . AR
17
18. 1.3. Bahasa Reguler
Teorema : Untuk suatu abjad Σ , Σ* terhitung secara tak
hingga.
Definisi 111 : Misal Σ merupakan suatu abjad. Koleksi dari
bahasa reguler atas Σ, didefinisikan secara rekursif sbb :
a. Ø adalah bahasa reguler.
b. { ε } adalah bahasa reguler.
c. V a Є Σ , {a} adalah bahasa reguler.
jika A dan B adalah bahasa-bahasa reguler maka A U B,
A.B dan A* adalah bahasa-bahasa reguler.
Definisi 12 : Ekspresi-ekspresi reguler atas abjad
didefinisikan secara rekursif sebagai berikut :
a. Ø dan ε adalah ekspresi reguler.
b. V a Є Σ , a adalah ekspresi reguler.
18
19. c. Jika r dan s adalah ekspresi-ekspresi reguler , maka
r U s atau r + s , r . S dan r* adalah ekspresi reguler.
Contoh : Σ = {a,b } , Ø dan {ε} adalah bahasa reguler , Ø
dan {ε} adalah ekspresi reguler. {a} adalah bahasa
reguler dan a adalah ekspresi reguler. {a,b} adalah
bahasa reguler demikian pula {ab} adalah bahasa
reguler.
Catatan : Bahasa reguler terhadap Σ adalah bahaasa yang
mengandung semua himpunan bagian berhingga dari Σ*
dan tertutup terhadap gabungan, produk dan penutup .
Contoh : H1 = { w ; w mengandung dua huruf a atau b
berturut-turut } dan H2 = { w ; w = an b an ; n > 0 }
Apakah H1 dan H2 merupakan bahasa reguler ?
V ekspresi reguler r terhadap Σ membentuk suatu
himpunan bagian R dari Σ* dengan aturan rekursif sbb :
19
20. Jika r adalah ε, maka r hanya terdiri dari kata kosong saja.
R = {ε} ; jika r = Ø , maka R = Ø
Jika r = a , a Є Σ , maka R = { a }
Jika r1 dan r2 terhadap Σ membentuk R1 dan R2 , maka ;
1. Jika r = ( r1 + r2 ) , maka R = R1 U R2
2. Jika r = r1 r2 , maka R = R1 R2
3. Jika r = ( r1 ) * , maka R = ( R1 )*
Catatan : a + ba* menyatakan ( a + ( b (a)* ))
( a + ba )* a menyatakan (( a + (ba))* a )
aba menyatakan (( ab ) a )
a + b + a menyatakan (( a + b ) +a )
20
21. Definisi 13 : Dua ekspresi reguler r1 dan r2 terhadap abjad
Σ dikatakan setara (ekivalen) dinyatakan
r1 = r2 jika R1 = R2
Misalkan r, s dan t merupakan ekspresi reguler terhadap Σ,
maka berlaku sifat-sifat sebagai berikut : ( ada 16 sifat )
Contoh : Buktikan : r (sr )* = ( rs )* r
Bukti : misalkan w Є r (sr )* , maka w = r (( sr ) (sr) ….. (sr)
Berdasarkan sifat assosiatif w = (( rs ) (rs) …….. (rs) r
W Є ( rs )* r . Jadi r ( sr )* subset ( rs )* r
Misal : w Є ( rs )* r , maka w = (( rs ) ( rs ) ……….( rs )) r
Berdasarkan sifat assosiatif : w = r (( sr ) ( sr ) ….. ( sr ))
w Є r ( sr )* . Jadi ( rs )* r subset r ( sr ) *
R ( sr )* = ( rs )* r.
Pembuktian diatas disebut dengan Proof by reparsing
21
22. Soal – Soal Latihan
1. Diketahui Σ = { k,l,m,n,o,p,q }, sebutkan yang
didefinisikan alphabet, untai dan bahasa, berapa
panjang Σ dan masing-masing kata dari Σ.
2. w adalah sebuah untai ; w = 679583
Bagaimanakah eksponensiasi dan reversalnya.
3. Misalkan Σ = { a,b }
a. r = a * ba * ba *
b. r = ( a + b ) *
c. r = ( a + b )* ( aa + bb ) ( a + b ) *
d. r = ( aa + bb + ( ab + ba ) ( aa + bb ) * ( ab + ba )) *
e. r = ( b + abb ) *
Tentukan R untuk masing-masing Soal !!!.
22
23. MODUL – 03
FINITE STATE AUTOMATA ( FSA )
3.1. Pengertian Finite State Automata
a. Model matematika dari suatu sistem yang menerima
input dan output diskrit.
b. Adanya perpindahan input dari satu state ke state
lainnya ( Fungsi Transisi ).
c. Mekanisme kerja suatu FSA dapat diaplikasikan pada
leksikal analysis, Text Editor, Protocol Komunikasi
jaringan dan lainnya.
d. FSA dinyatakan dengan Five – Tupel ( 5 – Tupel )
sebagai berikut : M = ( Q, Σ, δ, S , F ) , dimana
Q = Himpunan State
Σ = Himpunan simbol input / masukan/ abjad
23
24. δ = Fungsi transisi / tabel transisi
S = State awal ; S Є Q
F = Final State ; F subset Q
Contoh kasus : Seorang petani, seekor kambing, seekor srigala dan seikat
rumput berada pada satu sisi sungai dan ingin melakukan penyebrangan
dengan sebuah perahu. Petani tersebut harus menyebrangkan semuanya
dalam keadaan selamat. Bagaimanakah prosesnya ?. P = Petani ; K =
Kambing ; S = srigala dan R = Rumput
Start K P
K P S S R R
K
K K K
R S
K R S
K P S
P
O-
PKSR
SR-
PK
PSR
R-
PKS
PKR-
S
S-
PKR
PK-
SR
K-
PSR
PKS-
R
0-
PKSR
24
25. Contoh lain : mencek parity ganjil
Bila mesin mendapat input : 1101
Urutan state yang terjadi : even 1 odd 1 even 0 even 1 odd
Berakhir dengan state odd sehingga “1101” diterima oleh
mesin. Bila mesin mendapat input : 101.
Urutan state yang terjadi : even 1 odd 0 odd 1 even.
Berakhir dengan state even. Maka “101” ditolak oleh mesin
0 0
Start 1
1
Even odd
25
26. 3.2. Deterministic Finite Automata ( DFA )
Deterministic Finite Automata ( DFA ), dari suatu
state adalah tepat satu state berikutnya untuk setiap
simbol masukan yang diterima. DFA didefinisikan
sebagai 5 –tuple M = ( Q, Σ, δ, S , F ).
Definisi 13 : Dalam diagraph suatu automaton
M = ( Q, Σ, δ, S , F ) untuk suatu kata w di Σ * ,
lintasan vertex qi ke vertex qj , sehingga
rangkaianrangkaian dari label-label dari edge yang
dilaluinya membentuk kata w yang disebut lintasan
w dari qi ke qj .
Suatu kata w termasuk di Σ * dikatakan diterima
(accepted) oleh automaton M, jika lintasan w dari
state awal q0 dapat mencapai state akhir di F.
26
27. Himpunan kata yang diterima oleh automaton M
disebut bahasa yang diterima oleh M dan
dinyatakan dengan ; L ( M ).
Catatan : Kata-kata kosong ᵋ diterima oleh M jika
q0 juga merupakan F.
Contoh : Misal Σ = { a,b } , M = ( Q, Σ, δ, q0, F ),
dimana Q = { q0 } ; F = Ø , Fungsi transisi δ
dinyatakan dengan tabel sebagai berikut :
δ a b
q0 q0 q0
27
28. Diagram Graph atau diagram transisinya :
L ( M ) = Ø, mengapa ??
Misal ; Σ = { a,b } , M = ( Q, Σ, δ, q0, F ),
Q = { q0 } ; F = Ø
L ( M ) = Σ *
q0
q0
28
29. Diketahui Automaton berhingga Σ = { a,b } , M = ( Q, Σ,
δ, q0, F ), dimana Q = { q0 , q1 , q2 } ; F = q2 ,
Persamaan transisi diberikan sebagai berikut :
δ(q0, a ) = δ(q1, a ) = δ(q2, a ) =
δ(q0, b ) = δ(q1, b ) = δ(q2, b ) =
Suatu string x dinyatakan diterima bila δ( S, x ) berada
pada state akhir. Secara formal dikatakan, bila M adalah
sebuah FSA menerima bahasa yang disebut L ( M ).
L ( M ) = { x │ δ( S, x ) di dalam F }. Misal kita input string
“abb” pada contoh diatas, maka :
δ(q0, abb ) = δ(q0, bb ) = δ(q1, b ) = q2
karena q2 termasuk state akhir, maka ‘ abb ‘ berada
dalam L ( M ) = U { Si : qi Є F }.
Contoh lain inputkan string ‘ baba ‘ !!!!.
29
30. Pada DFA dari setiap state selalu tepat ada satu state
berikutnya √ simbol input yang ada.
Fungsi transisi dengan F = { q3 }
Fungsi transisi dengan F = { q3 }
0
0
Start 1 0
1
0
δ a b
q0 q1 q2
q1 q3 q2
q2 q1 q3
q3 q3 q3
q0 q1 q2
30
31. MODUL – 04
NON DETERMINISTIC FINITE AUTOMATA (NFA)
Suatu automaton berhingga tak tentu ( NFA )
adalah suatu 5 – tuple M = ( Q, Σ, δ, q0, F ),
dimana δ : Q X Σ 2 Q . 2 Q menyatakan
power set dari Q atau himpunan semua subset
dari Q. Biasanya fungsi transisi δ tidak hanya
bekerja pada sebuah huruf , tetapi juga bekerja
pada sebuah kata.
δ *: Q X Σ* 2 Q
δ* ( q,w ) adalah suatu state di Q yang dicapai
oleh state q setelah mendapat input kata w,
fungsi δ* dedefinisikan sebagai :
a. δ* ( q,w ) = { q }
31
32. b. δ* ( q,wa ) = { p : p di δ ( r,a ) untuk suatu state r di
δ* ( q,w ) .
c. δ* ( p,w ) = U { δ* ( q,w ) : q di p } √ p subset Q
Definisi 14 : M = ( Q, Σ, δ, q0, F ), adalah NFA, maka
bahasa yang diterima oleh M yaitu L ( M ) menyatakan
himpunan { w : δ ( q0,w ) mengandung suatu state akhir
di F }. Contoh misalkan M = ( Q, Σ, δ, q0, F ) ; Σ = { a,b }
dimana F = { q2,q4 } dan Q = { q0, q1, q2, q3, q4 } dengan
fungsi transisi sbb:
δ a b
q0 {q0, q3 } {q0, q1 }
q1 Ø q2
q2 q2 q2
q3 q4 Ø
q4 q4 q4
32
33. Bila w = abaab, maka
δ ( q0,w ) = δ ( q0,a ) = { q0, q3 }
δ ( q0,ab ) = δ (δ ( q0,a ), b = δ ( { q0, q3 }, b )
= δ ( { q0 }, b ) U δ ( { q3 }, b )
= { q0, q1 } U Ø = { q0, q1 }
δ (q0,aba) = δ (δ ( q0,ab ), a = δ ( { q0, q1 }, a )
= δ ( { q0 }, a ) U δ ( { q1 }, a )
= { q0, q3 } U Ø = { q0, q3 }
δ (q0,abaa)= δ (δ ( q0,aba ), a = δ ( { q0, q3 }, a )
= δ ( { q0 }, a ) U δ ( { q3 }, a )
= { q0, q3 } U { q4 } = { q0, q3 , q4 }
δ (q0,abaab)= δ (δ ( q0,abaa ), b = δ ( { q0, q3 , q4 }, b )
= δ ( { q0 }, b ) U δ ( { q3 }, b ) U δ({ q4 }, b )
= { q0, q3 , q4 }
33
34. Reduksi Jumlah State Pada FSA
Distinguishable adalah state yang dapat dibedakan.
Indistinguishable adalah state yang tidak dapat
dibedakan. State p dan q dari DFA dikatakan
indistinguishable, jika :
a. δ ( q,w ) Є F , sedangkan δ ( p,w ) Є F dan .
b. δ ( q,w ) Є F , sedangkan δ ( p,w ) Є F √ w Є ∑* .
State p dan q dikatakan distinguishable jika ada string w
Є ∑* Ǝ δ ( q,w ) Є F , sedangkan δ ( p,w ) Є F.
Jelasnya pasangan 2 buah state memiliki salah satu
kemungkinan distinguishable atau indistinguishable,
tetapi tidak keduanya.
Terdapat relasi p dan q indisti dan jika q dan r indisti,
maka p dan r juga indisti dan ketiga statet tersebut
indistinguishable.
34
35. Reduksi state DFA dapat dilakukan dengan mencari
kombinasi state yang indistinguishable, tahapan-
tahapannya sebagai berikut :
a. Hapuslah semua state yang tidak dapat dicapai dari q0
dengan jalan apapun.
b. Buatlah semua pasangan state (p,q) yang
distinguishable dimana p Є F dan q Є F .
c. Catatlah pasangan-pasangan state tersebut.
d. √ melakukan pencarian state yang disting dengan
aturan-aturan : “ √ (p,q) dan √ α Є ∑ .
e. Hitunglah δ (p,α) = pα dan δ (q,α) = qα. Jika pasangan
( pα,qα ) telah tercatat sebagai disting, maka pasangan
(p,q) juga dimasukan sebagai disting.
35
36. f. Dari hasil no. c didapat pasangan state
yang disting. Pasangan-pasangan state
yang lainnya yang tidak termasuk ke
dalam state yang disting tersebut
(‘sisanya’) dapat ditentukan sebagai state
yang indisting.
g. Beberapa state yang saling indisting
dapat digabungkan ke dalam satu state.
sesuaikan transisi dari dan ke state-state
gabungan tersebut.
36
38. Dilakukan tahapan-tahapan sebagai berikut :
1. Tidak ada state yang tidak tercapai dari q0.
2. Catat state-state disting sebagai berikut : pasangan
(q0,q4), (q1,q4), (q2,q4) dan (q3,q4). Hal ini didapatkan
dengan melihat q0, q1, q2, q3 Є F , sedangkan q4 Є F.
3. Tentukan pasangan-pasangan state lainnya, misal :
a. Untuk pasangan (q0,q1), kita lihat δ ( q0,1) = q3 dan δ
( q1,1) = q4 , sedangkan (q3,q4) disting, maka (q0,q1)
adalah disting.
b. Untuk pasangan (q0,q2), kita lihat δ ( q0,1) = q3 dan δ
( q2,1) = q4 , sedangkan (q3,q4) disting, maka (q0,q1)
adalah disting.
c. Untuk pasangan (q0,q3), kita lihat δ ( q0,1) = q3 dan δ
( q3,1) = q4 , sedangkan (q3,q4) disting, maka (q0,q3)
adalah disting.
38
39. 4. Setelah diperiksa semua pasangan state, didapati state-
state yang disting yaitu : (q0,q4), (q1,q4), (q2,q4) , (q3,q4),
(q0,q1), (q1,q2), (q0,q3) , sisanya yang indisting adalah
(q1,q2), (q1,q3), (q2,q3) .
5. Karena q1 indisting dengan q2 , q2 indisting dengan q3
maka dapat disimpulkan q1 , q2 , q3 saling indisting dan
dapat dijadikan satu state.
Gambar berikut hasil DFA yang direduksi statenya !!.
0 0,1
Start 0,1 1
q0 q1,2,3
q4
39
40. MODUL – 05
KESETARAAN DFA DAN NFA
Tahapan Pengubahan NFA ke DFA
Dari sebuah mesin NFA dapat dibuat mesin DFA yang
ekivalen ( setara ). Ekivalen disini artinya mampu
menerima bahasa yang sama. Contohnya lihat gambar
berikut ini :
0,1
0 0,1
Start Start 0
1
0,1
Gambar 5.1 : Mesin DFA Gambar 5.2 : Mesin NFA
q0 q0
q1
q2
q1
40
41. Cara membangun ekivalensi NFA ke DFA
Contoh. Misal diketahui NFA dengan diagram transisi
berikut ini :
0 1
Start 0,1
1
Gambar 5.3 : Mesin Otomata NFA
Dimulai dari state awal, kemudian mengikuti transisinya
untuk membentuk state-state baru, √ state yang
terbentuk diikuti lagi transisinya sampai tercover semua.
q0 q1
δ 0 1
q0 q0 , q1 q1
q1 Ø q0 , q1
41
42. - State q0 dengan input 0 mencapai q0 dan q1
- State q0 dengan input 1 mencapai state q1
hasil penelusurannya sebagai berikut :
1
Start
0
Selanjutnya kita telusuri state-state baru yang terbentuk
{q0}
{q1}
{q0,q1}
42
43. State q1 bila memperoleh input 0 menjadi state Ø.
State q1 bila memperoleh input 1 menjadi state { q0,q1 }.
State {q0,q1} bila memperoleh input 0 menjadi state
{q0,q1}, ini diperoleh dari δ ( q0,0) = { q0 , q1 } digabung
dengan δ ( q1,0) = Ø , maka hasilnya :
δ ( { q0,q1 }) = { q0 , q1 } .
State { q0 , q1 } bila memperoleh input 1 menjadi state {q0
, q1} , ini diperoleh dari δ ( q0,1) = { q1 } digabung dengan
δ ( q1,1) = { q0 , q1 } , maka hasilnya :
δ ( { q0,q1 }, 1) = { q0 , q1 } .
43
44. Perhatikan state yang sama cukup ditulis sekali saja.
1 0 1 0 0,1
Start 1 Start 1
0 0,1 0 0,1
1 0 0,1
Start 1
0,1
0
Gambar 5.4 : Mesin DFA yang ekivalen dengan NFA
gambar 5.3
q0
Ø
q0,q1
q1 q1
Øq0
q0
Ø
q1
q0,q1
q0,q1
44
45. Untuk memeriksa ekivalensi DFA dengan NFA, misalkan
string ‘001’ dapat diterima oleh NFA, maka seharusnya
dapat pula diterima oleh DFA.
δ ( q0,001) = δ ( { q0,q1 },01) = δ ( { q0,q1 },1) = { q0,q1 } ,
karena state { q0,q1 } termasuk state akhir, maka berarti
string tersebut diterima.
Contoh-contoh ekivalensi NFA ke DFA
a b a,b a,b
Start a,b Start b
a a
q0 q0 Ø
q1
q1
q0,q1
45
46. Start Start a,b a,b
p,r
Start p r
r
p p
p p r p,r
Start
r p,r
q0 {q0} Ø
q0 q2
Ø
q0
q2
{q1}
{q0,q2}
{q1}
46
47. MODUL – 06
NFA DENGAN ᵋ MOVE
ᵋ ᵋ
Start
b ᵋ
a b
ᵋ = empty ( transisi ᵋ ), diperbolehkan merubah state
tanpa membaca input/ tidak tergantung pada suatu input
Contoh : Dari q0 tanpa membaca input pindah ke q1
Dari q1 tanpa membaca input pindah ke q2
Dari q4 tanpa membaca input pindah ke q1
Memudahkan untuk mengkombinasikan FSA
q0
q1
q3 q4
q2
47
48. 6.1. ᵋ - closure untuk NFA dengan ᵋ - move
ᵋ - closure adalah himpunan state-state yang dapat
dicapai dari suatu state tanpa membaca input.
Misal : ᵋ - closure ( q0 ) = himpunan state yang dapat
dicapai dari state q0 tanpa baca input.
Dari gambar diatas :
ᵋ - Closure ( q0 ) = { q0, q1, q2 }
ᵋ - Closure ( q1 ) = { q1, q2 }
ᵋ - Closure ( q2 ) = { q2 }
ᵋ - Closure ( q3 ) = { q3 }
ᵋ - Closure ( q4 ) = { q1, q2, q4 }
48
49. Start
Contoh lainnya :
ᵋ - Closure ( q0 ) = { q0, q1, q3 }
ᵋ - Closure ( q1 ) = { q1, q3 }
ᵋ - Closure ( q2 ) = { q2, q4 }
ᵋ - Closure ( q3 ) = { q3 }
ᵋ - Closure ( q4 ) = { q4 }
“ Pada state yang memiliki transisi - ᵋ , maka ᵋ - Closure
adalah state itu sendiri “
q0
q2q1
q3 q4
49
50. 6.2. Ekivalensi NFA dengan Ɛ – move ke NFA tanpa Ɛ – move
a a
a a
Ɛ
b
b b
Gambar a : NFA Ɛ – move Gambar b : NFA tanpa Ɛ – move
Gambar a ekivalen dengan gambar b.
Gambar a menerima bahasa yang memuat string ‘ b ‘ ,
demikian juga gambar b
q2
q0 q1
q1
q0
q1
q2
q1q3
q3
Start Start
50
51. Untuk gambar yang kompleks diperlukan tahapan-
tahapan sebagai berikut :
1. Buat tabel transisi NFA Ɛ – move .
2. Tentukan Ɛ – closure √ state.
3. Carilah setiap fungsi transisi hasil perubahan dari NFA
Ɛ – move ke NFA tanpa Ɛ – move δ ( sebut δ’ ), dimana
δ’ didapat dengan rumus : δ’ (state,input) = Ɛ – closure
( δ(Ɛ – closure (state,input)).
4. Dari hasil 3, buat tabel transisi dan diagram transisi dari
NFA tanpa Ɛ – move yang ekivalen dengan NFA Ɛ –
move tersebut.
5. Jangan lupa menentukan state-state akhir untuk NFA
tanpa Ɛ – move tersebut, yaitu state-state akhir semula
ditambah dengan state-state yang Ɛ – closurenya
menuju kesalah satu dari state akhir semula, atau
F’ = F U { q │(Ɛ – closure (q) ∩ F ≠ Ο }
51
52. Misal : bila semula F = { q0,q3 }, Ɛ – closure (q1) =
{ q0,q2 } maka F’ = { q0,q1,q3 }
tabel transisi dari NFA Ɛ – move
ada gambar …
Ɛ – closure √ state
Ɛ – closure ( q0 ) = { q0,q1 }
Ɛ – closure ( q1 ) = { q1 }
Ɛ – closure ( q2 ) = { q2 }
Ɛ – closure ( q3 ) = { q3 }
δ a b
q0 Ø Ø
q1 q2 q3
q2 Ø Ø
q3 Ø Ø
52
55. 4.3. Penggabungan dan konkatenasi FSA
Misal ada NFA M1 dan NFA M2
0
Start 1 NFA M1
Start 1 1
0 NFA M2
qa0 qa1
qb0 qb1
55
56. L (M1 ) adalah bahasa yang diterima M1 dan L (
M2 ) bahasa yang diterima oleh M2. Dilakukan
operasi union : L ( M3 ) = L ( M1 ) U L ( M2 ),
dapat dibuat mesin M3 yang menerima bahasa L
( M3 ) dengan cara :
a. Tambahkan state awal untuk M3, hubungkan
dengan state awal M1 dan state awal M2
dengan menggunakan transisi- Ɛ.
b. Tambahkan state akhir M3, hubungkan dengan
state-state akhir M1 dan state-stae akhir M2
dengan menggunakan transisi- Ɛ. qs dan qf
adalah state awal dan state akhir pada M3
56
58. Ditentukan L ( M4 ) = L ( M1 ) . L ( M2 ), dapat dibuat
mesin M4 yang menerima bahasa L ( M4 ) dengan cara :
a. State awal M1 menjadi state awal M4.
b. State akhir M2 menjadi state akhir M4.
c. Hubungkan state-state akhir M1 dengan state awal M2
dengan menggunakan transisi- Ɛ.
Hasil operasi konkatenasi
Mesin M4
q0 qA1 qB0
q1
Start
0
0
1
1
1 ƐƐ
58
59. Modul – 07
EKSPRESI REGULER
7.1. Penerapan Ekspresi Reguler
Sebuah bahasa dinyatakan reguler jika terdapat Finite
State Automata yang dapat menerimanya. Bahasa yang
diterima oleh suatu FSA dapat dinyatakan secara
sederhana dengan ekspresi reguler (ekspresi beraturan/
( EB ). EB memungkinkan menspesifikasikan atau
mendefinisikan bahasa-bahasa, memberikan suatu pola
( pattern ) atau template untuk untai/ string dari suatu
bahasa. Untai yang menyusun suatu bahasa reguler
akan cocok ( match ) dengan pola bahasa itu.
Penerapan EB yang nampak, misalnya pencarian untai
karakter pada suatu file. Biasanya fasilitas ini ada pada
59
60. text editor. Dalam kasusu-kasus ini dapat dilakukan
penerapan FSA pada untai-untai yang terdapat dalam
file tersebut.
Conth – contoh EB
1. Fsa menerima bilangan integer tak bertanda
0,1,2,…..,9
0,1,2,…..,9
Selain 0,1,2,.9 Selain 0,1,2,…,9
Dalam EB. Dinyatakan dengan : ( digit )( digit ) *
q0
q0
q1
Start
60
61. 2. FSA menerima Indentifier ( Id )
Huruf / Angka
Huruf
Dalam EB dinyatakan dengan : ( Huruf )( Huruf│angka ) *
Start q0
q1
61
62. Notasi_Notasi Ekspresi Beraturan ( EB )
1. ( * ) yaitu karakter asterisk. Dapat tidak muncul, dapat
pula muncul berhingga kali ( 0 – n kali ).
2. ( + ) tanda tambah pada posisi supercript ( diatas ).
Diartikan minimal harus muncul satu kali ( 1 – n kali ).
3. + ( mendatar ) atau U berarti union berarti “ atau “.
4. . ( titik ) berati konkatenasi, biasanya dapat dihilangkan
misal a . b = ab
Contoh-contoh EB dan contoh string yg dibangkitkan :
1. EB : ab*cc , string : ……
2. EB : 010* string : ……
3. EB : a*d : a+ d, string : …..
4. EB : a* U b * , string : ….
5. EB : ( 0 U 1 ) ; ( a │ b )+ , 01* + 0 , string :…..
62
63. Hubungan Ekspresi Beraturan dan FSA
V EB ada satu FSA Ɛ-move yang ekivalen, V DFA ada
satu EB dari bahasa yang diterima oleh DFA.
Sederhananya kita dapat membuat suatu NFA Ɛ-move
dari EB.
a
Ɛ b
Gambar : NFA Ɛ-move untuk EB : a* b
a b
Gambar : NFA untu EB : ab
q0 q1
q1q0
q2
q2
Start
Start
63
64. a Ɛ b
NFA Ɛ – move untuk EB : ab
a
Ɛ Ɛ
Ɛ b Ɛ
NFA Untuk EB : a U b
q0
q3 q4
q1 q2
q0 q2q1 q3
q5
Start
Start
64
65. NFA Ɛ-move NFA DFA
Bila EB cukup sederhana kita dapat saja langsung
mengkonstruksi NFA-nya tanpa melalui NFA Ɛ-move
Contoh-contoh NFA tanpa Ɛ-move
0 0,1 EB: 0(1│0 )
0 1 EB: 010*
1 0,1
0 0 0
EB : 01*0 EB : 0 ( 1 U 0 )
q0
q1
q0
q1
q0 q1 q0
q0
q0
q0
q0
q2
q2
q1
Start
Start
Start
q2
Start
65
66. Dari sebuah FSA ( DFA atau NFA ) dapat ditentukan EB
yang diterima oleh automata yang bersangkutan, dapat
juga ditentukan langsung EB dengan mengamati
perilaku otomata tersebut.
Input yang menuju final state { q2 } adalah 0 atau 10*1,
pada q2 menerima input 1 berapapun juga ( 1* ), akan
tetap di q2. Dapat dikatakan mesin itu menerima 01*
atau 10*11* yang dinyatakan dalam EB : 01* U 10*11*
0 1
1 1
0
q0 q1
q0q2
Start
66
67. Input ke q3 adalah ab, dengan di q3 menerima a*,
sehingga bila digabung menjadi aba*. Input ke q2 adalah
aa, selanjutnya dari q2 menerima input ba*b kembali ke
q2, bila digabung menjadi aa ( ba*b ). Akhirnya diperoleh
EB : aba* │ aa( ba*b ) = a ( ba* │a ( ba*b )* ).
Gambarkan diagram transisi dan lain-lainnya !!!.
Diagram hubungan antara DFA, NFA dan EB
NFA
DFA
EB
NFA Ɛ-move
67
68. Dari EB : ( 0 + 1 )* 00 ingin dibuat mesin DFA yang
menerima bahasa yang berupa semua string yang
berakhiran dengan ‘ 00 ‘ ; Σ = { 0,1 }
0,1
0 0
Akhirnya kita buat DFA yang ekivalen dengan NFA.
Dapat dicek dengan untai : 00, 100, 000, 0100, 0000,
1100
q0 q1
q0q2
Start
68
70. Dari EB : ( 0 + 1 )* 00 ( 0 + 1 )* ingin dibuat mesin DFA
yang menerima bahasa yang berupa semua string yang
memuat minimal 2 nol ( 00 ). DFA yang ekivalen dengan
NFA dapat dicek dengan untai : 00, 100, 001, 0000,
0100, 00000, 1100, 0011, 1010011
δ 0 1
q0 { q0,q1 } q0
q1 q2 -
q2 q2 q2
70
72. Dari EB : ( a + b )* b ( a + b ) ( a + b ) ingin dibuat mesin
DFA yang menerima bahasa yang berupa semua string,
dimana simbol ketiga dari kanan adalah “ 1 “.
Diketahui Σ = { a,b } . Coba sendiri !!!
a,b
b a,b a,b
q0 q1 q2 q0q3
Start
72
73. Ingin dibuat mesin DFA yang ekivalen dengan NFA yang
menerima bahasa yang berupa 4 simbol yang minimal
memuat 2 buah nol ( yang tidak perlu berurutan ).
Diketahui Σ = { 0,1 }. Gambar DFA untuk 1100
1 1 0 0
Kemungkinan ke-2 , 2 buah nol terletak dipaling awal
q0 q1 q2 q3 q0
q5 q6
q7
q4
Start
73
74. Selanjutnya kita tambahkan kemungkinan untuk tiga
simbol pertama sudah memuat 2 buah nol.
1 1 0 0
0 0 0,1
1 0
0 0,1
q1q0
q2
q3
q1
q8
q5
q7
q6
q4
Start
74
75. Bila 3 simbol pertama baru memuat satu buah nol,
dibuat transisi dari state q8 ke q3
1 1 0 0
1
0 0 0,1
1 0
0 0,1
Hasil akhir mesin DFA yang sebenarnya tidak menuju
solusi : δ ( q2 , 1 ) = Ø δ ( q4 , 0 ) = Ø
δ ( q3 , 1 ) = Ø δ ( q4 , 1 ) = Ø
q1q0
q2
q3
q1
q8
q5
q7
q6
q4
Start
75
76. Modul – 08
ATURAN PRODUKSI
8.1. Aturan Produksi Bahasa Reguler
Aturan produksi untuk EB : α β , dimana α adalah
sebuah simbol variabel dan β maksimal memiliki sebuah
simbol variabel/ non terminal yang terletak di paling
kanan bila ada. Mengkontruksikan aturan-aturan
produksi untuk suatu tata bahasa reguler.
Tata bahasa reguler ( grammar ) didefinisikan 4-tupel :
G = { V,T,P,S } dimana : V = himpunan variabel
T = himpunan simbol terminal
P = kumpulan aturan produksi
S = simbol awal
76
77. a
ε b
a
b
ε b
S = state awal = q0 ; q0 mendapat input a ke q1
S aE ( E = q1 / bagian yang belum terbangkitkan ). Dari q1
menerima input ε ke q2 dan q3 , ditulis :
E A ( A = q2 ), dari q2 mendapat input a ke q2
E B ( B = q3 ) dari q3 mendapat input b ke q3
A aA selanjutnya dari q2 mendapat input b ke q4 ;
F = { q4 }
B bB selanjutnya dari q3 mendapat input b ke q4 ;
F = { q4 }
q0 q1
q2
q3
q1q4
Start
77
78. Tidak ada lagi unsur yang keluar, dapat ditulis :
A a
B b
Maka kumpulan aturan produksi yang dapat ditulis
sebagai berikut :
S aE V = { S,E,A,B }
E A │B T = { a,b }
A aA │B P = { S aE, E A │B ,
B bB │b a aA │B, B bB │b }
S = S , state awal
78
79. Contoh Lain a
b b
a
b b a
b
T = { a,b } A bC ( C = q2 )
S = q0 C aS
S aA │Bb dari q2 mendapat input a ke q0
A = q1 ; B = q4
q0
q1 q2 q3
q4 q5
q6
q0
Start
79
80. Dari q3 tidak ada transisi yang keluar dan bukan state
akhir, maka transisi ke state q3 diabaikan.
B bD ; ( D = q5 )
D bS ; ( dari q5 mendapat input b ke q0 ) ; q6 abaikan
( q0 sebagaii state akhir ) S ε
Maka kumpulan aturan produksi yang dapat ditulis
sebagai berikut :
V = { S,A,B,C,D }
T = { a,b }
P = { S aA │Bb │ε , A bC ; B bD ; C aS ,
D bS }
S = aA │Bb │ε
80
82. 8.2. FSA untuk suatu tata bahasa reguler
Misal terdapat tata bahasa reguler dengan aturan produksi sebagai
berikut :
b
b a
a
b
a b
S = q0 S aB │bA │ε
A = q4 B babS
B = q1 A abaS
S ε
q0
q1 q2 q3
q4 q5 q6
q0
Start
82
83. Modul – 09
FSA Dengan Output
9.1. Mesin Moore ( FSA Transducer )
Pada mesin Moore, output akan berasosiasi dengan
state. Mesin Moore didefinisikan dengan 6-tupel.
M = ( Q, Σ, δ, S, ∆, λ ), dimana :
Q = himpunan state ; Σ = himpunan simbol input
δ = fungsi transisi ; S = simbol awal
∆ = himpunan output ; λ = fungsi output V state
Contoh : Pembagian dengan sisa ( modulus ) bilangan
Q = { q0, q1, q2 }
Σ = { 0,1 }
∆ = { 0,1,2 } ( untuk outputnya pada kasus modulus
dengan sisa 3, maka sisanya adalah 0,1,2 ).
83
84. S = q0
λ ( q0 ) = 0
λ ( q1 ) = 1
λ ( q2 ) = 2
Misal : 5 mod 3 = 2
Input 5 dalam biner adalah 101, 101 q0 , q0 , q1 , q2 F = { q2 } ,
λ { q2 } = 2.
Misal : 10 mod 3 = 1
Input 10 dalam biner adalah 1010, 1010 q0 , q1 , q2 , q2 , q1
F = { q1 } , λ { q1 } = 1
0 1 2
0 1
1 0
1 0
Gambar 7.1. : Mesin Moore untuk modulus 3
q0
q1 q2
Start
84
85. 9.2. Mesin Mealy
Mesin Mealy berasosiasi dengan state, didefinisikan
dalam 6-tupel.
M = ( Q, Σ, δ, S, ∆, λ ), dimana :
Q = himpunan state ; Σ = himpunan simbol input
δ = fungsi transisi ; S = simbol awal
∆ = himpunan output ; λ = fungsi output V transisi
Mesin Mealy akan mengeluarkan output, apakah
menerima ( Y ) atau tidak ( T ). Mesin akan
mengeluarkan output Y bila menerima untai yang
memiliki simbol 2 akhiran berurutan yang sama, atau
dalam EB : ( 0 + 1 )* ( 00 + 11 )
Contoh input yang diterima : 01011, 01100 , 1010100,
10110100, 00, 11, 100, 011, 000, 111
85
86. Konsfigurasi Mesin Mealy ( dari diagram )
Q = ( q0 , q1 , q2 ); Σ = { 0,1 }
δ = fungsi transisi S = simbol awal = q0
∆ = { Y,T }
λ = (q0 ,0) = T λ = (q0 ,1) = T
λ = (q1 ,0) = Y 0/Y λ = (q1 ,1) = T
λ = (q2 ,0) = T λ = (q2 ,1) = Y
0/T 1/T
0/T 1/Y
1/T
q0
q1
q2
Start
86
87. 9.3. Ekivalensi Mesin Moore dan Mesin Mealy
Karena jumlah state pada Mealy = 3 dan jumlah
outputnya = 2 , maka jumlah state pada Moore yang
ekivalen = 6
Q = ( q0 Y, q0 T , q1 Y , q1 T , q2 Y , q2 T )
Σ = { 0,1 }
∆ = { Y,T }
S = q0 T
λ = (q0 Y) = Y λ = (q1 T) = T
λ = (q0 T) = T λ = (q2 Y) = Y
λ = (q1 Y) = Y λ = (q2 T) = T
87
88. Gambar 9.3. : Mesin Moore yang ekivalen dengan
gambar 9.2.
1
1
0 0
T T T
0
0 0
0 1
1
1
Y Y Y
q0T q1T q2T
q0Y q1Y q2Y
Start
88
89. “ State q0Y dapat dihapus, karena tidak ada transisi (
busur ) yang mengarah ke state tersebut “ .
Untuk memperoleh ekivalensi mesin Mealy ke mesin
Moore.
Konsfigurasi mesin Mealy tersebut adalah :
Q = ( q0 , q1 , q2 ) ; Σ = { 0,1 }
∆ = { 0,1,2 } ; S = state awal = q0
Mesin Moore :
λ = (q0 ,0) = 0 ; λ = (q1 ,1) = 0 ; λ = (q0 ) = 0
λ = (q0 ,1) = 1 ; λ = (q2 ,0) = 1 ; λ = (q1 ) = 1
λ = (q1 ,0) = 2 ; λ = (q2 ,1) = 2 ; λ = (q2 ) = 2
89
90. 0/0 1/2
1/1 0/2
1/0 0/1
Gambar 9.4. : Mesin Mealy yang ekivalen dengan
Mesin Moore
q1q0
q2
Start
90
91. Modul – 10
POHON PENURUNAN
10.1. Tata Bahasa Bebas Konteks
Pada tata bahasa reguler terdapat pembatasan
pada ruas kanan atau hasil produksinya, maka pada tata
bahasa bebas konteks ( Contex Free Grammar/ CFG )
tidak terdapat pembatasan hasil produksinya.
Pada CFG, saat menurunkan string, simbol-simbol
variabel akan mewakili bagian-bagian yang belum
terturunkan dari string tersebut. CFG menjadi dasar
dalam pembentukan suatu parser ( proses analisis
sintaksis ). Bagian sintaks dalam suatu kompilator
kebanyakan didefinisikan dalam tata bahasa bebas
konteks.
91
92. Misal terdapat tata bahasa bebas konteks dengan aturan
produksi sebagai berikut :
S AB
A aA │a
B bB │b
akan digambarkan pohon penurunannya untuk
memperoleh untai ‘ aabbb ‘
S
A B
a A b B
b B
a
b
Gambar 10.1 : Pohon penurunan untuk untai ‘aabbb’
92
93. Proses penurunan dapat dilakukan dengan cara :
a. Penurunan terkiri ( leftmost derivation ) : simbol variabel
terkiri yang diperluas terlebih dahulu.
b. Penurunan terkanan ( rightmost derivation ) : simbol
variabel terkanan yang diperluas terlebih dahulu.
Contoh :
S aB │bA
A a │aS │bAA
B b│bS │aBB
Pohon penurunan untuk memperoleh untai
‘ aaabbabbba ‘ , dapat dilihat pada gambar berikut !!
93
94. 10.2. Ambiguitas
Ambiguitas terjadi bila terdapat lebih dari satu pohon
penurunan yang berbeda untuk mendapatkan suatu
untai. Misalkan terdapat tata bahasa bebas konteks :
S SbS │ScS│a
Penurunannya dapat dilihat pada gambar berikut :
S S
S b S S c S
a S c S S b S a
a a a a
Gambar 10.3 : Pohon penurunan untuk untai ‘ abaca’
94
95. Untuk untai yang sama ( abaca ) dapat dibuat pohon
penurunan yang berbeda, maka dapat dikatakan tata
bahasa bebas konteks tersebut ambigu.
Ambiguitas dapat menimbulkan masalah pada bahasa-
bahasa tertentu, dan susunannya akan menentukan arti,
maka artinya akan menjadi ambigu.
95
96. Soal-Soal
1. Untuk tata bahasa bebas konteks berikut , gambarkan
pohon penurunan untuk memperoleh untai ‘bbabaaba’
dan berikan contoh pula untuk untai-untai lainnya.
S AA
A AAA │a│bA │Ab
2. Gambarkan pohon-pohon penurunan ( min 3 pohon )
dari 2 grammar berikut :
S aAd │aB
A b │c
B ccd│ddc
3. S Ba │Ab
A Sa │AAb│a
B Sb│BBa│b
96
97. Modul – 11
PENYEDERHANAAN TATA BAHASA BEBAS KONTEKS
11.1. Tujuan Penyederhanaan
Untuk melakukan pembatasan sehingga tidak menghasilkan
pohon yang memiliki kerumitan yang tak perlu atau aturan
produksi yang tidak berarti.
Misal CFG :S AB │a
A a , kelemahannya B tidak memiliki
penurunan.
Untuk CFG berikut : S A
A B
B C
C D
D a │A
97
98. memiliki kerumitan, padahal berujung S a.
Produksi D A juga menyebabkan kerumitan.
Suatu CFG dapat disederhanakan dengan melakukan :
1. Penghilangan produksi useless ( tidak berguna ).
2. Penghilangan produksi unit.
3. Penghilangan produksi Ɛ.
11.2. Penghilangan produksi useless
Produksi useless didefinisikan sebagai :
• Produksi yang memiliki variabel yang tidak memiliki
pohon penurunan yang akan menghasilkan terminal-
terminal. Produksi ini tidak berguna, karena kalau
diturunkan tidak akan pernah selesai.
• Produksi yang tidak akan pernah dicapai dengan
prnurunan apapun, sehingga produksi ini redundan.
98
99. Contoh CFG :
S aSa │Abd │Bde
A Ada
B BBB│a
perhatikan variabel A tidak memiliki penurunan yang
menuju terminal, sehingga bisa ihilangkan.
Konsekuensinya aturan produksi S Abd tidak memiliki
penurunan. Disederhanakan CFG tersebut menjadi :
S aSa │Bde
B BBB│a
99
100. Contoh lain, diketahui CFG :
S aAb│cEB
A dBE │eeC
B ff
C ae
D h
E tidak memiliki penurunan, Aturan D h, reddundan
Sisa aturan produksi :
S aAb B ff juga redundan
A eeC
B ff
C ae
100
101. 11.3. Penghilangan Produksi Unit
Produksi unit adalah dimana ruas kiri dan kanan aturan
produksi hanya berupa satu simbol variabel.
Contoh CFG :
S Sb
S C
C D
C ef
D dd
kita lakukan penggantian dari aturan produksi yang
paling dekat menuju ke terminal (‘ => dibaca menjadi )
C D => C dd
S C => S dd │ef
101
102. Sehingga aturan produksi setelah penyederhanaan :
S Sb
S dd │ef
C dd
C ef
D dd
Contoh lain CFG :
S A
S Aa
A B
B C
B d
C D
C ab
D b
102
103. 11.4. Penghilangan Produksi Ɛ
Produksi Ɛ adalah produksi dalam bentuk α Ɛ
Penghilangan dilakukan dengan melakukan penggantian
produksi yang memuat variabel yang bisa menuju
produksi Ɛ atau biasa disebut nullable.
Misal : S bcAd
A Ɛ , maka variavel A dapat dihapus S bcd
Contoh lainnya : Diketahui CFG :
S AaCD
A CD│AB
B b │ Ɛ
C d │ Ɛ
D Ɛ
103
104. Setelah penyederhanaan :
S AaC │ aC │ Aa │ a
A C│AB │ A │ B
B b
C d
Contoh lainnya : diketahui CFG :
S dA │ Bd
A bc
A Ɛ
B c
Setelah penyederhanaan : S dA │ d │ Bd
A bc
B c
105
105. Soal-Soal Modul – 11
Sederhanakan grammar –grammar berikut ini :
1. S AB
A abB│aCa │ Ɛ
B bA │ BB │ Ɛ
C Ɛ
2. S ABaC │BaC │ AaC │ABa │ aC │Aa │ Ba │a
A B│C │ BC
B b
C D
D d
106
106. Modul – 12
BENTUK NORMAL CHOMSKY ( BNC )
12.1. Pengertian BNC
BNC atau Chomsky Normal Form ( CNF ) berguna untuk
CFG. BNC dapat dibuat dari sebuah CFG yang telah
mengalami penyederhanaan yaitu penghilangan
produksi useless, unit dan Ɛ. Dengan kata lain suatu
bentuk CFG dapat dibuat menjadi BNC, dengan syarat :
• Tidak memiliki produksi useless.
• Tidak memil;iki produksi unit.
• Tidak memiliki produksi Ɛ.
Aturan produksi BNC ruas kanannya tepat berupa
sebuah terminal atau dua variabel, misalkan :
107
107. A BC
A b
B a
C BA │d
12.2. Pembentukan BNC
Langkah-langkah pembentukan BNC sebagai berikut :
Aturan produksi yang ada dalam BNC :
S CA
A a
B BC
C b
Penggantian aturan produksi yang belum dalam BNC
108
108. S aB => S P1B
A bc => A P2P3
B Ab => B AP2
C aB => C P1B
Terbentuk aturan produksi dan simbol variabel baru
P1 a
P2 b
P3 c
Hasil akhir aturan produksi dalam BNC :
S CA ; S P1B ; P1 a
A a ; S P2P3 ; P2 b
B BC ; B AP2 ; P3 c
C b ; C P1B
109
109. Contoh lain CFG :
S aAB │ ch │ CD
A dbE│eEC
B ff│DD
C ADB│aS
D i
E jD
Aturan produksi yang sudah ada dalam BNC
S CD
B DD
D i
110
110. Penggantian aturan produksi
S aAB => S P1P2
S ch => S P3P4
A dbE => A P5P6
A eEC => A P8P9
B ff => B P10 P10
C ADB => C AP11
C aS => C P1 S
E jD => EP12 D
111
111. Terbentuk A.P baru : Hasil akhir dalam BNC
P1 a S CD
P2 AB B DD
P3 c D i
P4 h S P1 P2
P5 d S P3 P4
P6 P7 E A P5 P6
P7 b A P8 P9
P8 e B P10 P10
P9 EC C A P11
P10 f C P1 S
P11 DB
P12 j
112
112. 12.3. Algoritma CYK Untuk CFG
“ Tugas Mandiri Umum “.
Soal-Soal Modul – 12
Transformasikan CFG berikut ke dalam BNC :
1. S aSaA│ A
A abA│b
2. S abAB
A bAB│Ɛ
B BAa│A │Ɛ
113
113. Modul – 13
PENGHILANGAN REKURSIF KIRI
13.1. Aturan Produksi Rekursif
Aturan produksi yang rekursif memiliki ruas kanan ( hasil
produksi ) yang memuat simbol variabel pada ruas kiri.
Sebuah aturan produksi dalam bentuk :
A β A
Merupakan aturan produksi yang rekursif kanan
β = ( V U T )* atau kumpulan simbol variabel dan
terminal
Contoh aturan produksi yang rekursif kanan
S dS
B adB
114
114. Contoh penurunan sebuah CFG yang rekursif kiri
S aAc
A Ab │Ɛ Gambarkan !!!.
13.2. Tahapan penghilangan Rekursif Kiri
1. Pisahkan aturan produksi yang rekursif kiri dan yg tidak.
Aturan produksi yang rekursif kiri :
A Aα1│ Aα2│Aα3│ Aα4│…… Aαn
Aturan produksi yang tidak rekursif kiri termasuk Ɛ
A β1│ β2│ β3│…… βn
2. Dari situ kita tentukan α1 ,α2 ,α3 …αn dan β1 ,β2,β3 … βn
dari setiap aturan produksi yang memiliki simbol ruas
kiri yang sama.
3. Lakukan penggantian aturan produksi yang rekursif kiri
menjadi sebagai berikut :
115
115. 1. A β1 Z│ β2 Z│ β3 Z│…… βn Z.
2. Z α1│ α2│α3│ α4│…… αn
3. Z α1 Z│ α2 Z│α3 Z│ α4 Z│…… αn Z
Penggantian diatas dilakukan untuk setiap aturan
produksi dengan simbol ruas kiri yang sama. Bisa
muncul simbol variabel baru Z1, Z2, Z3 , …… Zn
dan seterusnya , sesuai banyaknya variabel yang
menghasilkan produksi yang rekursif kiri.
4. Hasil akhir merupakan aturan produksi pengganti
ditambah dengan aturan produksi semula yang tidak
rekursif kiri
Dapat dilihat pada diagram tahapan-tahapan
penghilngan rekursif kiri.
116
116. Gambar 13.2. : Tahapan Penghilangan Rekursif Kiri
Aturan Produksi
yg tidak rekursif
kiri
CFG
mengandung
aturan
produksi yang
rekursif kiri
Aturan
produksi yang
rekursif kiri
Lakukan
penggantian,
munculkan
aturan
produksi baru
dan simbol
variabel baru
CFG bebas
dari aturan
produksi yang
rekursif kiri
117
117. Contoh Tata bahasa bebas konteks :
S Sab │ aSc│ dd│ ff │Sbd
Pertama-tama kita lakukan pemisahan aturan produksi
S Sab │Sbd ; rekursif kiri
Dari situ kita tentukan : untuk simbol ruas kiri
S : α1 = ab , α2 = bd
Yang tidak rekursif kiri S : β1 = aSc , β2 = dd , β3 == ff
Dilakukan penggantian aturan produksi rekursif kiri :
Untuk yang memiliki simbol ruas kiri S :
S Sab │Sbd , digantikan oleh :
1. S aScZ1 │ddZ1 │ffZ1
2. Z1 ab │bd
3. Z1 ab Z1 │bd Z1
118
118. Hasil akhir setelah penghilangan rekursif kiri :
S aSc │dd │ff
S aScZ1 │ddZ1 │ffZ1
Z1 ab │bd
Z1 ab Z1 │bd Z1
Pada kasus diatas S adalah satu-satunya simbol
variabel yang menghasilkan produksi rekursif kiri.
Contoh lain : terdapat CFG :
S Sab │Sb │cA
A Aa │a│bd
Yang pertama-tama kita lakukan pemisahan aturan
produksi yang rekursif kiri.
S Sab │Sb
A Aa
119
119. Dari situ kita tentukan untuk simbol ruas kiri :
S : α1 = ab , α2 = b ; A : α3 = a
Aturan produksi yang tidak rekursif kiri :
S cA
A a│bd
Dari situ kita dapatkan :
Untuk simbol ruas kiri S : β1 = cA ; A : β1 = a , β2 = bd
Kita lakukan penggantian aturan produksi yang rekursif
kiri : Untuk yang memiliki simbol ruas kiri S :
S Sab │Sb , digantikan oleh
1. S cAZ1
2. Z1 ab│b
3. Z1 abZ1│bZ1
120
120. Untuk yang memiliki simbol ruas kiri A :
A Aa , diganti oleh :
1. A aZ2 │bdZ2
2. Z2 a
3. Z2 aZ2
Hasil akhir penghilangan rekursif kiri adalah :
S cA
A a│bd
S cAZ1
Z1 ab│b
Z1 abZ1│bZ1
A aZ2 │bdZ2
Z2 a
Z2 aZ2
121
121. Soal-soal Modul – 13
Lakukan penghilangan rekursi kiri :
1. A AbAB │Ɛ
B BAa │A│Ɛ
2. S SBa │Ab
A Sa │AAb │Ɛ
B Sb │BBa│Ɛ
3. S SSC │SSb │abg
B abc│BSb │BCd
C ab
122
122. Modul – 14
BENTUK NORMAL GREIBACH ( BNG )
14.1. Pengertian BNG
Bentuk normal Greibach merupakan bentuk normal yang
memiliki banyak konsekuensi teoritis dan praktis. Dalam BNG
dibatasi posisi munculnya terminal-terminal dan variabel-
variabel. Suatu tata bahasa bebas konteks dikatakan dalam
BNG / Greibach Normal Form (GNF), jika setiap aturan
produksinya ada dalam bentuk :
A aα
A = simbol terminal ( tunggal ), a ϵ T
α = rangkaian simbol-simbol variabel ( V* )
atau kata lain, suatu cfg dalam BNG bila hasil produksinya (
ruas kanan ) diawali dengan simbol terminal, selanjutnya
dapat diikuti dengan rangkaian simbol variabel.
123
123. Contoh CFG dalam BNG :
S a│aAB
A aB
B cS
Untuk dapat diubah ke dalam BNG, tata bahasa semula
harus memenuhi syarat :
• Sudah dalam bentuk normal Chomsky ( BNC ).
• Tidak bersifat rekursif kiri.
• Tidak menghasilkan ε.
Terdapat dua cara pembentukan BNG, yaitu melalui
subtitusi dan perkalian matrik. Pada bagian berikutnya
dibahas kedua cara tersebut.
124
124. 14.2. Pembentukan BNG Dengan Substitusi.
Secara umum langkah-langkah untuk mendapatkan
Bentuk Normal Greibach :
1. Tentukan urutan simbol-simbol variabel yang ada dalam
tata bahasa. Misalkan terdapat m variabel dengan
urutan A1, A2, ….., Am.
2. Berdasarkan urutan simbol yang ditetapkan pada
langkah (1) seluruh aturan produksi yang ruas
kanannya diawali dengan simbol variabel dapat
dituliskan dalam bentuk : Ah Aiγ
Dimana h < > I ( rekursif kiri sudah dihilangkan ), γ
dapat berupa simbol-simbol variabel
a. Jika h < I, aturan produksi ini sudah benar ( tidak
perlu diubah ).
b. Jika h > I, aturan produksi belum benar. Lakukan
substitusi berulang-ulang terhadap Ai
125
125. ( Ganti Ai pada produksi ini dengan ruas kanan produksi
dari variabel Ai ) sehingga suatu saat diperoleh produksi
dalam bentuk : Ah Apγ ( dimana h ≤ p )
• Jika h = p , lakukan penghilangan rekursif kiri
• 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 variabel semula dimana
saja asalkan ditempatkan tidak sebelum Ah ( dikiri ).
4. Setelah langkah 2 dan 3 dikerjakan maka aturan-aturan
produksi yang ruas kanannya dimulai simbol variabel
sudah berada dalam urutan yang benar.
Ax Ayγ ( dimana x < y )
Produksi yang lain ada dalam bentuk :
126
126. Ax Ay ( a = simbol terminal )
Bx γ
Bx = simbol variabel baru yang muncul sebagai akibat
dari operasi penghilangan rekursif kiri.
5. BNC diperoleh dengan cara melakukan subtitusi 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
6. Produksi yang dalam bentuk ; Bx γ juga dapat diubah
dengan cara substitusi seperti pada langkah 5.
Contoh CFG dalam bentuk normal Chomsky dan
memenuhi syarat untuk diubah ke BNC. Simbol awal
adalah S :
127
127. 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
rupa sehingga memudahkan untuk proses selanjutnya.
Kita periksa aturan produksi yang simbol pertama pada
ruas kanan adalah simbol variabel, apakah sudah
memenuhi ketentuan urutan variabel :
• S CA ( sudah memenuhi karena S < C )
• C DD ( sudah memenuhi karena C < D )
128
128. • D AB ( sudah memenuhi karena D > A ).
yang belum memenuhi urutan yang telah kita tentukan
adalah : D AB, karena ruas kiri > simbol pertama ruas
kanan. Maka kita lakukan substitusi pada simbol variabel
A, Aturan produksi menjadi D aB │dB
Setelah semua aturan produksi memenuhi ketentuan
urutan variabel, lakukan substitusi mundur pada aturan
produksi yang belum dalam BNG ( ‘ => dibaca menjadi’ )
• C DD => C aBD │dBD
• S CA => S aBDA │dBDA
Perhatikan substitusi mundur dimulai dari aturan
produksi yang memiliki ruas kiri dengan urutan variabel
paling akhir ( khusus diatas : S < A < B < C < D , maka C
lebih dulu disubstitusikan daripada S )
129
129. Hasil akhir aturan produksi yang sudah dalam BNG :
S aBDA │dBDA
A a│d
B b
C aBD │dBD
D aB │dB
Perhatikan : Setiap substitusi kita lakukan pada simbol
variabel pertama pada ruas kanan ( pada aturan
produksi yang belum dalam BNG tentunya ).
Prinsipnya :
• Biarkan aturan produksi yang sudah dalam BNG.
• Tentukan pengurutan simbol variabel, berdasarkan
kondisi aturan produksi yang ada, buatlah urutan s.r.s.
untuk memudahkan proses selanjutnya. Mulailah terlebih
dahulu dari simbol awal.
130
130. • Lakukan perubahan pada aturan produksi yang belum
memenuhi ketentuan aturan tersebut dan bila perlu
selama proses itu dapat dilakukan substitusi dan
penghilangan rekursif kiri.
• Lakukan substitusi mundur s.r.s. semua aturan produksi
diawali dengan tepat sebuah simbol terminal. Proses
substitusi mundur dimulai dari aturan produksi dengan
urutan paling akhir.
• Lakukan substitusi mundur juga pada aturan produksi
baru yang muncul sebagai hasil penghilangan rekursif
kiri.
131
131. Contoh lain ( dengan simbol awal A ) :
A BC
B CA│b
C AB │a
Kita tentukan urutan simbol : A,B,C ( A < B < C )
A BC ( sudah memenuhi kriteria karena A < B )
B CA ( sudah memenuhi kriteria karena B < C )
C AB ( Padahal C > A sehingga harus diubah )
Pengubahan C AB :
C AB => C BCB => C CACB │abCB
C CACB, Lakukan penghilangan rekursif kiri menjadi :
• C bCBZ1 │aZ1
• Z1 ACB
• Z1 ACBZ
132
132. Kita lihat seluruh hasil produksi dari variabel C, sudah
dalam Bentuk Normal Greibach :
C bCBZ1 │aZ1 │bCB│a
setelah semua aturan produksi sudah memenuhi
ketentuan urutan variabel, lakukan substitusi mundur :
B CA => B bCBZ1 a│aZ1 A│bCBA│aA
A BC => A bCBZ1 AC│aZ1 AC│bCBAC│aAC │bC
Selanjutnya lakukan pula substitusi pada aturan produksi
dengan variabel baru yang terbentuk, pd contoh ini Z1 :
Z1 ACB => Z1 bCBZ1 ACCB│aZ1 ACCB │
bCBACCB│aACCB │bCCB
Z1 ACB Z1 => Z1 bCBZ1 ACCB Z1 │aZ1 ACCB Z1
│ bCBACCB Z1 │aACCB Z1 │bCCB Z1
133
134. Modul – 15
PUSH DOWN AUTOMATA ( PDA )
15.1. Mekanisme kerja PDA.
PDA merupakan mesin automata dari bahasa bebas
konteks ( CFG ). Bila sebuah FSA mempunyai
kemampuan “ memori “ yang terbatas, pada automata
Push Down atau PDA didefinisikan sebuah tempat
penyimpanan yang tidak terbatas berupa stack/
tumpukan.
Stack adalah kumpulan dari elemen-elemen sejenis
dengan sifat penambahan elemen dan pengambilan
elemen melalui suatu tempat yang disebut Top of Stack (
puncak stack ) dengan aturan pengisian LIFO ( Last In
First Out ). Pengambilan elemen dari stack dinyatakan
dengan operasi Pop, sedangkan memasukan elemen ke
dalam stack dengan operasi Push.
135
135. Setiap elemen stack bisa memuat satu simbol, yang
pada PDA disebut sebagai simbol Stack.
Contoh sebuah Stack :
Bila dilakukan operasi Pop, maka
kondisi stack menjadi :
Top Stack
Bila dilakukan operasi Push B, maka kondisi stack
menjadi :
Top Stack
A
D
E
E
D
E
D
B
136
136. Sebuah Push Down Automata di nyatakan dalam 7-tupel
M = ( Q,Σ,Γ,∆,S,F,Z ) , dimana :
Q = himpunan state
Σ = himpunan simbol input
Γ = simbol-simbol tumpukan/ stack
∆ = fungsi transisi
S = state awal , S ϵ Q
F = himpunan final state, F subset Q
Z = simbol awal tumpukan/ top srack, Z ϵ Γ
Dari kompunen diatas bisa kita lihat :
• Definisi untuk : Q, Σ,S,F sama dengan yang ada pada
finite state automata.
• Tupel baru disitu adalah : Γ dan Z yang berhubungan
dengan stack.
137
137. ∆ memiliki kemiripan dengan δ pada finite state
automata, dengan beberapa perbedaan ( akan
dijelaskan nanti ).
PDA dapat dianggap sebagai FSA yang dilengkapi
stack. Sebuah PDA yang menerima suatu input, selain
dapat berpindah state juga bisa melakukan operasi pada
stack. Kondisi/ konsfigurasi PDA pada suatu saat
dinyatakan dengan state dan stack.
Pada PDA terdapat juga 2 jenis transisi ( ∆ ). Yang
pertama memakai simbol input. Bergantung pada simbol
input, simbol pada top stack dan state, terdapat
sejumlah pilihan yang mungkin. Setiap pilihan terdiri dari
state berikutnya dan simbol-simbol ( bisa satu, beberapa
atau kosong ) untuk mengganti simbol pada top stack.
138
138. Penggantian simbol pada top stack bisa berupa
Push, untuk satu atau beberapa simbol, bisa berupa
pop, untuk simbol kosong. Setelah membuat pilihan,
kemudian PDA membaca simbol input berikutnya :
Jenis transisi kedua biasa disebut transisi – Ɛ, mirip
yang pertama, kecuali dilakukan tanpa membaca simbol
input. Transisi ini memungkinkan PDA memanipulasi isi
stack atau berpindah state tanpa membaca simbol input.
Bahasa yang diterima oleh suatu PDA bisa berupa
semua himpunan input, yang mana urutan
pergerakannya bisa menyebabkan PDA mengosongkan
stack. PDA ini dapat disebut PDA yang melakukan
penerimaan dengan stack kosong atau PDA null stack.
Cara lain adalah dengan melakukan mekanisme
seperti bagaimana automata berhingga menerima input,
yaitu dengan menentukan satu atau beberapa state, dan
bahasa yang diterima adalah himpunan semua input
139
139. pilihan transisinya menyebabkan PDA mencapai state
akhir, biasa disebut PDA final state.
Contoh sebuah PDA : Memiliki fungsi transisi berikut :
Q = { q1,q2 } ∆ (q1, Ɛ, Z ) = { (q2, Z) }
Σ = { a,b } ∆ (q1, a, Z ) = { (q1, AZ) }
Γ = { A,B,Z } ∆ (q1, b, Z ) = { (q1, BZ) }
S = q1 ∆ (q1, a, A) = { (q1, AA) }
Z = Z ∆ (q1, b, A ) = { (q1, Ɛ) }
F = { q2 } ∆ (q1, a, B ) = { (q1, Ɛ) }
∆ (q1, b, B ) = { (q1, BB) }
Kita bisa membaca fungsi transisi tersebut sebagai
berikut : ∆ (q1, a, Z ) = { (q1, AZ) }
mesin dengan konsfigurasi :
140
140. state q1 dan top stack Z membaca input ‘ a ‘
Konsfigurasi menjadi :
state q1 push A ke stack, A menjadi top stack
∆ (q1, b, Z ) = { (q1, Ɛ) }
mesin dengan kosfigurasi :
state q1 dan top stack A membaca input ‘ b ‘
Konsfigurasi menjadi :
state q1 A di pop, elemen di bawah A
menjadi top stack
∆ (q1, Ɛ, Z ) = { (q2, Z) }
Z
A
A
Z
141
141. Mesin dengan kosfigurasi :
state q1 dan top stack Z
serta tanpa membaca input ( Ɛ )
Konsfigurasi menjadi :
State q2, stack tidak berubah
Misal ingin diketahui apakah string ‘abba’ diterima oleh
PDA ini :
Perhatikan : kapan Pop/ Push dilakukan pada stack
berdasarkan fungsi transisinya. Pop dan push untuk
setiap kali transisi pada mesin PDA, dapat dilakukan
pada lebih dari satu simbol.
Konsfigurasi awal mesin : state q1 dan top stack Z,
membaca input ‘a’.
Fungsi transisinya : ∆ (q1, a, Z ) = { (q1, AZ) }
Z
142
142. Konsfigurasi mesin menjadi : state q1 A di push.
1. Membaca input ‘b’
Fungsi transisinya : ∆ (q1, b, A ) = { (q1, Ɛ) }
konsfigurasi mesin menjadi : state q1 , top stack di pop
Z
A
Z
Z
143
143. 2. Membaca input ‘b’
Fungsi transisinya : ∆ (q1, b, Z) = { (q1, Ɛ) }
konsfigurasi mesin menjadi : state q1 , B di push
3. Membaca input ‘a’
∆ (q1, a, B ) = { (q1, Ɛ) }
Konsfigurasi mesin menjadi : state q1 top stack di pop
Z
B
Z
144
144. Semua input sudah selesai dibaca
Fungsi transisinya : ∆ (q1, Ɛ, Z ) = { (q2, Z) }
Konsfigurasi mesin menjadi : di state q2 , state q2 berada
dalam F ( final state 0, maka abba, diterima oleh PDA
itu.
Dapat kita lihat PDA diatas termasuk jenis PDA yang
melakukan penerimaan dengan mencapai state akhir.
Z
145
145. Contoh PDA yang melakukan penerimaan dengan jalan
stack kosong. Konsfigurasi PDA sebagai berikut :
Q = { q1,q2 }
Σ = { 0,1,2 }
Γ = { Z,B,G }
S = q1
Z = Z
F = { Ø }
Perhatikan : Untuk PDA menerima dengan stack kosong,
maka himpunan state akhir dinyatakan sebagai Ø
146
146. Memiliki fungsi transisi sebagai berikut :
∆ (q1, 0, Z ) = { (q1, BZ) }
∆ (q1, 0, B) = { (q1, BB) }
∆ (q1, 0, G) = { (q1, BG) }
∆ (q1, 2, G ) = { (q2, Z) }
∆ (q1, 2, Z ) = { (q2, B) }
∆ (q1, 2, B) = { (q2, G) }
∆ (q2, 0, B ) = { (q2, Ɛ) }
∆ (q2, Ɛ, Z ) = { (q2, Ɛ) }
∆ (q1, 1, Z ) = { (q1, GZ }
∆ (q1, 1, B) = { (q1, GB) }
∆ (q1, 1, G ) = { (q1, GG) }
∆ (q2, 1, Z ) = { (q2, Ɛ) }
147
147. Misal ingin diketahui apakah string ‘010’ diterima PDA :
1. Konsfigurasi awal mesin : state q1 stack z, menerima
input ‘ 0 ‘. Fungsi transisinya : ∆ (q1,0, Z ) = { (q1, BZ) }.
Konsfigurasi mesin menjadi : state q1 , B di push.
2. Membaca input ‘ 2 ‘
Fungsi transisinya : ∆ (q1, 2, B ) = { (q2, B) }
Konsfigurasi mesin menjadi state q2, stack ; tetap
Z
B
Z
148
148. 3. Membaca input ‘ 0 ‘.
Fungsi transisinya : ∆ (q2, 0, B ) = { (q2, Ɛ) }
Konsfigurasi mein menjadi : state q2 , B di pop
4. Tanpa membaca input ( Ɛ ).
Fungsi transisinya : ∆ (q2, Ɛ, Z ) = { (q2, Ɛ) }
Konsfigurasi mein menjadi : state q2 , Z di pop
Stack kosong.
Semua input sudah selesai dibaca. Stack kosong, berarti
string tersebut diterima oleh Push Down Automata.
149
149. 15.2. Push Down Automata Untuk Suatu Tata Bahasa
Konteks.
Karena PDA merupakan penerima bahasa-bahasa
bebas konteks, maka untuk suatu bahasa bebas konteks
kita dapat memperoleh sebuh PDA yang menerimanya,
sebaliknya dari bahasa yang diterima oleh sebuah PDA
kita dapat mengetahui suatu tata bahasa bebas konteks.
Sebuh PDA bisa dibuat untuk kumpulan aturan produksi
dari suatu tata bahasa bebas konteks.
Langkah-langkahnya :
a. Definisikan :
Q = { q1,q2 , q3 }
Σ = simbol terminal
S = q1
F = { q2 }
150
150. Untuk yang berhubungan dengan stack tentukan :
Γ = semua simbol variabel, simbol terminal dan Z simbol
awal stack.
b. Mesin ini dimulai dengan mem-push Z pada top stack.
Pada setiap langkah berikutnya dilakukan salah satu
dari hal berikut :
Jika top stack dari simbol tumpukan adalah suatu
variabel ( misal A ), kita menggantinya dengahn ruas
kanan dari A, misal A w , maka kita ganti dengan w.
Jika top stack dari simbol tumpukan adalah suatu
terminal dan jika ia menyamai simbol masukan
berikutnya, kita pop dari tumpukan .
c. Berdasarkan aturan diatas kita dapat mengkonstruksi
empat tipe transisi :
151
151. 1. ∆ (q1, Ɛ, Z ) = { (q2, SZ) }, untuk mem-push simbol awal
(S) ke stack.
2. ∆ (q2, Ɛ, A) = { (q2, w) } , A w adalah sebuah produksi
dalam CFG untuk semua variabel A.
3. ∆ (q2, a, a ) = { (q2, Ɛ) } untuk setiap simbol terminal (
untuk mempop perbandingan terminal yang sama ).
4. ∆ (q2, Ɛ, Z ) = { (q3, Z) } , bila selesai membaca semua
input dan top stack adalah Z, berarti string inout sukses
diterima oleh PDA (q3, state akhir ).
152
152. Contoh penerapan, misalkan sebuah tata bahasa bebas
konteks dengan simbol awal D :
D __> aDa │bDb │c
Dapat dikonstruksi PDA nya :
Fungsi transisinya :
Q = { q1,q2 ,q3 } ∆ (q1, Ɛ, Z ) = { (q2, DZ) }
Σ = { a,b,c } ∆ (q2, Ɛ, D ) = { (q2, aDa),
q2, bDb, q2, c }
Γ = { D,a,b,c,Z} ∆ (q2,a, a ) = ∆(q2,c,c) = {(q2, Ɛ)}
S = q1 ∆ (q2, Ɛ, Z ) = { (q3, Z) }
F = { q3 }
153
153. Dari aturan produksi yang ada kita lihat CFG tersebut
bisa menurunkan untai ‘aca’ sebagai berikut :
D => aDa => aca
Maka PDA diatas juga harus mampu menerima untai
tersebut. Kita coba periksa :
Konsfigurasi awal mesin : state q1, top stack Z , dapat
menerima input ( Ɛ ).
Fungsi transisinya : ∆ (q1, Ɛ, Z ) = { (q2, DZ) }
Konsfigurasi mein menjadi : state q2 , D di push
D
Z
154
154. 1. Tanpa menerima input ( Ɛ ).
Fungsi transisinya : ∆ (q2, Ɛ, D ) = { (q2, aDa) }
Konsfigurasi mein menjadi : state q2, pop top stack, push
‘aDa’
Menerima input ‘ a ‘
Fungsi transisinya : ∆ (q2, a, a ) = { (q2, Ɛ) }
Konsfigurasi mein menjadi : state q2 , pop top stack
D A
Z
Z
D
a
a
155
155. 2. Tanpa menerima input ( Ɛ ).
Fungsi transisinya : ∆ (q2, Ɛ, D ) = { (q2, c) }
Konsfigurasi mein menjadi : state q2, pop top stack, push
‘ c ’
3. Menerima input ‘ a ‘
Fungsi transisinya : ∆ (q2, a, a ) = { (q2, Ɛ) }
Konsfigurasi mein menjadi : state q2 , pop top stack
Z
A
C
Z
A
156
156. 4. Tanpa Menerima input ‘ a ‘
Fungsi transisinya : ∆ (q2, Ɛ, Z ) = { (q3, Z) }
Konsfigurasi mein menjadi : state q3
Tidak ada transisi lagi dari q3 , karena q3 state akhir dan
semua input sudah selesai dibaca, maka menandakan
untai ‘ aca ‘ diterima oleh Push Down Automata.
Perhatikan :
Bila perlu lakukan pengubahan CFG ke BNG lebih
dahulu untuk memudahkan mengkonstruksi PDA – nya.
Z
157
157. 15.3. Deskripsi Seketika Pada Mesin PDA
Tahapan transisi no (1) sampai no (7) pada contoh
diatas dapat pula dinyatakan dalam suatu notasi yang
disebut deskripsi seketika ( instantaneous description ).
Deskripsi seketika tersebut digunakan untuk
menyatakan secara formal kosfigurasi mesin PDA pada
suatu saat. Perubahan dari suatu kondisi ke berikutnya
dipisahkan dengan tanda ‘ │ ─ ‘. Kosfigurasi pada suatu
saat dapat dinyatakan dengan triplet : ( q, w, u ).
Dimana q menyatakan state, w adalah string dan u
adalah isi stack dengan simbol terkiri adalah top stack.
Jadi tahapan no (1) – (7) dapat dinyatakan sebagai
berikut :
( qu,aca,Z ) │ ─ ( q2 , aca, DZ ) │ ─ ( q2 , aca, aDaZ ) │
─ ( q2 , ca, DaZ ) │ ─ ( q2 , ca, caZ ) │ ─ ( q2 , a, aZ ) │ ─
( q2 , Ɛ, Z ) │ ─ ( q3 , Ɛ, Z )
158
158. Pada awalnya memang sulit bagi kita untuk ‘membaca’
suatu PDA dibandingkan FSA yang lebih sederhana.
Jangan kuatir, itulah sebabnya kita memerlukan otomata
untuk melakukan hal-hal yang ‘ sulit ‘ bagi kita.
Gambar 13.1. Beberapa Jenis Push Down Automata.
PDA
DPDA NPDA
NULL STACK FINAL STATE NULL STACK FINAL STACK
159
159. Bila pada FSA terdapat DFA dan NFA, maka pada
PDA bisa pula digolongkan menjadi yang Deterministic
Push Down Automata ( DPDA ) Dan ( NPDA ). Contoh
PDA yang deterministic adalah PDA diatas ( sub bab
13.2 ), sedang NPDA ada pada contoh di sub bab 13.1.
Itu bisa kita lihat pada Gambar 13.1.
Dari suatu DPDA dapat dilakukan pengubahan ke
NPDA, tetapi dari NPDA tidak dapat diubah menjadi
DPDA. Inilah perbedaan antara PDA dengan FSA.
Bahasa-bahasa yang diterima oleh DPDA bisa disebut
bahasa bebas konteks deterministic.
Keterkaitan antara keduanya dapat dilihat pada gambar
13.2.
160
160. Gambar 15.2. : Kedudukan Bahasa Bebas Konteks
Determistic
Context Free
Language
Deterministi
c Context
Free
Language
161
161. 15.4. Ekivalensi Final State PDA Dan Null Stack PDA
Dapat dilakukan pengubahan Final state PDA ke
Null stack PDA dan sebaliknya. Misalkan kita memiliki
M1 adalah Final state dengan konsfigurasi :
M1 = ( Q, Σ, Γ, ∆, S, F, Z )
Dapat diperoleh pada Null stack M2 , dengan
menambahkan : simbol stack baru yang tidak dikenal M1
sebut saja X. Simbol baru ini merupakan simbol stack
awal dari mesin M2 . Jika stack hanya berisi simbol X
berarti menurut M1 stack tersebut ‘ kosong ‘. Hal ini
diperlukan untuk mencegah terjadinya kondisi bahwa
stack dalam keadaan benar-benar ‘kosong’, padahal
mesin belum mencapai state akhir. State baru qs yang
akan merupakan state awal dari M2 dan state baru q1
yang dipakai M2 untuk menghapus isi stack yang tersisa
jika M1 selesai beroperasi.
162
162. Konsfigurasi M2 :
M2 = ( Q U { qs, qf }, Σ, Γ, U { X }, ∆’, qs, Ø, X )
Selanjutnya kita tentukan ‘ kelakuan ‘ dari M2 , yaitu
fungsi transisinya (∆’ ) :
M2 bekerja dengan state awal qs dan simbol awal stack
X, maka kita buat transisi untuk berpindah ke state awal
semula ( misal S ) dan mem-push Z sebagai top stack :
∆’( qs, Ɛ, X ) = { ( S, ZX ) }
Selanjutnya M2 akan menirukan kelakuan M1 :
∆’( q, α, P ) = ∆ (q, α, P ) , untuk setiap q ϵ Q, untuk
setiap α ϵ ( Σ U Ɛ ), untuk setiap P ϵ Γ
Bila mencapai ‘ final state di M1 maka mesin M2 akan
berpindah ke qf
163
163. ∆( q, Ɛ, P ) = { ( qf, P ) } untuk setiap q ϵ F, untuk setiap
P ϵ ( Γ U{ X } ). Selanjutnya lakukan pop semua elemen :
∆’( qf, Ɛ, P ) = { (qf, P ) } untuk setiap P ϵ ( Γ U{ X } ).
Sebagai contoh, misalkan Final State Push Down
Automata dengan konsfigurasi :
Q = { q1,q2 ,q3 }
Σ = { a,b,c }
Γ = { D,a,b,c,Z, X }
S = q1
F = { q3 }
Z = Z
Diubah ke null stack PDA dengan melakukan
pengubahan :
164
164. Q’ = { q1,q2 ,q3, qs, qf }
Σ = { a,b,c }
Γ’ = { D,a,b,c,Z, X }
S’ = qs
F’ = Ø
Z’ = X
Selain fungsi transisi yang sudah ada
∆ (q, α, P ) = ∆ (q, α, P ) untuk setiap q ϵ Q, untuk setiap
α ϵ ( Σ U Ɛ ), untuk setiap P ϵ Γ , kita tambahkan fungsi
transisi baru sebagai berikut :
Transisi untuk berpindah ke state awal semula :
∆’ (qs, Ɛ, X ) = { (q1, ZX) }
Transisi dari final state’ dimesin semula untuk berpindah
ke qf :
165
165. ∆’ (q3, Ɛ, D ) = { (qf, D) }, ∆’ (q3, Ɛ, a ) = { (qf, a) },
∆’ (q3, Ɛ, b ) = { (qf, b) },
∆’ (q3, Ɛ, c ) = { (qf, c) } , ∆’ (q3, Ɛ, Z ) = { (qf, Z) } ,
∆’ (q3, Ɛ, X ) = { (qf, X) }
Transisi untuk melakukan pop semua elemen saat
mencapai state qf :
∆’ (qf, Ɛ, D) = { (qf, Ɛ) } , ∆’ (qf, Ɛ, a ) = { (qf, Ɛ) } ,
∆’ (qf, Ɛ, b ) = { (qf, b) } , ∆’ (qf, Ɛ, c ) = { (qf, Ɛ) } ,
∆’ (qf, Ɛ, Z ) = { (qf, Ɛ) } , ∆’ (qf, Ɛ, X ) = { (qf, Ɛ) }
Langkah-langkah untuk melakukan perubahan null stack
PDA ke Final state PDA.
Misalkan saja kita memiliki M1 adalah PDA null stack
dengan kosfigurasi : M1 = ( Q, Σ, Γ, ∆, S, Ø, Z )
166
166. Dapat diperoleh PDA final state M2 dengan
menambahkan : simbol stack baru yang tidak dikenal
oleh M1, sebut saja X. Simbol baru ini merupakan simbol
awal stack awal dari mesin M2. Simbol ini berguna
sebagai sentinel, bila melihat X maka M2 dapat
mengetahui jika stack kosong. State baru qs yang akan
merupakan state awal dari M2 dan state baru qf yang
merupakan state final dari M2.
Konsfigurasi M2 :
M2 = ( Q U { qs, qf }, Σ, Γ U { X }, ∆’, qs, { qf } , X )
Selanjutnya kita tentukan kelakukan dari M2, yaitu fungsi
transisinya ( ∆’ ) : M2 bekerja dengan state awal qs dan
simbol awal stack X, maka dibuat transisi berpindah ke
state awal semula ( misal S ) dan mem-push Z sebagai
top stack : ∆’ (q2, Ɛ, X ) = { (qf, X) }
167
167. Selanjutnya M2 akan menirukan kelakuan M1 :
∆’ (q1, α, P ) = ∆ (q1, α, P ) untuk setiap q ϵ Q, untuk
setiap α ϵ ( Σ U Ɛ ), untuk setiap P ϵ Γ .
Jika M2 menemukan simbol X, M2 menganggap stack
kosong, maka berpindah ke state final qf :
∆’ (q2, Ɛ, X ) = { (qf, X) } untuk setiap q ϵ Q
Sebagai contoh, misalkan kita memiliki null stack PDA
dengan kosfigurasi :
Q = { q1,q2 }
Σ = { 0, 1, 2 }
Γ = { Z, B, G}
S = q1
F = Ø
Z = Z
168
168. Diubah ke final state PDA dengan melakukan
pengubahan :
Q’ = { q1,q2 ,qs, qf }
Σ = { 0, 1, 2 }
Γ’ = { Z, B, G, X}
S’ = qs
F’ = { qf }
Z’ = X
Selain fungsi transisi yang sudah ada (∆’ (q, α, P ) = ∆
(q, α, P ) untuk setiap q ϵ Q, untuk setiap α ϵ ( Σ U Ɛ ),
untuk setiap P ϵ Γ . Kita tambahkan fungsi transisi baru
sebagai berikut :
Transisi untuk berpindah dari state ke state final qf bila
menemui top stack adalah X.
169
169. ∆’ (q1, Ɛ, X ) = { (qf, X) } , ∆’ (q2, Ɛ, X ) = { (qf, X) }
perhatikan : Pada Final state PDA, kita tidak
berkepentingan dengan kondisi stack setelah mencapai
state akhir, sehingga kita tidak perlu membuat transisi
untuk mengosongkan stack.
170
170. Soal-Soal Modul – 15
1. Konstruksikan PDA yang menerima bahasa dengan tata
bahasa bebas konteks berikut :
S aAA
A aS │bS│a
2. Tentukan aturan produksi untuk tata bahasa bebas
konteks yang diterima oleh PDA dengan konsfigurasi :
Q = { q0,q1 }
Σ = { 0, 1 }
Γ = { X, Z}
S = q0
F = Ø
Z = Z
171
171. memiliki fungsi transisi sebagai berikut :
∆ (q0, 1, Z ) = { (q0, XZ) }
∆ (q0, 1, X ) = { (q0, XX) }
∆ (q0, 0, X ) = { (q1, X) }
∆ (q0, Ɛ, Z ) = { (q0, Ɛ) }
∆ (q1, 1, X ) = { (q1, Ɛ) }
∆ (q1, 0, Z0 ) = { (q0, Z) }
3. Buktikan apakah PDA diatas menerima string input
‘ 001100 ‘ ?.
4. Mengapa pada PDA yang melakukan penerimaan
dengan stack kosong, himpunan state akhir = Ø
172
172. DAFTAR PUSTAKA
• Alfred J. Aho & Jeffrey D. Ullman, The Theory of Parsing,
Translation and Compiling Vol I : oarsing, Prentice Hall,
1972.
• Dean Kelly, Otomata dan Bahasa-Bahasa Formal,
Sebuah Pengantar, Prenhalindo, 1999.
• Firrar Utdirartatmo, Teori Bahasa dan Otomata, J & J
Learning, Yogyakarta, 2001.
• John E. Hopcroft and Jeffrey D. Ullman, Introduction To
Automata Theory, Languages and Computation, addison
Wessley Inc, 1979.
• Peter Linz, An Introduction to Formal languages and
Automata, DC Heath and Company, 1990.
173