Tbo Full
Tbo Full
Tbo Full
1
T
T
E
E
O
O
R
R
I
I
B
B
A
A
H
H
A
A
S
S
A
A
D
D
A
A
N
N
O
O
T
T
O
O
M
M
A
A
T
T
A
A
Amir Hamzah
AKPRIND PRESS
2009
i
T TE EO OR RI I B BA AH HA AS SA A D DA AN N O OT TO OM MA AT TA A
Amir Hamzah
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
INSTITUT SAINS DAN TEKNOLOGI AKPRIND
YOGYAKARTA
AKPRIND PRESS 2009
ii
Kata Pengantar
Puji syukur dipanjatkan kehadirat Allah Subhanallah Wa Taala, 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.
Yogyakarta, Oktober 2009
Penulis
iii
DAFTAR ISI
BAB I KONSEP DASAR OTOMATA DAN BAHASA FORMAL 1
1.1 Tujuan Instruksional .. 1
1.2 Pengertian Otomata dan Bahasa Formal 1
1.3 Hubungan Otomata dengan Bahasa Formal .. 2
1.4 Bahasa Natural dan Bahasa Formal .. 2
1.5 Analogi Bahasa Natural dan Bahasa Formal ... 3
1.6 Elemen Bahasa Formal . 6
1.7 Latihan .. 7
BAB II KELAS-KELAS BAHASA DAN MESIN PENGENALNYA 8
2.1 Tujuan Instruksional . 8
2.2 Tata Bahasa dan Bahasa 8
2.3 Hierarchi Tata Bahasa .. 12
2.4 Mesin Pengenal Bahasa .. 16
2.5 Latihan .. 17
BAB III EKSPRESI REGULAR DAN KELAS BAHASA REGULAR 18
3.1 Tujuan Instruksional ..... 18
3.2 Ekspresi Regular .. 18
3.3 Tata-Bahasa Regular . 21
3.4 Pengenal Bahasa Regular . 22
3.5 Latihan . 23
BAB IV FINITE STATE MACHINE (FSM) DAN FINITE STATE AUTOMATA (FSA) 24
4.1 Tujuan Instruksional . 24
4.2 Finite State Machine (Mesin keadaan terbatas) .. 24
4.3 Finite State Automata (FSA) 26
4.4 FSA Sebagai Pengenal String .. 28
4.5 Deterministik dan Non Deterministik FSA .. 29
4.6 Konversi dari NFA ke DFA 30
4.7 FSA Sebagai Pengenal Bahasa Regular . 33
4.8 Latihan 37
BAB V TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR )
5.1 Tujuan Instruksional 38
5.2 Batasan Tata Bahasa Bebas Konteks .. 38
5.3 Masalah Ambiguity Dalam CFG 39
5.4 Penyederhanaan Tata Bahasa Bebas Konteks 42
5.4.1 Membuang aturan produksi yang tidak berguna .. 43
5.4.2 Menghilangkan produksi unit .. 45
iv
5.4.3 Menghilangkan produksi epsilon ( c ) . 46
5.5 Latihan .......................................................... 49
BAB VI BENTUK NORMAL CHOMSKY DAN NORMAL GREIBACH
UNTUK TATA BAHASA BEBAS KONTEKS
6.1 Tujuan Instruksional 50
6.2 Bentuk Tata Bahasa Bebas Konteks Tidak Normal 50
6.3 Bentuk Normal Chomsky (CNF) 51
6.4 Bentuk Normal Greibach (Greibach Normal Form=GNF) 54
6.5 Latihan . 57
BAB VII PUSH DOWN AUTOMATA (PDA) 58
7.1 Tujuan Instruksional 58
7.2 Pengertian Push Down Automata (PDA) 58
7.3 PDA Sebagai Pengenal Bahasa 59
7.4 Deskripsi Sesaat (Instantoneus Discription) Gerakan PDA 61
7.5 Latihan . 66
BAB VIII MESIN TURING . 67
8.1 Tujuan Instruksional 67
8.2 Keterbatasan FSA dan PDA 67
8.3 Definisi Mesin Turing ............. 67
8.4 Deskripsi Sesaat untuk gerakan Mesin Turing 70
8.5 Mesin Turing sebagai Pengenal Bahasa 71
8.5 Loop yang Terus Menerus pada Mesin Turing .. 73
8.6 Latihan 75
DAFTAR PUSTAKA ........... 76
LAMPIRAN ................................... 77
BAB I. Konsep Dasar Otomata & Bahasa Formal
1
1
BAB I
KONSEP DASAR OTOMATA DAN BAHASA FORMAL
1.3 Tujuan instruksional
Pada bab ini akan diuraiakan pengertian dan definisi dari otomata, bahasa,
bahasa formal dan bahasa natural. Hubungan dan analogi antara bahasa natural yang
umumnya telah lebih dahulu diketahui dengan konsep bahasa formal yang lebih
akhir dijumpai akan disajikan sebagai cara pemahaman yang lebih mudah.
Diharapkan setelah mempelajari bab ini mahasiswa akan memahami konsep, urgensi
dan penerapan teori bahasa dalam kajian bidang informatika umumnya dan
khususnya dalam topik bahasa-bahasa pemrograman komputer.
1.4 Pengertian Otomata dan Bahasa Formal
Kata otomata merupakan bentuk jamak dari automaton. Kata ini berasal
dari bahasa Yunani automatos yang berarti self-acting. Dalam Kamus American-
Heritage kata ini diartikan sebagai :
( 1) a robot
(2) one that behaves in automatic or mechanical fashion
Istilah ini sudah dikenal sejak abad 17 yang terkait dengan misalnya : jam mekanik,
mechanical-duck karya de Vaucanson (1738), mesin tenun otomatis (1745).
Dalam matematika istilah otomata terkait dengan teori mesin abstrak yang
antara lain dapat didefinisikan secara sederhana sebagai : "Automata adalah mesin
sekuensial otomatis yang menerima input dan mengeluarkan output yang keduanya
dalam bentuk diskreet". Beberapa sistem yang dapat dibuat model otomatanya
antara lain :
- mesin jaja
- mesin penukar uang
- model transmisi data
- kunci kombinasi
- parser
- compiler
BAB I. Konsep Dasar Otomata & Bahasa Formal
2
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.
1.3 Hubungan Otomata dengan Bahasa Formal :
Hubungan otomata dengan bahasa formal dapat dilukiskan sebagai berikut :
- Rangkaian input diskreet pada mesin otomata dapat dianggap sebagai bahasa
yang harus dikenali oleh otomata.
- Mesin otomata dapat pula digunakan untuk membangkitkan bahasa tertentu yang
aturannya ditentukan oleh tatabahasa tertentu.
Dengan demikian dapat dilihat keterkaitan antara : mesin otomata, bahasa yang
dibangkitkan atau dikenali oleh mesin dan tata bahasa yang membangkitkan sebuah
bahasa.
1.4 Bahasa Natural dan Bahasa Formal :
Perlu disini dibatasi pengertian bahasa formal dengan bahasa sehari-hari.
Bahasa manusia sehari-hari (misalnya bahasa inggris) umumnya dinamakan sebagai
bahasa alami (natural language). Bahasa alami memiliki tata bahasa dan aturan
yang lebih luas dan luwes. Bahasa yang lebih kaku dengan aturan-aturan yang lebih
ketat (misalnya bahasa pemrograman komputer) dinamakan dengan bahasa formal
(formal language). Sehingga dengan demikian bahasa formal dapat lebih mudah
dipelajari dan dianalisis dari pada bahasa alami. Sebaliknya analisis dan
pengembangan riset tentang bahasa alami dapat dimulai dengan mempergunakan
bahasa formal sebagai langkah awalnya.
Ada dua hal penting yang terkait dengan bahasa formal, yaitu :
- Pembangkitan kalimat (generation) : Berkaitan dengan algoritma yang dapat
menghasilkan semua kalimat dalam bahasa tertentu yang dikaji berdasarkan
aturan yang dimiliki oleh bahasa tersebut. Aturan ini disebuat tata bahasa
(grammar). Penerapan konsep ini terjadi pada bahasa-bahasa pemrograman
visual seperti Visual Basic, Delphi, Visual C, Java Net Bean dan lain-lain yang
BAB I. Konsep Dasar Otomata & Bahasa Formal
3
3
mana programmer tidak menuliskan kode program tetapi kode tersebut
dibangkitkan ketika sebuah aktivitas dilakukan, misalnya ketika progammer
memasang Button pada sebuah Form maka nama variabel Button dan prosedur
aktifitas Button akan dibangkitkan sehingga progammer tinggal mengisikan kode
intinya saja.
- Pengenalan kalimat (recognition) : Pembuatan algoritma yang dapat
mengetahui apakah suatu string s (kalimat) termasuk anggota himpunan bahasa
L. Algoritma ini memeriksa keanggotaan s dalam bahasa L berdasarkan aturan
yang banyaknya terhingga. Penerapan ini terjadi pada saat sebuah kode program
sudah diparsing menjadi token-token dan proses kompilasi akan dilakukan maka
langkah pertama adalah pemeriksaan apakah token-token sudah berada dalam
sintak yang benar sesuai dengan aturan bahasa yang ada. Jika belum memenuhi
aturan bahasa maka proses kompilasi akan dihentikan, biasanya dengan
memberikan pesan syntax error.
1.5 Analogi Bahasa Natural dan Bahasa Formal :
Beberapa analogi bahasa formal dengan bahasa natural dapat digambarkan
antara lain sebagai berikut :
1. He sleeps, adalah sebuah kalimat bahasa inggris yang benar
2. He runs quickly, adalah juga kalimat yang benar
3. The Big rabbit hopes neatly, juga benar.
Sebuah kalimat dikatakan benar apabila ia memenuhi grammar yang ada dalam
suatu bahasa. Dalam bahasa inggris sebuah kalimat dikatakan benar jika memenuhi
grammar berikut :
SENTENCE (S) = NOUN-PHRASE (NP) + VERB-PHRASE (VP)
NOUN-PHRASE dapat berupa : NOUN atau PRONOUN atau ARTICLE +
NOUN atau ARTICLE+ADJECTIVE + NOUN.
VERB-PHRASE dapat berupa : VERB atau VERB + ADVERB.
Dengan notasi yang lebih singkat ditulis :
S = NP + VP
NP dapat berupa : N atau Pro atau Art + ADJ+N
BAB I. Konsep Dasar Otomata & Bahasa Formal
4
4
VP dapat berupa : V atau ADV
Dengan demikian penurunan kalimat He sleeps dapat digambarkan :
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):
S
NP VP
V ADV
He runs quickly
Gambar 1.2 Proses penurunan kalimat dari grammar : N+V+Adj
Dan penurunan kalimat ketiga adalah :
S
NP VP
Art ADJ N V ADV
The big rabbit runs neatly
Gambar 1.3 Proses penurunan kalimat dari grammar : Art+Adj+N+V+Adv
BAB I. Konsep Dasar Otomata & Bahasa Formal
5
5
Selanjutnya Grammar bahasa inggris tersebut dapat dituliskan sebagai himpunan
aturan-aturan produksi sebagai berikut :
S NP VP
NP Noun ; NP Pro ; NP Art ADJ Noun
VP V ; VP V ADV
N rabbit
Pro He
V runs ; V sleeps
ADV neatly ; ADV quickly
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
BAB I. Konsep Dasar Otomata & Bahasa Formal
6
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
Gambar 1.4 Penurunan string aab dan ab
1.6 Elemen Bahasa Formal :
Beberapa istilah yang perlu dicatat berkaitan dengan bahasa formal adalah sebagai
berikut :
Abjad (alphabet): Himpunan berhingga dari simbol-simbol yang dapat
disusun untuk membentuk suatu kalimat. Dalam konteks teori bahasa: kalimat,
string atau kata ketiganya digunakan merujuk kepada hal yang sama, yaitu rangkaian
simbol-simbol yang dapat disusun dengan menggunakan simbol yang diambil dari
himpunan abjad. Himpunan abjad biasa dinotasikan dengan simbol E.
Bahasa (Language): Himpunan seluruh string yang dapat dibangkitkan dari
sebuah tatabahasa (grammar) G. Bahasa yang dibangkitkan oleh tata bahasa G
biasa dinotasikan dengan L(G) atau L saja. Himpunan ini dapat berhingga atau tak
berhingga.
Aturan produksi (production rule : Adalah himpunan berhingga dari
aturan-aturan penataan simbol dalam pembentukan sebuah string. Dengan aturan ini
kita mem-produksi sebuah string , anggota suatu bahasa. Himpunan aturan produksi
biasa disimbolkan sebagai P.
BAB I. Konsep Dasar Otomata & Bahasa Formal
7
7
1.7 Latihan
1. Jelaskan apa pengertian otomata dan berikanlah contoh-contoh otomata
dalam kehidupan sehari-hari?
2. Jelaskan perbedaan prinsip bahasa natural dengan bahasa formal !
3. Apa yang dimaksud dengan penurunan string, dalam pengertian bahasa
natural dan pengertian bahasa formal?
4. Dalam tata bahasa formal dikenal istilah Non terminal, apa analoginya istilah
non terminal ini dalam bahasa natural?
5. Apa bedanya string dalam bahasa formal dengan kalimat dalam bahasa
natural?
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
8
BAB II
KELAS-KELAS BAHASA DAN MESIN PENGENALNYA
2.1 Tujuan Instruksional
Setelah mempelajari bab ini diharapkan mahasiswa dapat memahami tentang
definisi secara formal tentang tata bahasa, bahasa dan kelas-kelas bahasa dengan
pendekatan teori himpunan. Mahasiswa juga akan memahami operasi-operasi dasar
yang dapat dilakukan pada bahasa dan juga mengenali dan memahami kelas-kelas
bahasa berdasarkan karakteristik tata bahasanya. Secara umum juga diharapkan
memahami jenis-jenis otomata yang mengenali bahasa dari berbagai kelas bahasa
tersebut.
2.2 Tata Bahasa dan Bahasa
Dalam bab I telah disinggung secara singkat tentang perbedaan bahasa
natural dengan bahasa formal. Pada kajian selanjutnya yang dimaksud dengan
bahasa dalam pembahasan tulisan ini adalah bahasa formal.
Telah dijelaskan bahwa bahasa tidak lebih dari himpunan, yang dapat
berhingga atau tak hingga dari string-string yang diproduksi dengan aturan-aturan
yang disebut dengan tata bahasa. Berikut ini didefinisikan secara lebih konkrit apa
itu tata bahasa dan bahasa.
Definisi 1 : Tata bahasa (grammar) G didefinisikan sebagai tuple-4 G( E , N , S,
P)
Dimana :
E : Himpunan berhingga dari simbol-simbol abjad / alphabet / vocabulary. Simbol-
simbol elemen E dan rangkaian simbol-simbol yang terdiri dari elemen E
dinamakan juga dengan simbol terminal. Simbol terminal dilambangkan
dengan huruf kecil : a,b,c atau abjad 0,1,2.
N : Himpunan berhingga dari simbol-simbol yang disebut sebagai simbol Non
Terminal, yaitu simbol-simbol yang dapat digantikan oleh simbol lain. Dalam
bahasa natural simbol non terminal misalnya : S, NP , VP, ADJ dan lain-lain.
Sedangkan dalam bahasa formal simbol non terminal dilambangkan dengan
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
9
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 o| , dengan o dan | masing-masing
adalah string (rangkaian simbol-simbol) yang dapat terdiri dari simbol terminal
dan atau simbol non terminal, misalnya : A Ba
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
Operasi-operasi string suatu tata bahasa
Operasi Concatenation :
Pada prinsipnya teori bahasa akan selalu menggunakan sebuah operasi
penggabungan (concatenation), karena pada hakekatnya string/kata/kalimat adalah
penggabungan dari simbol-simbol. Kata adalah penggabungan huruf. Kalimat adalah
penggabungan kata-kata. Tetapi sekali lagi perlu dicatat bahwa dalam bahasa
formal, string, kata (word) atau kalimat (sentence) semuanya dianggap sama, yaitu
:"rangkaian simbol-simbol", disebut sebagai STRING atau UNTAI.
Selanjutnya operasi penggabungan didefinisikan sebagai :
o| = o + | = string o digandengkan (dirangkaikan) dengan string |
o adalah rangkaian simbo-simbol dan | juga rangkaian simbol-simbol, yang
sekali lagi dapat berupa simbol non terminal atau terminal.
Contoh 2.1 :
o = ABab
| = BBa
maka o| = ABabBBa
8
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
10
dan |o = BBaABab
Perlu diingat bahwa operasi penggabungan tidak bersifat komutatif , artinya o| =
|o , kecuali jika o=|
Panjang string :
Panjang string o dimaksudkan sebagai banyaknya simbol dalam string o.
Panjang string dilambangkan sebagai |o| .
Contoh : o = ABc maka |o| = 3
o = abc maka |o| = 3
Panjang string tidak memperhatikan apakah simbol tersebut terminal atau non
terminal, setiap simbol dihitung memiliki panjang satu .
Empty String (c) atau ( ) :
Suatu string khusus yang panjangnya nol, atau string yang terdiri dari "tak
satupun simbol" disebut sebagai string kosong (empty string) yang dilambangkan
dengan c (baca : epsilon) atau (baca: lambda).
String kosong memiliki sifat penggandengan sebagai :
o c = c o = o
Penutup (Closure) :
Jika dimiliki himpunan A, maka Cleene-closure dari A, dinotasikan dengan A*
didefinsikan sebagai :
A* = A
0
A
1
A
2
A
Dengan notasi A
n
(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 sebagai:
A
n
= A A
n-1
A
n-1
= A A
n-2
A
n-2
= A A
n-3
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
11
A = A A
0
A
0
= c
Contoh 2.2 :
Jika A = {0} maka A* = { c, 0, 00, 000, 0000, }
Jika B = {0,1} maka B* = { c, 0, 1, 00, 01, 10, 11, 000, 001, }
B* diperoleh dari : B*={ B
0
B
1
B
2
}
Dimana : B
0
= { c }
B
1
= B = {0,1}
B
2
= BB = {0,1}{0,1} = {00, 01, 10, 11}
B
3
= BB
2
= {0,1} {00, 01, 10, 11} = { 000,001, 010,011, 100,101,110,111}
dst
Dengan demikian perlu dicermati secara hati-hati bahwa :
{0,1}* tidak sama dengan {01}*, karena :
{0,1}* = { c, 0, 1, 00, 01, 10, 11, 000, 001, } sedangkan
{01}* = { c, 01, 0101, 010101, }
Positive Closure :
Selain Cleene-Closure, atas himpunan A juga dapat didefinisikan suatu
closure yang disebut sebagai positive-closure (A
+
), yang didefinisikan sebagai :
A+ = A
1
A
2
A
Dengan demikian dapat ditulis pula bahwa :
A* = A
+
c atau A
+
= A* - c
Bahasa yang dibangkitkan oleh grammar G.
Definisi 2 : Bahasa yang dibangkitkan oleh tata bahasa G adalah himpunan seluruh
string yang dapat dibangkitkan oleh grammar G, dapat ditulis sebagai L(G):
L(G) = { w e E* | 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( E , N , S, P) dengan :
E ={ a,b } N = { A, B} dan P ={ SAa ; SAB ; Aaa; Bb; Bc }
tentukan bahasa yang dibangkitkan oleh grammar G di atas.
Jawab : Bahasa yang dibangkitkan adalah L(G) = { aaa, aab, aa}
aaa , aab dan aa masing-masing diperoleh dari pohon penurunan :
S S S
A a A B A B
aa aa b aa c
Gambar 2.1 Penurunan string aaa, aab dan aa
Atau penulisan yang lebih singkat dari proses penurunan adalah :
Untuk aaa : SAaaaa
aab diperoleh dari penurunan : SAB aaBaab
aa diperoleh dari penurunan : SAB aaB aac aa
2.3 Hierarchi Tata Bahasa
Menurut Noam Chomsky (1950), Tata-bahasa formal dapat dikelompokkan
menjadi 4 tingkatan (hierarchi), biasa disebut hierarchi tata-bahasa menurut
Chomsky. Pengelompokan tata-bahasa menurut Chomsky ini ditentukan oleh aturan
produksi yang dimiliki oleh grammar, yaitu tata-bahasa Tipe-0, Tipe-1, Tipe-2 dan
Tipe-3.
Andaikan aturan produksi dalam suatu grammar G dituliskan sebagai :
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
13
o |
dengan masing-masing o dan | adalah string-string yang dapat terdiri dari
simbol Non terminal atau pun simbol terminal, atau : o , | e (E N)*
maka masing-masing kelas tata-bahasa dibatasi sebagai berikut:
Tata-bahasa Tipe 0 (Non-restricted Grammar):
Tata-bahasa tipe-0, atau biasa disebut sebagai non-restricted grammar adalah tata-
bahasa yang paling luas, juga biasa disebut PHRASE STRUCTURED GRAMMAR.
Tata-bahasa Tipe-0 adalah tata-bahasa yang memiliki aturan produksi : o |
dengan batasan :
o : minimal terdiri dari 1 simbol Non terminal , atau o e {(E N)* N (E N)*}
| : tidak dibatasi, atau : | e {(E N)*
Contoh 2.4. :
Dimiliki grammar G(E ,N ,S , P) dengan E = { a, b } , N={ A, B , S}
dan P = { SABa, ABB, B ab, ABab, BBBaa}. Perlihatkan
bahwa string : abababa dan aaa adalah string-string yang diproduk
oleh grammar tersebut.
Jawab :
Jika dicermati produksi yang ada , terlihat bahwa seluruh produksi
yang ada memenuhi syarat grammar tipe-0, yaitu string kiri dalam
aturan produksi minimal terdiri SATU non terminal.
Penurunan abababa , ditempuh dari proses penurunan :
S ABa BBBa ababBa abababa
Penurunan string aaa ditempuh dengan penurunan berikut:
S ABa BBBa aaa
Tata-bahasa Tipe 1 (Context Sensitive Grammar):
Tata-bahasa tipe-1, adalah tata-bahasa tipe-0 yang memiliki aturan produksi : o |
dengan tambahan batasan :
| o | < | | | jika tidak dalam bentuk S c
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
14
yaitu panjang string o lebih kecil atau sama dengan panjang string |
Contoh 2.5. :
Dimiliki grammar G(E ,N ,S , P) dengan E = { a, b } , N={ A, B , S}
dan P = { SABa, ABB, B ab, ABAAA , Aaa , Ac }
Apakah tatabahasa ini termasuk dalam tipe-1? Bandingkan dengan
tatabahasaa contoh 2.4, apakah termasuk tipe -1? Tunjukkan bahwa
string a termasuk anggota bahasa.
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 : BBBaa pada
contoh 2.4.
Penurunan string "a" ditempuh dengan :
SABa AAAa ccca a
Tata-bahasa Tipe 2 (Context -Free Grammar):
Tata-bahasa tipe-2, adalah tata-bahasa tipe-1 yang memiliki aturan produksi : o |
dengan tambahan batasan :
o : HANYA terdiri dari 1 simbol Non terminal saja, atau o e N
| : tidak dibatasi, atau : | e {(E N)*
Contoh 2.6.:
Tunjukkan bahwa contoh 2.5. adalah tidak termasuk pada grammar tipe
2.
Jawab:
Jika diperhatika aturan produksi pada contoh 2.5 :
SABa, ABB, B ab, ABAAA , Aaa , Ac
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.
Tata-bahasa Tipe 3 ( Regular Grammar):
Tata-bahasa tipe-3, adalah tata-bahasa tipe-2 yang memiliki aturan produksi : o |
dengan tambahan batasan :
o : HANYA terdiri dari 1 simbol Non terminal saja, atau o e N
| : dalam bentuk salah satu diantara : a, aB, atau c
dimana a adalah simbol terminal dan B adalah simbol Non terminal.
Tata bahasa tipe-3 (regular) merupakan tata bahasa yang paling ketat (paling banyak
aturan) dari hierarkhi tata bahasa yang ada. Secara diagram keempat tata bahasa
dapat digambarkan sebagai berikut :
Gambar 2.2 Hierarkhi Tata Bahasa (Grammar) menurut Noam Chomsky
Contoh 2.7 :
Dimiliki grammar G(E ,N ,S , P) dengan E = { a, b } , N={ A, B , S} dan
P = { SaA, AaA, A B, BbB, Bc }. Tentukan bahasa yang
dibangkitkan oleh tata bahasa regular berikut.
Jawab :
Penurunan : SaAa B aca menghasilkan string : a
Penurunan : SaAaaA aaaA aaaa..aa B aaa..acaaa..aa
Hasilnya : aaaa..aa
0 = Tipe-0
1 = Tipe-1
2 = Tipe-2
3 = Tipe-3
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
16
Penurunan : SaAaaA aaaA aaaa..aa B
aaa..abBaaa..aabc
Hasilnya : aaa..aab
Penurunan : SaAaaA aaaA aaaa..aa B
aaa..abBaaa..aabbB
aaa..aabbbBaaa..aabbbcaaa..aabbb
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*}
Dimana a*={a
0
a
1
a
2
a
}
b*={b
0
b
1
b
2
b
}
2.4 Mesin Pengenal Bahasa
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 :
1. Bahasa regular , mesin pengenalnya : Finite State Automata
2. Bahasa bebas konteks, mesin pengenalnya Push Down Automata
3. Bahasa konteks sensitive, mesin pengenalnya Linear Bounded Automata
4. Bahasa unsrestricted mesin pengenalnya adalah Mesin Turing
Pembahsan menganai mesin-mesin abstract pengenal suatu bahasa akan dibahas
dalam bab-bab selanjutnya.
BAB II. Kelas-kelas Bahasa dan Mesin Pengenalnya
17
2.5 Latihan
1. Jika dimiliki suatu tata-bahasa G( E , N , S, P) dengan E ={ a,b } N = { A, B}
dan P ={ SAa ; SAB ; Aaa; B bB; Bc }, tentukan bahasa yang
dibangkitkan oleh grammar G di atas.
2. Dimiliki grammar G(E ,N ,S , P) dengan E = { a, b } , N={ A, B , S} dan P = {
SABa, ABB, B ab, ABab, BBBaa}. Perlihatkan bahwa string : aba
dan abababa adalah string-string yang diproduk oleh grammar tersebut.
3. Dimiliki grammar G(E ,N ,S , P) dengan E = { a, b } , N={ A, B , S} dan P = {
SABC, ABB, B Bab, Bc , Caa , Ac }. Termasuk tipe apakah tata
bahasa tersebut? Apakah alasannya?
4. Dimiliki grammar G(E ,N ,S , P) dengan E = { a, , c } , N={ A, B ,C, S} dan P =
{ SABC, AaA, A B, BbB, BC, CcC, C c }. Tentukan bahasa
yang dibangkitkan oleh tata bahasa tersebut.
5. Dimiliki grammar G(E ,N ,S , P) dengan E = { a, b, c } , N={ A, B , C, S} dan P
= { SABC, AaA, Ac, BbB, Bc, CcC, C 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 = { a
n
b
m
c
k
| 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
3.1 Tujuan Instruksional
Setelah mempelajari bab ini diharapkan mahasiswa dapat memahami
pengertian ekspresi regular, kaidah-kaidah ekspresi regular dan operasi-operasi yang
dapat dikerjakan pada eksprfesi regular. Setelah pemahaman ekspresi regular dapat
dikuasai selanjutnya dapat mengaitkan ekspresi regular dengan bahasa regular dan
selanjutnya dengan tata bahasa regular. Diharapkan pula penguasaan hubungan
timbal balik antara bahasa dan tata bahasa sedemikian sehingga jika dimiliki suatu
bahasa akan dapat ditetapkan tata bahasanya dan sebaliknya jika dimiliki tata bahasa
akan dapat ditetapkan bahasanya.
3.2 Ekspresi Regular
Sebelum memasuki bahasan tentang ekspresi regular dan bahasa regular, dapat
dinyatakan suatu kenyataan berikut. Jika E adalah suatu himpunan abjad (yang tentu
saja jumlahnya terhingga), maka :
1. E* = himpunan seluruh string yang dapat disusun dari abjad dalam E (seperti
yang telah disampaikan dalam bab II) adalah berjumlah TAK HINGGA
(countably inifinite).
2. Kumpulan dari semua bahasa yang dapat dibangkitkan dari abjad dalam E
berjumlah tak terhitung (uncountably)
Selanjutnya ekspresi regular dapat didefinisikan secara rekursif dari definisi-definisi
berikut :
Definisi Ekspresi Regular :
1. C = {} = (himpunan kosong) adalah sebuah ekspresi regular
2. {c } =string kosong adalah ekspresi regular
3. Untuk setiap a e E , maka a adalah ekspresi regular
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
Selanjutnya untuk menghindari kebingungan perlu dibedakan dengan jelas
antara C yang melambangkan himpunan kosong, atau tidak punya anggota,
sedangkan {c } adalah himpunan yang memiliki satu anggota , yaitu string kosong.
Notasi ab , ab dan a* adalah penyederhanaan notasi yang diperoleh dari notasi asli
sebagai berikut : Jika dimiliki himpunan A,B sebagai himpunan berikut :
Ekspresi ab maksudnya :
A={a} dan B={b}
AB = gabungan/union antara himpunan A dengan himpunan B = {a,b}
Ini dinotasikan secara singkat sebagai : ab
Ekspresi ab maksudnya :
A={a} dan B={b}
AB = CONCATENATION antara himpunan A dengan himpunan B = {ab}
Ini dinotasikan secara singkat sebagai : ab
Ekspresi a* maksudnya :
A={a}
A* = CLEENE closure dari himpunan A, seperti yang telah didefinisikan
dalam bab II : A
0
A
1
A
2
A