TEORI
BAHASA
DAN
OTOMATA
Amir Hamzah
AKPRIND PRESS
2009
1
TEORI BAHASA DAN OTOMATA
Amir Hamzah
i
Kata Pengantar
Puji syukur dipanjatkan kehadirat Allah Subhanallah Wa Ta’ala, karena hanya atas
petunjuk dan redhaNya akhirnya diktat ini dapat terselesaikan. Diktat ringkas ini mungkin
masih sangat sedikit dapat membantu dalam penyampaian Teori Bahasa dan Otomata
kepada mahasiswa. Akan tetapi mengingat terbatasnya buku yang ada di perpustakaan dan
masih sedikitnya buku-buku berbahasa indonesia tentang Teori Bahasa dan Otomata,
diharapkan diktat ini dapat membantu mempermudah menerima materi kuliah.
Diktat ini mendukung proses pembelajaran mata kuliah Teori Bahasa dan Otomata,
yang disampaikan dalam 3 sks. Diktat memuat tujuan instruksional setiap bab pembahasan
dan memuat uraian-uraian yang dibuat sesingkat mungkin dengan beberapa contoh
penyelesaian masalah dan beberapa soal latihan sebagai evaluasi pembelajaran. Tentu saja
diperlukan buku-buku tambahan bagi mahasiswa untuk dapat menguasai materi-materi lebih
mendalam.
Akhirnya mudah-mudahan tulisan singkat ini dapat membantu para mahasiswa. Kritik
dan koreksi kami ucapkan terima kasih.
ii
DAFTAR ISI
iv
BAB I. Konsep Dasar Otomata & Bahasa Formal 1
BAB I
KONSEP DASAR OTOMATA DAN BAHASA FORMAL
1
BAB I. Konsep Dasar Otomata & Bahasa Formal 2
Sifat-sifat Otomata :
1. Kelakuan mesin otomata bergantung pada rangkaian input yang diterima mesin
tersebut.
2. Setiap saat berada pada status tertentu, dan dapat pindah ke status baru karena
perubahan input.
SENTENCE
NOUN VERB
He Sleeps
Gambar 1.1 Proses penurunan kalimat dari grammar : N+V
Penurunan kalimat He runs quickly dapat digambarkan (dengan notasi yang lebih
singkat):
NP VP
V ADV
He runs quickly
Gambar 1.2 Proses penurunan kalimat dari grammar : N+V+Adj
NP VP
Suatu hasil yang secara grammar benar tetapi mungkin aneh dalam
kenyataannya adalah kalimat : The large mathematician sleeps quickly. Hal ini
cukup memberikan gambaran bahwa dalam bahasa natural ada hal-hal yang sulit
dirumuskan secara eksak diluar grammar. Sebuah kalimat yang benar secara
grammar belum tentu dalam realitasnya 'make sense'. Disinilah letak kesulitan
analisis bahasa natural.
Analogi yang digunakan dalam bahasa formal yang diambil dari bahasa
natural bahasa inggris diatas antara lain adalah : Ada sebuah simbol dalam abjad
yang didefinisikan sebagai S, atau start simbol, yang berfungsi seperti SENTENCE.
Dari simbol S inilah seluruh string dalam suatu bahasa dapat diturunkan.
Selanjutnya aturan produksi dalam grammar dapat dianalogikan sebagai rumusan
aturan tata bahasa tersebut. Aturan produksi dinamakan demikian karena aturan
tersebut diciptakan untuk memproduksi suatu kalimat atau “string”
Dalam bahasa formal persoalannya banyak disederhanakan. Suatu aturan
produksi dengan ketat harus diikuti untuk menurunkan string. Misalnya dimiliki
aturan produksi :
S Ab ; S
Bb A aa
B a
Maka dengan aturan tersebut dapat diturunkan suatu string : aab dan ab
String aab dengan penurunan : S Ab aab
5
BAB I. Konsep Dasar Otomata & Bahasa Formal 6
String ab dari jalur penurunan : S Bb ab
Proses penurunan string aab dan ab dapat digambarkan dalam diagram pohon
sebagai berikut :
S S
A b B b
a a a
6
BAB I. Konsep Dasar Otomata & Bahasa Formal 7
1.7 Latihan
7
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya 8
BAB II
KELAS-KELAS BAHASA DAN MESIN PENGENALNYA
abjad huruf besar, dan cukup SATU HURUF BESAR saja, misalnya : A, B,
atau C.
S : Sebuah simbol yang dinamakan simbol awal (start symbol). Simbol S
merupakan awal penurunan seluruh string anggota bahasa yang dibangkitkan
oleh tata bahasa G tersebut.
P : Himpunan berhingga aturan-aturan produksi. Aturan produksi merupakan
ekspresi yang dapat dituliskan sebagai , dengan dan masing-masing
adalah string (rangkaian simbol-simbol) yang dapat terdiri dari simbol terminal
dan atau simbol non terminal, misalnya : A Ba
8
Catatan : Penulisan grammar dibeberapa buku ditulis sebagai G ( V, T,S,P), dengan
V adalah himpunan Vocabulary, atau himpunan seluruh simbol yang ada (baik
simbol terminal maupun non terminal). Sehingga dalam hal ini V terdiri dari S
(start simbol), N (Non terminal simbol) dan T (Terminal simbol), atau dapat di
tulis : V = T N
dan = BBaABab
Perlu diingat bahwa operasi penggabungan tidak bersifat komutatif , artinya
, kecuali jika =
Panjang string :
Panjang string dimaksudkan sebagai banyaknya simbol dalam string .
Panjang string dilambangkan sebagai || .
Contoh : = ABc maka || = 3
= abc maka || = 3
Panjang string tidak memperhatikan apakah simbol tersebut terminal atau non
terminal, setiap simbol dihitung memiliki panjang satu .
Suatu string khusus yang panjangnya nol, atau string yang terdiri dari "tak
satupun simbol" disebut sebagai string kosong (empty string) yang dilambangkan
dengan (baca : epsilon) atau (baca: lambda).
String kosong memiliki sifat penggandengan sebagai :
==
Penutup (Closure) :
Jika dimiliki himpunan A, maka Cleene-closure dari A, dinotasikan dengan A*
didefinsikan sebagai :
0 1 2
A* = A A A … A
n
Dengan notasi A (baca: A pangkat n) didefinisikan sebagai concatenation
(gandengan) : AAA …A sebanyak n kali, atau A di gandengkan dengan A sebanyak
n kali.
Definisi lebih formal dapat ditulis secara rekursif
n n-1
sebagai: A = A A
An-1 = A An-2
An-2 = A An-3
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya 11
0
A=AA
0
A =
Contoh 2.2 :
Positive Closure :
Selain Cleene-Closure, atas himpunan A juga dapat didefinisikan suatu
+
closure yang disebut sebagai positive-closure (A ), yang didefinisikan sebagai :
1 2
A+ = A A … A
Dengan demikian dapat ditulis pula bahwa :
+ +
A* = A atau A = A* -
L(G) = { w * | S w}
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya 12
Dengan simbol S w
dibaca : seluruh rangkaian string w yang dapat diturunkan dari S dengan sembarang
produksi dalam P dan sembarang penurunan. String w adalah hanya terdiri dari
simbol-simbol terminal saja atau empty string.
Contoh 2.3:
Dimiliki suatu tata-bahasa G( , N , S, P) dengan :
={ a,b } N = { A, B} dan P ={ S Aa ; S AB ; A aa; B b; B }
tentukan bahasa yang dibangkitkan oleh grammar G di atas.
S S S
Aa A B A B
aa aa b aa
Gambar 2.1 Penurunan string aaa, aab dan aa
dengan masing-masing dan adalah string-string yang dapat terdiri dari
simbol Non terminal atau pun simbol terminal, atau : , ( N)*
maka masing-masing kelas tata-bahasa dibatasi sebagai berikut:
yaitu panjang string lebih kecil atau sama dengan panjang string
Contoh 2.5. :
Jawab :
Grammar contoh 2.5 memenuhi tata bahasa tipe-0 dan tipe satu .
Sedangkan tatabahasa pada contoh 2.4 hanya memenuhi tipe-0 dan
tidak memenuhi tipe-1, karena ada aturan produksi : BBB aa pada
contoh 2.4.
Penurunan string "a" ditempuh dengan :
S ABa AAAa a a
Contoh 2.6.:
Tunjukkan bahwa contoh 2.5. adalah tidak termasuk pada grammar tipe
2.
Jawab:
Jika diperhatika aturan produksi pada contoh 2.5 :
S ABa, A BB, B ab, AB AAA , A aa , A
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya 15
Ada aturan : AB AAA ; yaitu aturan produksi dimana ruas kiri (AB)
memiliki panjang lebih dari 1. Ini melanggar aturan untuk grammar tipe-
2, dengan demikian tidak termasuk grammar tipe-2.
0 = Tipe-0
1 = Tipe-1
2 = Tipe-2
3 = Tipe-3
Contoh 2.7 :
Penurunan : S aA aaA aaaA … aaaa..aa B
aaa..abB aaa..aab
Hasilnya : aaa..aab
Penurunan : S aA aaA aaaA … aaaa..aa B
aaa..abB aaa..aabbB
aaa..aabb…bB aaa..aabb…b aaa..aabb…b
Hasilnya : aaa..aabbb..b
Bahasa yang dibangkitkan adalah "sederatan a dengan jumlah minimal SATU buah
diikuti sederetan b dengan jumlah minimal NOL buah" atau dapat dituliskan
sebagai:
L(G)={aa*b*}
0 1 2
Dimana a*={a a a … a }
b*={b0 b1 b2 … b }
Beberapa tingkatan tata bahasa melahirkan beberapa tingkatan bahasa. Tata bahasa
regular membangkitkan bahasa regular, tata bahasa bebas konteks membangkitkan
bahasa bebas konteks dan seterusnya. Mesin abstract yang merupakan pengenal dari
berbagai tingkatan bahasa tersebut dimulai dari yang paling sederhana adalah :
2.5 Latihan
1. Jika dimiliki suatu tata-bahasa G( , N , S, P) dengan ={ a,b } N = { A, B}
dan P ={ S Aa ; S AB ; A aa; B bB; B }, tentukan bahasa yang
dibangkitkan oleh grammar G di atas.
2. Dimiliki grammar G( ,N ,S , P) dengan = { a, b } , N={ A, B , S} dan P = {
S ABa, A BB, B ab, AB ab, BBB aa}. Perlihatkan bahwa string : aba
dan abababa adalah string-string yang diproduk oleh grammar tersebut.
3. Dimiliki grammar G( ,N ,S , P) dengan = { a, b } , N={ A, B , S} dan P = {
S ABC, A BB, B Bab, B , C aa , A }. Termasuk tipe apakah tata
bahasa tersebut? Apakah alasannya?
4. Dimiliki grammar G( ,N ,S , P) dengan = { a, , c } , N={ A, B ,C, S} dan P =
{ S ABC, A aA, A B, B bB, B C, C cC, C }. Tentukan bahasa
yang dibangkitkan oleh tata bahasa tersebut.
5. Dimiliki grammar G( ,N ,S , P) dengan = { a, b, c } , N={ A, B , C, S} dan P
= { S ABC, A aA, A , B bB, B , C cC, C }. Tentukan bahasa
yang dibangkitkan oleh tata bahasa tersebut. Apakah perbedaan bahasa yang
dibangkitkan dengan tata bahasa nomor 4? Jelaskan alasannya
6. Tentukan tata bahasa yang mengenali bahasa-bahasa berikut ini :
a) L = { (abc)n | n > 0 }
b) L = { (ab)n c| n > 0 }
c) L = { an bmck | n,m,k > 0 }
7. Tentukan tata bahasa yang mengenali bahasa-bahasa berikut ini :
a) L = { 1*0* }
b) L = { 10* }
c) L = { 1*0 }
d) L = (1,0)*
8. Tentukan tata bahasa yang mengenali bahasa-bahasa berikut ini :
a) L = { a*aa, b*a }
b) L = { a*bbbb* }
c) L = { abcd }
BAB III. Ekspresi Regular dan Kelas Bahasa Regular 18
BAB III
EKSPRESI REGULAR DAN KELAS BAHASA REGULAR
Sebelum memasuki bahasan tentang ekspresi regular dan bahasa regular, dapat
dinyatakan suatu kenyataan berikut. Jika adalah suatu himpunan abjad (yang tentu
saja jumlahnya terhingga), maka :
1. * = himpunan seluruh string yang dapat disusun dari abjad dalam (seperti
yang telah disampaikan dalam bab II) adalah berjumlah TAK HINGGA
(countably inifinite).
2. Kumpulan dari semua bahasa yang dapat dibangkitkan dari abjad dalam
berjumlah tak terhitung (uncountably)
Selanjutnya ekspresi regular dapat didefinisikan secara rekursif dari definisi-definisi
berikut :
4. Jika a dan b adalah ekspresi regular maka ab , ab dan a* adalah ekspresi
regular.
BAB III. Ekspresi Regular dan Kelas Bahasa Regular 19
Notasi ab , ab dan a* adalah penyederhanaan notasi yang diperoleh dari notasi asli
sebagai berikut : Jika dimiliki himpunan A,B sebagai himpunan berikut :
Ekspresi a* maksudnya :
A={a}
A* = CLEENE closure dari himpunan A, seperti yang telah didefinisikan
0 1 2
dalam bab II : A A A … A , yang menghasilkan suatu
himpunan : { , a, aa, aaa, aaaa, ….}, dinotasikan sebagai a*
Dari definisi tentang ekspresi regular selanjutnya dapat dituliskan beberapa akibat
logis, berdasarkan aturan-aturan dalam teori himpunan, sebagai berikut :
Jika a,b,c adalah ekspresi regular dalam
1. ab = ba
2. a = a
3. aa = a
4. (ab) c = a(bc)
5. a = a = a
6. a = a =
7. (ab)c=a(bc)
BAB III. Ekspresi Regular dan Kelas Bahasa Regular 20
Contoh 3.1:
Ekspresikan dalam bentuk ekspresi reguler kalimat-kalimat berikut :
1. Sederatan NOL minimal nol buah
2. Sederatan NOL minimal satu buah
3. Sederetan NOL minimal satu buah diikuti sederetan SATU sebanyak satu buah
atau lebih
4. Sederetan bit NOL dan SATU sembarang yang diawali dengan NOL dan
diakhiri dengan SATU
5. Sederetan SATU dengan jumlah GENAP
6. Sederetan NOL dengan jumlah GENAP diikuti sederetan SATU dengan jumlah
GANJIL
Jawab :
1. Ekspresinya : 0*
2. Ekspresinya : 00*
3. Ekspresinya : 00*11*
4. Ekspresinya : 0(0,1)*1 atau ditulis : 0(01)*1
5. Ekspresinya : 11(11)*
6. Ekspresinya : 00(00)*1(11)*
Contoh 3.2:
String apakah ekspresi-ekspresi regular berikut :
1. Ekspresi : (1,0)*
2. Ekspresi : (10)*
3. Ekspresi : (0,1)*1*
4. Ekspresi : (00)*(11)*
5. Ekspresi : (11)* (00)*
BAB III. Ekspresi Regular dan Kelas Bahasa Regular 21
Jawab :
1. Sederetan bit NOL dan SATU dengan jumlah sembarang dan susunan
sembarang
2. Sederetan 10 berulang-ulang dengan jumlah ulangan nol atau lebih
3. Sederetan bit NOL dan SATU dengan jumlah sembarang urutan sembarang
diikuti dengan deretan bit SATU dengan jumlah nol atau lebih
4. Deretan NOL kosong atau Genap diikuti deretan SATU kosong atau genap
5. String kosong atau berisi bit NOL genap atau bit SATU genap dengan posisi
sembarang
Contoh 3.3:
Tentukan bahasa yang dihasilkan oleh tata bahasa regular berikut
: G(, N, S, P) ; dimana ={ a,b } N = { A, B} dan
P ={ S aS ; S aB ; S A;B b; B bB; B ;A a}
Jawab :
Untuk menurunkan bahasa dari suatu grammar yang diketahui, maka seluruh
kemungkinan penurunan yang dapat dilakukan oleh grammar tersebut harus
dilakukan. String-string yang dihasilkan dihimpun membentuk suatu bahasa dari
grammar tersebut. Untuk mempermudah pelacakan, tetapkan cacah aturan produksi
yang ada , dalam grammar tersebut ada 7 aturan produksi, yaitu :
1. S aS ;
2. S aB ;
BAB III. Ekspresi Regular dan Kelas Bahasa Regular 22
3. S A;
4. B b;
5. B bB;
6. B ;
7. A a
Kemungkinan 1 : aturan (1,1,1,…)(2)(4) aa*ab
Kemungkinan 2 : aturan (1,1,1,…)(2)(6) aa*a
Kemungkinan 3 : aturan (1,1,1,…)(2)(5,5,5,…)(4) aa*abb*b
Kemungkinan 4 : aturan (1,1,1,…)(2)(5,5,5,…)(6) aa*abb*
Kemungkinan 5 : aturan (1,1,1,…)(3)(7) aa*a
Setelah kemungkinan penurunan seluruhnya dievaluasi selanjutnya hasil evaluasi
yang mungkin sama digabung :
- Kemungkinan 2 dengan kemungkinan 5 adalah sama
- Kemungkinan 1 adalah kemungkinan 2 digandeng dengan b
- Kemungkinan 3 adalah kemungkinan 4 digandeng dengan
b Dengan demikian bahasa yang dihasilkan adalah :
L(G) = { aa*a aa*ab aa*abb* aa*abb*b}
= { aa*a aa*abb*)( b)
3.5 Latihan
1. Tuliskanlah notasi untuk ekspresi regular-ekspresi regular di bawah ini :
a) Sederetan a dengan panjang minimal 1
b) Sederatan a dengan panjang minimal nol dan diakhiri dengan b
c) a atau b dengan panjang minimal nol
d) Sederetan ab dengan panjang minimal nol
2. Bagaimanakah mengungkapkan kalimat untuk ekspresi regular berikut
a) {a,b}
b) {ab}
c) {ab*}
d) {a*b}
e) {a*,b}
f) {a,b*}
g) {a*b*}
h) {a*,b*}
3. Tentukan bahasa yang dihasilkan oleh tata bahasa regular berikut :
G(, N, S, P) ; dimana ={ a,b } N = { A, B} dan jika aturan produksi
masing-masing bahasa adalah sebagai berikut :
a) P ={ S aS ; S }
b) P ={ S aS ; S a}
c) P ={ S aS ; S B;B bB; B b}
d) P ={ S aS ; S ;S B;B bB; B }
e) P ={ S aS ; S B ; B bB; B }
4. Tentukan bahasa yang dihasilkan oleh tata bahasa regular berikut :
BAB IV
FINITE STATE MACHINE (FSM) DAN
FINITE STATE AUTOMATA (FSA)
Tujuan Instruksional
Setelah mempelajari bab ini mahasiswa diharapkan dapat memahami konsep
Finite State Machine (FSM) dan Finite State Automata (FSA) sebagai suatu konsep
abstrak matematis yang menggambarkan perilaku suatu mesin logik yang
menggambarkan cara kerja dari suatu mesin fisik, suatu program, algoritma atau
konsepsi pemecahan masalah. Dalam konteks teori bahasa, mesin FSA dapat
diterapkan untuk mengenali suatu string yang berasal dari bahasa regular yang
dibangkitkan dari suatu grammar regular. Dengan demikian ada hubungan timbal
balik antara bahasa regular dan FSA, yaitu jika dimiliki bahasa rtegular pasti dapat
dikonstruksi suatu mesin FSA, dan sebaliknya jika dimiliki suatu FSA pasti dapat
diturunkan suatu bahasa yang akan dikenali oleh mesin tersebut.
Jeruk dan jika ditekan R akan keluar Juss Apel. Tabel transisi kedudukan dari mesin
ini dapat disajikan seperti tabel 4.1.
Penggunaan tabel 4.1 sebagai fungsi transisi dari mesin Jaja dapat dipahami dalam
beberapa contoh, misalnya :
- Pada saat awal mesin selalu dalam state S0
- Jika pada state S0 menerima masukan 5-an maka akan pindah ke-state S1
- Jika pada state S0 menerima masukan 10-an maka akan pindah ke-state S2
- Jika pada state S0 menerima masukan 25-an maka akan pindah ke-state S5
- Jika pada state S1 menerima masukan 5-an maka akan pindah ke-state S2
- Jika pada state S1 menerima masukan 25-an maka akan pindah ke-state S6
Output mesin jaja diperoleh jika mesin dalam state-S6, yaitu :
- Jika pada state S6 menerima masukan K maka akan pindah ke-state S0 dan
menghasilkan OUTPUT JJ= yaitu keluar Juss Jeruk
- Jika pada state S6 menerima masukan R maka akan pindah ke-state S0 dan
menghasilkan OUTPUT JA= yaitu keluar Juss Apel
Mesin jaja tersebut hanya bisa menerima uang receh maksimum 30. Isi mesin adalah
30 ditunjukkan dengan keadaan S6. Pada kondisi S6 ini mesin berharap menerima
masukan pencet tombol K atau R, bukan menerima masukan uang lagi. Ini nampak
jika dalam state tertentu dimasukkan uang receh sehingga nilai uang dalam mesin
jaja diatas 30 maka akan dikeluarkan kembaliannya. Misalnya :
- Jika pada state S6 menerima masukan 5-an maka akan TETAP pada state
S6 dan menghasilkan OUTPUT (kembalian) 5-an
- Jika pada state S2 menerima masukan 25-an maka akan PINDAH menuju
state S6 dan menghasilkan OUTPUT (kembalian) 5-an
Perilaku Finite State Automata diekspresikan dalam bentuk tabel transisi atau dalam
bentuk diagram transisi.
BAB IV. Finite State Machine(FSM) dan Finite State Automata (FSA) 27
Contoh 4.2
Buatlah diagram transisi dari FSA yang didefinisikan sebagai
: M = ( S, , , S0 dan F) dimana :
S={S0 , S1 , S2 , S3
} ={ 0,1 }
F={ S0 , S3 }
Dengan fungsi transisi ada pada tabel transisi adalah sebagi
berikut:
Tabel 4.2.
Tabel transisi
State
Input
0 1
S0 S0 S1
S1 S0 S2
S2 S0 S0
S3 S2 S1
0 S1
1 1
0
Start
1
S0 S3
1,0 0
S2
010010
100*
110
111
Kumpulan seluruh string yang dikenali oleh FSA merupakan suatu BAHASA yang
dikenali oleh FSA tersebut. Jika dimiliki FSA M maka bahasa yang dikenali oleh
FSA di notasikan sebagai :
L(M) = { x | x semua string yang mengantar M dari S0 ke (Si F)
} Untuk mesin FSA diatas :
L(M) = { 0* , 0*(10)0* , 0*(110,111)0* }
Contoh 4.3. : Tentukan bahasa L(M) yang dikenali oleh Mesin M berikut ini :
0
start 0,1 1 1
S0 S1 S2 S3
0
Gambar 4.2
BAB IV. Finite State Machine(FSM) dan Finite State Automata (FSA) 29
Jawab : Dari diagram terlihat bahwa final-state adalah S3. Pergerakan state yang
mengantar ke final-state adalah S0 S1 S2 S3 yakni string : 011 atau
string 111 yang dapat ditulis sebagai (0,1)11.
Pergerakan yang lain adalah dari S0 langsung ke S2 yaitu : S0 S2 S3
yang dilakukan melalui string : 01
Setelah berada pada final state masih ada pergerakan yang bersifat
rekursif pada S3 yaitu apabila diberikan masukan 0,00,000,… atau : 0*.
Dengan demikian jika seluruh string tersebut digabungkan akan menjadi
: (0,1)110* 010*, sehingga bahasa yang dikenali adalah :
L(M)= { (0,1)110* 010* } = { ((0,1)11 01)0* }
Contoh 4.4 :
Perhatikan gambar FSA a) (Gambar 4.3) dan FSA b) (Gambar 4.4) berikut. Ini
adalah contoh-contoh DFA dan NFA
Tunjukkan gambar a) ini adalah NFA
: 0,1
a).
start 0,1 1
S0 S1 S2
0
Gambar 4.3.
BAB IV. Finite State Machine(FSM) dan Finite State Automata (FSA) 30
Jawab : Dari S0 jika menerima masukan 0 dapat memilih ke salah satu NEXT
state yaitu S1 atau S2.
Dari S1 jika menerima masukan 1 dapat ke S2 atau tetap di
S1. Dengan demikian gambar diatas adalah NFA
0
b).
start 1 1
S0 S1 S2
Gambar 4.4.
Jawab : Pada setiap state , jika menerima masukan selalu HANYA satu NEXT
state yang dituju. Dengan demikian gambar b) adalah DFA.
Contoh 4.4 : FSA berikut merupakan FSA pengenal bilangan kelipatan 4 yang
merupakan suatu NFA. Carilah konversi NFA tersebut menjadi suatu
DFA.
start 0 0
S0 S1 S2
Gambar 4.5.
Jawab:
Jika diperhatikan FSA di atas , yang menyebabkan merupakan NFA adalah
pada state S0 apabila menerima masukan 0 maka next-state nya tidak pasti, yaitu
dapat tetap di S0 atau pindah ke S1. Apabila unsur ini dapat dieliminir maka
konversi dapat dilakukan. Jika diamati diagram di atas NFA tersebut adalah :
M= ( S, , , S0 dan F)
dengan : S ={S0,S1 S2 }
= {0,1}
F={S2}
: ( S0,0) = {S0,S1}
( S0,1)=S0
( S1,0)=S2
Selanjutnya dapat disusun diagram pohon transisi sebagai berikut :
({S0,S1,S2},0)= {S0,S1,S2}
({S0,S1}, 0 )={S0,S1,S2}
(S0,0)={S0,S1} ({S0,S1,S2},1)= {S1}
S0 ({ S0,S1}, 1 )={ S0}
( S0,1)={ S0}
Gambar 4.6 Proses konversi
BAB IV. Finite State Machine(FSM) dan Finite State Automata (FSA) 32
Penjelasan :
Pohon transisi diperoleh dengan menggabungkan next-state yang mungkin
lebih dari satu menjadi suatu himpunan-next state yang pada gilirannya ini dianggap
sebagai suatu state baru. Misalnya apabila pada state S0 diberi masukan 0 maka ada
dua next-state yang mungkin, yaitu S0 dan S1, ini dihimpun menjadi satu himpunan,
yaitu {S0,S1}. Jika dilanjutkan apabila { S0,S1 } mendapat masukan 0 maka next-
state nya menjadi himpunan dari : next-state jika S0 mendapat masukan 0 dan next-
state jika S1 mendapat masukan 0, yakni menjadi {S0,S1,S2}. Demikian seterusnya
apabila next-state next-state yang mungkin dihimpun sampai keseluruhan
kemungkinan selesai dikonstruksi dalam suatu pohon penurunan.
S0 S0,S1 S0
S1 S2 -
S2 - -
{ S0} {S0,S1} S0
{S0,S1} {S0,S1,S2} S0
{S0,S1,S2} {S0,S1,S2} S0
BAB IV. Finite State Machine(FSM) dan Finite State Automata (FSA) 33
1 0
start 0 0
S0 {S0,S1) {S0,S1,S2}
0
1
Gambar 4.7 Hasil konversi NFA ke DFA
Start S0
Start S0
3. Ekspresi regular a, atau r Aturan produksi : A a di wakili oleh :
A
a S1
Start
4. Aturan A aB di wakili oleh :
a
Start A B
BAB IV. Finite State Machine(FSM) dan Finite State Automata (FSA) 34
5. Aturan A di wakili oleh :
6. Aturan produksi rekursif : A aA di wakili oleh :
a
A
Dengan demikian jika dimiliki suatu grammar regular G tertentu maka akan dapat
ditemukan FSA yang mampu mengenali bahasa yang dibangkitkan oleh grammar
tersebut. Demikian juga jika dimiliki suatu FSA maka akan dapat ditentukan tata
bahasa regular yang membangkitkan bahasa yang dikenali FSA tersebut.
Contoh 4.5. : Tentukan tata bahasa yang mengenali bahasa yang dibangkitkan oleh
FSA berikut :
0
start 1 1
S0 S1 S2
Gambar 4.8
Start analog dengan aturan S 1A
1
S0 S1
0
analog dengan aturan A 0A
S1
1
S1 S2 analog dengan A 1B
start analog dengan S 0B
S0 S2
S2
Analog dengan B
Dengan demikian ada 5 aturan produksi yang menjadi bagian dari tata bahasa yang
membangkitkan bahasa yang sama dengan bahasa yang dikenali oleh FSA tersebut,
yaitu :
P={ S 1A, A 0A , A 1B , S 0B, B }
Contoh 4.6 : Tentukan FSA yang mampu mengenali bahasa yang dibangkitkan oleh
grammar berikut ini :
4. B 1B
5. B
Penurunan string dapat menempuh aturan : 1,3, 5 yaitu : S 0A 01B 01 =01
Atau aturan : 1 diteruskan 2 (diulang tak terbatas), dilanjutkan 3, kemudian 4
(diulang tak tertentu) dan aturan 5 : yaitu :
S 0A 00A 000A … 0 ….0A 0…01B 0…011B 0…0111B 0..01..
Sehingga bahasa yang dibangkitkan oleh grammar tersebut adalah :
L(G) = { 00*11* }
Adapun FSA yang mengenali bahasa tersebut adalah :
1
0
start 0 1
S0 S1 S2
Gambar 4.8
Contoh 4.7 : Tentukan FSA yang mampu mengenali bahasa dan Tata bahasa nya
untuk bahasa yang mewakili ekspresi bilangan real yang dapat ditulis
sebagai : xxx.yyyy ; dimana {x,y | 0,1,2,3,4,5,6,7,8,9}
Jawab :
Untuk tata bahasa dapat dituliskan sebagai berikut
start .
S0 S1
BAB IV. Finite State Machine(FSM) dan Finite State Automata (FSA) 37
4.7 Latihan
1. Tentukan bahasa dan grammar yang dikenali oleh FSA berikut :
0
start 1
0 1
S0 S1 S2 S3
1
2. Tentukan bahasa dan grammar yang dapat dikenali oleh FSA berikut ini :
0
start 1 1 0,1
S0 S1 S2 S3
3. Tentukanlah FSA yang mampu mengenali bahasa berikut ini dan tentukan pula
grammar yang membangkitkan bahasa tersebut.
a). 1*0* b).
10*11)
c). (1*0*11)
d). (10*11*)
4. Tentukan bahasa dan mesin pengenal bahasa dari suatu grammar dengan aturan
produksi berikut ini :
S aA
A aA | bB
B bB | b
5. Tentukan bahasa dan mesin pengenal bahasa dari suatu grammar dengan aturan
produksi berikut ini :
S aA
A aA | bB
B bB | b
BAB V. Tata Bahasa Bebas Konteks (Context Free Grammar) 38
BAB V
TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR )
Sehingga dengan demikian perbedaan dengan bahasa regular adalah pada string sisi
kanan tanda panah untuk bahasa regular harus satu terminal tunggal atau terminal
tunggal diikuti non terminal sedang untuk bahasa bebas konteks tidak dibatasi :
Contoh 5.1. :
Grammar dengan aturan :
S a|aA
A bB
B
Adalah tata bahasa regular
Contoh 5.2. :
Grammar dengan aturan :
BAB V. Tata Bahasa Bebas Konteks (Context Free Grammar) 39
S a|aA
A bB |
AA B
Adalah tata bahasa bebas konteks karena ada aturan produksi :
A AA
Contoh 5.3. :
Tentukan bahasa yang dibangkitkan oleh grammar pada contoh 5.2.
Jawab :
1. Anggota bahasa yang pertama adalah a, jika digunakan aturan : S a
2. Jika aturan S aA, kemudian A bB dan B diperoleh :
38
S aA abB ab ab
3. Jika aturan S aA, kemudian A AA , A bB dan B
diperoleh : S aA aAA abBbB abb abb
Atau
S aA aAA abBAA abbBbB abbb abbb
Kesimpulan : Bahasa yang dibangkitkan adalah :
L(G)={a,ab,abb,abbb,abbbb,…}
A AB AbB AbbB Abbb aAbbb aabbb atau
A AB aAB aAbB aAbbB aabbB aabbb
Dan masih banyak kemungkinan yang lain.
S
A B
a A b B
a b B
b
Gambar 5.1
Akhirnya dapat dicatat bahwa untuk menghasilkan string aabbb ada banyak jalur
penurunan, akan tetapi semua jalur penurunan itu akan memiliki pohon penurunan
yang sama. CFG yang untuk penurunan suatu string hanya memiliki satu pohon
penurunan yang sama disebut CFG yang tidak mengandung ambiguity.
Sekarang perhatikan CFG berikut ini
: S SbS | ScS |a
Untuk menurunkan string abaca dapat dibuat penurunan :
S SbS abS abScS abacS abaca
Atau dapat juga
S ScS SbScS SbacS Sbaca abaca
Jika jalur penurunan yang pertama dibuat pohon penurunan diperoleh :
S b S
a S c S
a a
Gambar 5.2
BAB V. Tata Bahasa Bebas Konteks (Context Free Grammar) 41
Sedangkan untuk jalur penurunan yang kedua jika dibuat pohon penurunan
:S ScS SbScS SbacS abacS abaca
S c S
S b S a
a a
Gambar 5.3
Jika dicermati gambar 5.2 dan gambar 5.3 menghasilkan string yang sama yaitu
:abaca, tetapi ternyata pohon penurunan yang dihasilkan adalah berbeda, untuk
menurunkan string yang sama. Hal ini terjadi karena pada gambar 5.2 S disebelah
kanan diturunkan rekursif baru ke terminal sedangkan pada gambar 5.3 S yang
sebelah kiri yang diturunkan rekursif baru ke terminal. Grammar seperti ini
dikatakan grammar yang memiliki sifat ambiguity.
Ambiguity dapat menjadi sebuah masalah untuk bahasa-bahasa tertentu jika
artinya tergantung pada struktur, seperti halnya pada bahasa alami (natural
language) atau bahasa pemrograman. Meskipun dalam bahasa natural ambiguity ini
tidak menjadi masalah apabila konteksnya diketahui.
Sebagai contoh kalimat :
“Ali melihat seorang laki-laki dengan sebuah teropong”
dapat berarti bahwa “Ali menggunakan alat teropong untuk melihat seorang laki-
laki” atau “Ali melihat seorang laki-laki dengan mata telanjang dan laki-laki yang
dilihat Ali tersebut sedang memegang teropong”
Contoh lain kalimat :
“Silahkan makan sama kambing!!”
dapat berarti “Silahkan makan dengan lauk daging kambing” atau dapat pula
“Silahkan makan bersama kambing yang juga sedang makan”. Jika konteksnya kita
sedang berada di restoran dan mempersilahkan makan tentunya arti yang pertama
BAB V. Tata Bahasa Bebas Konteks (Context Free Grammar) 42
yang mungkin, tetapi bila kita sedang berada di padang gembala menggembalakan
kambing bisa jadi arti yang kedua yang mungkin.
Dalam bahasa pemrograman BASIC dapat kita jumpai potongan statemen
yang mendua arti, misalnya :
X=5
Dalam konteks :
C D
D a|A
Jika dicermati grammar yang terakhir ini terlihat bahwa sebenarnya aturan produksi
yang sangat panjang tersebut dapat disederhanakan menjadi hanya :
S a
dengan membuang S A B C D A yang merupakan proses penurunan yang
“melingkar” dan dapat ditiadakan tanpa mengurangi bahasa yang dihasilkan oleh
tata bahasa tersebut.
Secara garis besar penyederhanaan tata bahasa bebas konteks dapat ditempuh
dengan :
1. Membuang aturan produksi yang tidak berguna
2. Menghilangkan produksi unit
3. Menghilangkan produksi epsilon ( )
Atau penurunan : S ... aa...aSa...a aa..aAaba..aa
aa...aaba..aa Hasilnya adalah : L(G) ={a*ba*, a*ababa*, a*aba*}
Jika diperhatikan aturan produksi A Baa dan aturan B Baa dan dicoba
diturunkan suat string dari S menggunakan aturan tersebut:
S aSa aBaaa aBaaaaa aBaaaaaaa ...
Maka string yang dihasilkan tidak akan pernah sampai pada string terminal karena
tidak adanya aturan produksi B terminal. Dengan demikian atruan produksi
tersebut adalah aturan produksi yang tidak berguna dalam grammar tersebut dan
oleh karenanya ia dapat dibuang. Jika aturan produksi yangh tidak berguna dibuang,
maka grammar menjadi lebih sederhana dengan bahasa yang tetap, yaitu :
G ={ S aSa | Aab | b
A ab| }
A ab| aa | Ba |
B aa | b
C Cbb | aaD
D Ef }
C D|
ef D d
Perhatikan penurunan string : S A
B C D d
Penurunan tersebut dapat disederhanakan menjadi : S d
Sedangkan penurunan string : S A B C ef
Penurunan tersebut dapat disederhanakan menjadi : S ef
Dengan demikian grammar tersebut dapat disederhanakan menjadi :
S Sa | d | ef
Contoh 5.6
Sederhanakan grammar berikut dengan membuang aturan produksi
unit. S A | Aa
A B
B C|b
C D|
ab D b
Jawab :
Penyederhanaan dilakukan dengan memperhatikan aturan beberapa penurunan string
:
S A B b disederhanakan menjadi : S b
S A B C ab disederhanakan menjadi : S ab
S A B C D b disederhanakan menjadi : S
b Dengan demikian grammar dapat disederhanakan
menjadi : S Aa | b | ab
Contoh 5.7:
Sederhanakan grammar berikut dengan menghilangkan produksi epsilon
S Aa | Ba | B
A Aa |
B aA | BB |
Jawab :
Karena produksi ada dua, yaitu A dan B maka dihilangkan satu-
persatu, yaitu menghilangakan aturan yangh melibatkan A dan kemudaian
yang melibatkan B
Substitusikan aturan A pada seluruh aturan yang melibatkan A
Untuk aturan yang melibatkan S Aa, jika disubstitusi A akan muncul aturan
S a. Sehingga aturan yang melibatkan S menjadi : S Aa | Ba | B | a
Untuk aturan yang melibatkan A Aa, menjadi : A Aa | a
BAB V. Tata Bahasa Bebas Konteks (Context Free Grammar) 48
Untuk atuan yang melibatkan B aA, menjadi : B aA | BB | | a
Setelah A dihilangkan Grammar menjadi sebagai berikut : S
Aa | Ba | B | a
A Aa | a
B aA | BB | | a
Selanjutnya substitusikan produksi epsilon B kedalam grammar
yang mengandung non-terminal B, menjadi :
S Aa | Ba | B | a |
A Aa | a
B aA | BB | a
Hasil akhir penyederhanaan grammar tidak mungkin dibebaskan sama sekali
dari produksi epsilon karena grammar tersebut merupakan grammar dari bahasa
yang mengandung epsilon. Dengan demikian hasil penyederhanaan akan
mengandung S
BAB V. Tata Bahasa Bebas Konteks (Context Free Grammar) 49
5. 5 Latihan
BAB VI
BENTUK NORMAL CHOMSKY DAN NORMAL GREIBACH
UNTUK TATA BAHASA BEBAS KONTEKS
S ABCa | AAB | a | b
A AAB | aa
B bB | bb |
C c
Misalkan akan diturunkan suatu string aaaaaaca dengan proses penurunan sebagai
berikut (substitusi ditandai pda simbol yang dicetak tebal) :
S ABCa AABBCa AABABBCa aaABABBCa aaaaBABBCa
aaaaABBCa aaaaaaBBCa aaaaaaCa aaaaaaca
Jika digambarkan pohon penurunan diperoleh pohon :
BAB VI. Bentuk Normal Chomsky dan Normal Greibach untuk CFG 51
A B C a
A A B c
A A B a a
a a a a
Gambar 6.1.
Terlihat bahwa pohon penurunan merupakan pohon yang relatif kompleks. Hal ini
disebabkan aturan produksi mengandung ruas kanan yang tidak terkontrol (panjang
sisi kanan bebas). Jika suatu tata bahasa bebas konteks dapat dimodifikasi ruas
kanan aturan produksinya sedemikian sehingga panjangnya hanya satu atau dua,
tentu dapat dengan mudah dibayangkan bahwa pohon penurunan string yang
terbentuk akan menjadi lebih sederhana, yaitu POHON BINER dimana setiap
simpul hanya akan memiliki cabang satu atau dua. Tata bahasa dengan batasan
seperti ini disebut tata bahasa bebas konteks dalam bentuk NORMAL CHOMSKY
(Chomsky Normal Form =CNF).
Sebuah tata bahasa bebas konteks dikatakan dalam bentuk Normal Chomsky
apabila setiap aturan produksinya memenuhi satu diantara dua bentuk berikut :
1). A BC atau
2). A a
Dengan maksud bahwa A,B,C adlah non terminal simbol dan a adalah terminal
simbol.
BAB VI. Bentuk Normal Chomsky dan Normal Greibach untuk CFG 52
Contoh 6.1
Dalam tata bahasa tersebut yang belum dalam bentuk normal chomsky adalah
aturan produksi :
S ABC , S Aa , A ab, B aB
Sedangkan yang sudah dalam bentuk normal chomsky adalah :
B a,B b dan C c
Aturan yang belum dalam bentuk normal chomsky diubah dengan cara mengusulkan
nonterminal yang baru, yaitu :
S X1C
X1 AB
S AXa
Xa a
A AA
A XaXb
B XaB
BAB VI. Bentuk Normal Chomsky dan Normal Greibach untuk CFG 53
B a
C c
Pohon penurunan string ‘ababc’ dari tata bahasa semula adalah :
A B C
a a a B c
Gambar 6.2.
Jika menggunakan tata bahasa yang sudah dalam bentuk normal chomsky,
pohon penurunannya berupa pohon biner seperti gambar 6.3. Pohon biner memiliki
beberapa keuntungan, antara lain bahwa struktur pohon tersebut akan lebih mudah
dalam representasi pada memori komputer. Representasi pada memori komputer
dengan pohon yang memiliki struktur cabang yang tidak pasti akan sangat sulit
dibuat, yang pada gilirannya ini akan sangat berpengaruh dalam pemrograman
komputernya.
X1 C
A B c
Xa Xb Xa B
a b a b
Gambar 6.3.
BAB VI. Bentuk Normal Chomsky dan Normal Greibach untuk CFG 54
Tiadanya batasan pada ruas kanan aturan produksi tata bahasa bebas konteks
memungkinkan diciptakannya tata bahasa bebas konteks berikut :
S abcd S |
Tata bahasa seperti ini apabila digunakan untuk menurunkan string maka proses
penurunan akan memiliki rekursif kiri. Pada beberapa keadaan rekursif kiri tidak
diinginkan, misalnya pada implementasi program dengan array yang hanya dapat
bergerak ke kanan, sehingga diupayakan untuk dihilangkan. Rekursif kiri ini dapat
dihindari bila pada aturan produksi simbol terkiri dari ruas kanan berbeda dengan
simbol ruas kiri. Bentuk tata bahasa yang bebas dari rekursif kiri dinamakan
memiliki bentuk NORMAL GREIBACH (Greibach Normal Form =GNF).
Sebuah tata bahasa bebas konteks dikatakan berada dalam bentuk normal
greibach apabila semua aturan produksinya berbentuk :
A B
dengan A dan B adalah non terminal dan dapat berupa terminal atau non terminal.
A A1 | A2 | … | An adalah produksi rekursif kiri untuk A
A 1 | 2 | … | m adalah produksi yang bukan rekursif kiri untuk A
Maka tata bahasa tersebut dapat diubah dengan mengusulkan non terminal baru Z
sehingga aturan produksi dapat diganti menjadi :
A 1 | 2 | … | m | 1Z | 2Z | … | m Z
Z 1 | 2 | … | n | 1 Z |2 Z | … | n Z
BAB VI. Bentuk Normal Chomsky dan Normal Greibach untuk CFG 55
Contoh 6.2.
Ubahlah tata bahasa bebas konteks berikut menjadi berbentuk normal greibach.
S Sa | Sb | cA
A Aa | a |
Jawab :
Aturan produksi rekursif kiri untuk S : S Sa | Sb dengan formula dapat
dianalogikan 1 = a dan 2=b
Aturan produksi non rekursif kiri untuk S : S cA dengan formula dianalogikan
1=cA
A a | | aZ2 | Z2
Z2 a | aZ2
Contoh 7.3
Aturan produksi : S Sab | SbbA | a | abc | dengan diusulkan non terminal Z1
dapat dubah menjadi :
S a | abc | | a Z1 | abc Z1 | Z1
Z1 ab | bbA ab Z1 | bbAZ1
Untuk non terminal A : 1=aa ; 2=abc
1=b
Aturan produksi : A Aaa | Aabc | b dengan diusulkan non terminal Z2 dapat
dubah menjadi :
A b | bZ2
Z2 aa | abc |aaZ2 |abcZ2
Hasil konversi tata bahasa dalam bentuk greibach adalah
:S a | abc | | a Z1 | abc Z1 | Z1
Z1 ab | bbA ab Z1 | bbAZ1
A b | bZ2
Z2 aa | abc |aaZ2 |abcZ2
BAB VI. Bentuk Normal Chomsky dan Normal Greibach untuk CFG 57
6.5 Latihan
1. Sederhanakan tata bahasa berikut kemudian ubahlah tata bahasa berikut ini ke
dalam bentuk normal Chomsky :
a) S ABB | Aa
A AA | ab B
aB | a | b C
Bc | AA D
CD | aC
b) S aSA| aBB |
Aa A aA | aa
B aBB | aB |
bB C c
2. Sederhanakan tata bahasa berikut kemudian ubahlah tata bahasa berikut ini ke
dalam bentuk normal Greibach :
a) S Sabc | abA | a |
bA Aaa | ab
B Ba | b D
CD | aC
b) S Sab| aBB |
Aa A Aa | aa
B Bab | a |
bC c
BAB VII. Push Down Automata (PDA) 58
BAB VII
PUSH DOWN AUTOMATA (PDA)
a
start a
S0 S1
Definisi PDA :
= fungsi transisi
S=state awal, S Q
F=himpunan state final
Z=simbol awal STACK
Gerakan PDA
Suatu PDA memiliki fungsi yang dituliskan sebagai :
(qi, i , i) = (qj, j) memiliki makna PDA dalam keadaan state qi dan elemen
STACK teratas i membaca salah satu simbul input i , setelah membaca simbol
PDA akan berubah menjadi kedudukan state qj dan STACK akan berubah (karena
operasi PUSH atau operasi POP) menjadi i .
Contoh :
Andaikan q1 adalah state dalam Q, a adalah simbul masukan, dan A,Z adalah simbol
stack, maka :
BAB VII. Push Down Automata (PDA) 60
(q1, a , Z) = (q1, AZ) , berarti :PDA dalam state q1 dan elemen stack Z
(stack kosong) membaca simbol masukan a : PDA melakukan operasi PUSH elemen
stack A kedalam stack sehingga keadaan PDA menjadi : state q1 dan stack menjadi
AZ (elemen atas stack ditulis sebelah kiri dari elemen dibawahnya).
(q1, , Z) = (q2, Z) , berarti :PDA dalam state q1 dan elemen stack Z membaca
simbol (tidak menerima masukan) : PDA melakukan gerakan merubah state
menjadi q2, dan stack tetap seperti semula.
Contoh 7.1
Diketahui mesin PDA M={Q, ,, ,S,F,Z } dimana :
Q={q1,q2}
= {a,c}
= {A,Z}
F={q3}
S={q1}
:
(q1, a , Z) = (q1,AZ)
(q1, c , Z) = (q2,Z)
(q2, , Z) = (q3,Z)
Jawab:
Andaikan PDA tersebut diberi masukan aacaa maka gerakan PDA dapat dilukiskan
sebagai :
BAB VII. Push Down Automata (PDA) 61
Membaca a yang pertama : (q1, a , Z) = (q1,AZ) , karena state tetap dan push A ke
stack
Membaca a yang kedua : (q1, a , AZ) = (q1,AAZ) , karena state tetap dan push
A ke stack
(q2, , Z) = (q3,Z)
q3 = final state, dengan demikian string aacaa dapat dikenali oleh PDA tersebut .
Selanjutnya PDA tersebut apabila diumpankan string dalam bentuk { ancan | n>0 }
akan menghantar PDA pada final state, jelas bahwa PDA tersebut adalah pengenal
bagi bahasa { ancan | n>0 } dari grammar yang telah dibicarakan diatas.
Dalam diskripsi sesaat dengan cara diatas, setiap simbol yang akan dibaca diberi
tanda dengan garis bawah, perubahan state dan perubahan stack dicantumkan pada
gerakan berikutnya.
Contoh 7.2
Tentukan bahasa bebas konteks dan grammar bebas konteks yang dikenali oleh PDA
berikut ini :
Jawab :
PDA yang akan ditentukan mengenali bahasa apa dicoba diberi masukan string
abba. Deskripsi sesaat pembacaan string abba adalah sebagai berikut :
BAB VII. Push Down Automata (PDA) 63
Pada state q1 :
- Jika top stack Z membaca a maka push A ke dalam stack
- Jika top stack A membaca a maka push A ke dalam stack
- Jika top stack B membaca a maka POP A dari dalam stack
- Jika top stack Z membaca b maka push B ke dalam stack
- Jika top stack A membaca b maka POP A dari dalam stack
- Jika top stack B membaca b maka POP B dari dalam stack
Pada state q2 :
- Jika top stack Z membaca maka state berubah ke q2 (final state)
BAB VII. Push Down Automata (PDA) 64
Dapat disimpulkan bahwa sederetan a dibaca maka sederatan A akan di PUSH, dan
deretan A tersebut akan di POP dari stack apabila membaca sederetan b. Dan
sebaliknya jika sederetan b dibaca maka sederatan B akan di PUSH ke dalam stack
dan akan di POP apabila deretan a dibaca. Sehingga bila dimiliki string dimana
jumlah a dan jumlah b adalah sama maka dapat dipastikan string tersebut dapat
dikenalai oleh PDA tersebut. String-string tersebut misalnya :aabb, abab, aaabbb,
ababab, bbbaaa dan lain-lain.
L = {deretan a atau b dengan jumlah 0 atau lebih dengan syarat jumlah simbol a dan
simbol b dalam string adalah sama }
S aSb | bSa |
Contoh 7.3
Tentukan tata bahasa bebas konteks (CFG) dari bahasa bebas konteks
L={anbn | n > 0} dan tentukan pula PDA yang mengenalinya.
Jawab :
Bahasa tersebut adalah : ε, ab, aabb, aaabbb dan seterusnya. Dengan kata lain bahasa
tersebut adalah a diikuti b dengan jumlah nol atau lebih dengan syarat banyaknya a
dan b harus sama.
kita PUSH A kedalam STACK dan ketika membaca b kita POP A dari dalam
STACK. Jika jumlah a dan b sama maka stcak akan kembali seperti semula.
Mesin tersebut adalah :
:
(q1, , Z) = (q3, Z)
(q1, a , Z) = (q1, AZ)
(q1, a , A) = (q1, AA)
(q1, b , A) = (q2, A)
(q2, b , A) = (q2, )
(q2, , ) = (q3, )
BAB VII. Push Down Automata (PDA) 66
7.5 Latihan
S aSbb | c
Tentukanlah bahasa yang dibangkitkan oleh CFG tersebut dan rancanglah PDA
yang dapat mengenali bahasa tersebut.
2. Jika dimiliki bahasa : xcxr dengan x adalah string terdiri dari a dan atau b dan
notasi xr menggambarkan urutan terbalik dari x, misalnya jika x=’aab’ maka xr
=’baa’, dan jika x=’bbaaa’, maka xr=’aaabb’
Tentukanlah CFG yang dapat mengenali bahasa tersebut dan tentukan pula PDA
yang mengenalinya.
3. Tentukanlah bahasa dan tata bahasa yang dikenali oleh PDA berikut ini
: M={Q, ,, ,S,F,Z } dimana :
Q={q1,q2,
q3} = {a,b}
= {A,B,Z}
F=q3
S=q1
:
(q1, , Z) = (q3, Z)
(q1, b , A) = (q2, A)
(q2, b , A) = (q2, )
(q2, , ) = (q3, )
4. Tentukanlah bahasa dan PDA yang mengenalinya jika berikut ini diberikan
CFG:
S aaSb | c
BAB VIII. Mesin Turing 67
BAB VIII
MESIN TURING
S =state awal, S Q
= fungsi transisi : Q X Q X X {R,L} R
= posisi baca/tulis bergerak kekanan (RIGHT) L =
posisi baca/tulis bergerak kekiri (LEFT)
b b b
Contoh 8.1
Dimiliki mesin turing dengan definisi M={ Q, ,, S,F,b, }
Q={q1,q2}
BAB VIII. Mesin Turing 69
= {a,b}
= {a,b, b }
S={ q1}
F={ q2}
: (q1,a)= (q1,a,R)
(q1,b)= (q1,a,R)
(q1, b)= (q2, b ,L)
Pada state awal q1, bila mesin membaca a, maka ia tetap di q1, kemudian
menulis a dan gerak kekanan.
Bila membaca b tetap q1 , menulis a dan bergerak kekanan.
Jika membaca blank kedudukan jadi q2 dan bergerak ke kiri.
Dengan demikian apabila diberikan umpan deretan string yang terdiri dari
deretan a dan b maka hasil adalah sederatan a dan kedudukan akhir adalah q2
yang merupakan kedudukan final.
Berikut ini gerakan mesin tersebut apabila diberi masukan string : abbba
a b b b a a b b b a a a b b a
q1 q1 q1
a A a b a a a a a a a a a a a b
q1 q1 q1
a a a a a b
q2 (final)
Gambar 8.3 Gerakan mesin ketika membaca abbba
BAB VIII. Mesin Turing 70
Dapat dinyatakan bahwa mesin turing tersebut apabila diumpankan sederetan simbol
a dan atau simbol b dengan jumlah 0 atau lebih akan mengantar pada kedudukan
final q2. Dengan kata lain mesin turing tersebut dapat mengenali bahasa (a,b)*.
Deskripsi sesaat dapat juga dengan cara pemisahan string yang telah dibaca dan
yang belum dibaca dengan ekspresi :
qiw |-- w1qjw2
qi : kedudukan saat ini dan w = string yang akan dibaca, qj = kedudukan baru
setelah membaca simbol dan w1= substring yang telah dibaca dan w2 = substring
yang belum dibaca.
|-- aaaaaq1b
|-- aaaaaq2 (final state)
Apabila M={ Q, ,, S,F,b, } adalah suatu mesin turing, maka bahasa
yang dikenali oleh mesin turing tersebut dapat diungkapkan sebagai himpunan
dengan sarat sebagai berikut :
L(M)={w* | q1w |-- w1pw2 dengan pF dan wi *}
Contoh
Tentukan bahasa yang dikenali oleh mesin turing berikut :
Mesin Turing dengan Q={q1,q2}, S={q1}, F={q2} dan berikut :
(q1,a)=(q1,a,R)
(q1, b) =(q2, b,R)
Kesimpulan :
Mesin tersebut menerima : b,a,aa,aaa,... atau {a*}
Contoh 8.2
Bahasa seperti apakah yang dikenali oleh mesin turing berikut ini :
BAB VIII. Mesin Turing 72
(q1,a)= (q2,c,R)
(q2,a)= (q2,a,R)
(q2,d)= (q2,d,R)
(q2,b)= (q3,d,L)
(q3,d)= (q3,d,L)
(q3,a)= (q3,a,L)
(q3,c)= (q1,c,R)
(q1,d)= (q4,d,R)
(q4,d)= (q4,d,R)
(q4,b)= (q5, b ,L)
Jawab :
mesin tersebut mengenali bahasa : { an bn | n>=1 }.
Untuk mendemonstrasikan gerakan mesin turing saat membaca string dari
bahasa tersebut dapat diujikan dengan disuruh membaca string :’aaabbb’. Gerakan
mesin dapat diikuti dari deskripsi sesaat sebagai berikut :
Jika diperhatikan bahwa suatu mesin turing dapat memiliki transisi yang mengatur
perilaku mesin sehingga dapat bergerak ke-kanan atau ke kiri, maka dimungkinkan
ada suatu mesin yang aturan transisinya justru menyebabkan gerakan tersebut
berulang terus menerus tidak dapat berhenti. Perhatikan mesin turing berikut :
mesin akan terus bergerak kekanan dan kekiri sepanjang state q1 dan q2 dan
tidak pernah sampai pada state final q3.
Jika dicoba diinputkan string : ‘bbaa’ maka gerakanmesin adalah :
(q1,bbaa) |-
- (q2,bbaa)
BAB VIII. Mesin Turing 74
|-- (q1,bbaa)
|-- (q2,bbaa)
|-- (q1,bbaa)
|-- ....
Ternyata untuk masukan ini juga mesin turing bergerak terus tidak ada
akhirnya. Kalau dicermati dalam definisi gerakan di atas dapat disimpulkan bahwa
jika mesin turing diberi string ‘aa’, ‘bb’,’ba’ dan ‘ab’ mesin terus bergerak “bolak-
balik” dari karakter pertama ke karakter kedua ketika membaca string. Hal ini
menyebabkan string apapun yang diberikan akan menyebabkan gerakan “bolak-
balik” itu selalu terjadi, sehingga mesin turing tidak akan pernah mencapai
kedudukan final.
Tentunya sebagai pengenal bahasa definisi mesin turing seperti tersebut di
atas perlu dihindari. Sehingga dalam mendifinisikan suatu mesin turing harus ada
jaminan dalam definisi gerakan mesin turing bahwa tidak ada definisi fungsi
gerakan mesin yang jika diberikan umpan string menyebabkan mesin bergerak
secara “loop”, berputar tidak pernah sampai kedudukan final.
BAB VIII. Mesin Turing 75
8.6 Latihan
DAFTAR PUSTAKA
Hopcroft , J.E., Motwani,R., and Ullma J.D., 2007, Teori Bahasa dan Otomata,
Penerbit Andi, Yogyakarta.
Keley, Dean, 1998, “Otomata dan Bahasa-Bahasa Formal”,
Terjemahan, Prenhalindo, Jakarta.
Utdirartatmo, Firrar, 2001, “Teori Bahasa dan Ototamata”, JJ-
Learning, Yogyakarta.
Lampiran 77
BAB II
1. Pencarian bahasa dilakukan dengan mencoba seluruh kemungkinan penurunan
string, yaitu :
Penurunan 1 : S Aa aaa
Penurunan 2 : S AB aaB aabB aabbB aabbbB ...
aa...b Hasil bahasa L = penurunan 1 penurunan 2 = {aaa, aab*}
2. –
3. Penentuan tipe tata bahasa dan bahasa berdasarkan karakteristik aturan produksi.
Aturan yang ada adalah : S ABC, A BB, B Bab, B ,C aa , A
Aturan S ABC, A BB, B Bab sisi ruas kanan simbol “ ” tidak
memenuhi syarat tata bahasa tipe-3 (regular), yaitu harus berbentuk : a, aB atau
Lampiran 78
, sehingga hanya tata bahasa tersebut memenuhi tipe-2: sebelah kiri simbol
“ ” dari seluruh aturanproduksinya adalah satu Non terminal. Kesimpulan :
tata bahas tersebut adalah tipe-2 (tata bahasa bebas konteks).
4. –
5. Tata bahasa :{ S ABC, A aA, A , B bB, B , C cC, C }
Dari aturan produksi S ABC, maka karena setiap A hanya dapat diturunkan
ke aA atau , B hanya dapat diturunkan ke bB atau , C hanya dapat diturunkan
ke cC atau , yang berarti cacah a,b atau c yang diturunkan sebagai produk akhir
penurunan adalah sembarang dengan nilai minimal nol. Dengan demikian bahasa
yang dihasilkan dari tata bahasa tersebut adalah : L = { a* b* c* }. Perbedaan
bahasa yang dibangkitkan dengan no 4 adalah tidak ada, karena no.4 juga
menghasilkan bahasa a*b*c*. Perbedaan hanya diungkapan tata bahasanya.
6. –
7. Tata-bahasa tata-bahasa tersebut adalah :
a) L = { 1*0* } tata bahasanya adalah :
P = {S AB; A 1A|; B 0B | }
b) L = { 10* } tata bahasanya adalah :
P = { S 1A; A 0A | }
c) L= {1*0} tata bahasanya adalah :
P = { S 1S|A; A 0}
d) L = (1,0)* tata bahasanya :
P={S 1S | 0S | }
8. –
BAB III
1. Notasi regularnya adalah :
a) a*a
b) -
c) (a,b)*a
Lampiran 79
d) –
BAB IV
1. Bahasa yang dikenali FSA tersebut adalah L={01,10*1}
2. -
3. FSA yang mengenali dan tata bahasa yang membangkitkan bahasa
a) 1*0*
Lampiran 80
FSA :
1 0
start 0
S0 S1
b) -
c) 1*0*11 FSA
adalah :
1 0
start 0
S0 S1
1
Tata bahasanya adalah :
S 1S | 0A; A 0A | 1S | ε
d) –
4. - FSA yang mengenali dan tata bahasa yang membangkitkan bahasa
5. Tata bahasa :
S aA
A aA | bB
B bB | b
Bahasanya adalah : L = { aa*bbb* }
FSA yang mengenali adalah :
a b
start b
a b
S0 S1 S2 S3
Lampiran 81
BAB V
1. Bahasa yang dibangkitkan adalah :
a) L = { (bb)n | n > 0 }
b) -
c) L = { bnan | n > 0 }
d) -
2. -
3. Tata bahasa berikut :
G ={S AC | ABab ; A B; B C
;C abC | aa | }
Produksi unit yang melibatkan A yang dapat di buang adalah : A B dan B C
diganti menjadi A C dan selanjutnya karena C abC | aa | ε maka dapat diganti
menjadi A abA | aa | ε
Produksi unit yang melibatkan B hanya dapat diturunkan menjadi B C, dan
selanjutnya karena C abC | aa | ε maka dapat diganti menjadi B abB | aa | ε
Dengan demikian CFG tersebut dapat disederhanakan menjadi
: G ={S AC | ABab ;
A abA | aa | ε ;
B abB | aa | ε;
C abC | aa | }
4. -
5. Penyederhanaan CFG :
S ABCD| bB | aAA |
aA B aaB |
A bA | a C
cC | dD
D aaD | abcD
Jika diperhatikan aturan produksi yang melibatkan non terminal C tidak dapat
sampai sting final. Demikian juga aturan produksi yang melibatkan non terminal
D juga tidak dapat sampai ke string final. Dengan demikian kita harus
menghilangkan produksi yang melibatkan C dan D, hasilnya CFG menjadi :
Lampiran 82
S bB | aAA |
aA B aaB |
A bA | a
CFG masih mengandung produksi , yaitu B . Dapat disederhanakan
dengan menghilangkan produksi tersebut dengan mensubstitusi produksi
yang melibatkan B, yaitu :
S bB dan B aaB, jika disubstitusi dengan produjksi B , menjadi : S
b dan B aa
Dengan demikian produksi dapat dihilangkan dan CFG menjadi
:S bB | aAA | aA | b
B aaB | aa
A bA | a
BAB VI
1. a). --
b). Tata bahasa CFG :
S aSA| aBB | Aa
A aA | aa
B aBB | aB | bB
C c
Jika dicermati tata bahasa tersebut akan terlihat bahwa non terminal yang
melibatkan B tidak dapat menghasilkan string final dan non terminal yang
melibatkan C tidak dapat dilacak dari S. Oleh karena itu penyederhanaan
dimulai dengan membuang produksi yang mengandung B dan C karena tidak
berguna untuk penurunan string final. Tata bahasa menjadi :
S aSA| Aa
A aA | aa
Lampiran 83
S Sab yang bukan rekursif kiri : S aBB | Aa
A Aa yang bukan rekursif kiri : A aa
B Bab yang bukan rekursif kiri : B a|b
Dengan mengusulkan Z1, Z2 dan Z3 didapat bentuk normal greibach sebagai
berikut :
S aBB | Aa | aBBZ1 | AaZ1
Z1 ab | abZ1
A aa | aaZ2
Z2 a | aZ2
B a | b | aZ3 | bZ3
Z2 ab | abZ3
(sudah dalam bentuk normal greibach)
Lampiran 84
BAB VII
1. –
2. CFG mengenali xxr dengan x string terdiri dari a dan b
S aSa | bSb | c
PDA yang mengenali dirancang sedemikian sehingga pada kedudukan q1, jika ia
membaca a maka mempush A ke stack, jika membaca b ia mempush B ke dalam
stack. Jika PDA membaca c maka status diubah menjadi q2. Pada kedudukan q2
jika ia membaca a maka PDA melakukan POP A dari stack dan jika ia membca
b maka PDA melakukan POP B dari stack. Dengan demikian ketika jumlah a
dan b yang dibaca telah seimbang dengan yang pernah dibaca sebelum membaca
c maka string tepat akan membaca kebalikan dari a dan b yang pernah debaca
dengan mempush A dan B. Secara formal dapat dirumuskan PDA sebagai
berikut :
M={Q, ,, ,S,F,Z } dimana :
Q={q1,q2,
q3} = {a,b}
= {A,B,Z}
F=q3
S=q1
(q1, c , Z) = (q3, Z)
(q1, c , A) = (q2, Z)
(q1, c , B) = (q2, Z)
(q1, a , Z) = (q1, AZ)
(q1, a , A) = (q1, AA)
(q1, a , B) = (q1, AB)
(q1, b , Z) = (q1, BZ)
(q1, b , A) = (q1, BA)
(q1, b , B) = (q1, BB)
(q2, b , B) = (q2, )
(q2, a , A) = (q2, )
(q2, , ) = (q3, )
Lampiran 85
3. –
4. Bahasa yang dihasilkan oleh Tata bahasa CFG :
S aaSb | c
Adalah : L = { (aa)ncbn | n >1 }
PDA yang mengenali dirancang untuk mem-push A ke dalam stack jika ia
membaca a dalam posisi state 1, berpindah ke state 2 jika ia membaca c dan
mem-pop AA dari stack setiap membaca b pada state 2 dan berpindah state ke
state 3 jika ia membaca c, baik dari state 1 maupun state 2. PDA tersebut dapat
dituliskan sebagai berikut :
:
(q1, c , Z) = (q3, Z)
(q2, c , Z) = (q3, Z)
(q1, a , Z) = (q1, AZ)
(q1, a , A) = (q1, AA)
(q1, c , A) = (q2, A)
(q2, b , AA) = (q2, )
(q2, , ) = (q3, )
BAB VIII
1. –
2. Mesin turing pengenal a*
= {a, b }
S={q1}
F={q2}
:
(q1,a)= (q1,a,R)
(q1, b)= (q2, b ,L)
3. –
4. Mesin turing pengenal aabb*
= {a, b }
S={q1}
F={q5}
(q1,a)= (q2,a,R)
(q2,a)= (q3,a,R)
(q3,b)= (q4,b,R)
(q4,b)= (q4,b,R)
(q4, b)= (q5, b ,L)
5. –
6. Bahasa yang dikenali : L = {ab* }
7. –
8. Mesin turing sebagai berikut mengenali (abc)*
M={ Q, ,, S,F,b, }
Q={ q1, q2, q3, q4, }
= {a,b}
= {a, b }
S={q1}
F={q4}
: (q1,a)= (q2,a,R)
(q1, b )= (q4, b ,L)
(q2,b)= (q3,b,R)
(q3,c)= (q1,c,R)
(q3, b )= (q4, b ,L)