Program FA_Identifier
{Deskripsi : Mengenali identifier yang memiliki ketentuan
- Diawali oleh 1 karakter kemudian diikuti oleh karakter atau numerik
- Tidak boleh diawali oleh numerik.
IS : string input berisi string yang akan dibaca; initial state = q0;
FS : string diterima (STRING DITERIMA) atau ditolak (STRING TIDAK
DITERIMA)}
Kamus
State : string
Symbol : character
BenarAlfabet : boolean
Algoritma
State “q0”
input (symbol)
BenarAlfabet (symbol = karakter) OR (symbol = numerik)
while ( BenarAlfabet )
do
case State of
“q0” : if (symbol = karakter)
then State := “q2”
else State := “q1” {symbol = numerik}
endif
“q1” : State := “q1”
“q2” : State := “q2”
endcase
input (symbol)
BenarAlfabet (symbol = karakter) OR (symbol = numerik)
endwhile
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 1
{symbol bukan karakter maupun numerik}
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 2
Algoritma ekspresi aritmetika
Program EkspresiAritmetika
{Deskripsi : Mengenali ekspresi aritmetika yang memiliki ketentuan
(angka)n operator (angka)m
IS : string input berisi string yang akan dibaca; initial state = q0;
FS : string diterima (STRING DITERIMA) atau ditolak (STRING TIDAK DITERIMA)}
Kamus
State : string
Symbol : character
BenarAlfabet : boolean
Algoritma
State “q0”
input (symbol)
BenarAlfabet (symbol = angka) OR (symbol = operator)
while ( BenarAlfabet )
do
case State of
“q0” : if (symbol = angka)
then State := “q1”
else State := “qError” {symbol = operator}
endif
“q1” : if (symbol = angka)
then State := “q1”
else State := “q2” {symbol = operator}
endif
“q2” : if (symbol = angka)
then State := “q3”
else State := “qError” {symbol = operator}
endif
“q3” : if (symbol = angka)
then State := “q3”
else State := “qError” {symbol = operator}
endif
“qError” : State := qError
endcase
input (symbol)
BenarAlfabet (symbol = angka) OR (symbol = operator)
endwhile
{symbol bukan angka maupun operator}
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 3
Contoh program Finite Automata
Program FA_M
{Deskripsi : Mengenali string a dan b yang memiliki ketentuan
- Diakhiri oleh ‘a’
- Diawali oleh 0 atau lebih b
IS : string input berisi string yang akan dibaca; initial state = q0;
FS : string diterima (STRING DITERIMA) atau ditolak (STRING TIDAK
DITERIMA)
Nama : Winangsari
Tanggal : 15 Desember 2011}
Kamus
State : string
Symbol : character
BenarAlfabet : boolean
Algoritma
State “q0”
input (symbol)
BenarAlfabet (symbol = a) OR (symbol = b)
while ( BenarAlfabet )
do
case State of
“q0” : if (symbol = a)
then State “q0”
else State “q1” {symbol = b}
endif
“q1” : State “Error”
“Error” : State “Error”
endcase
input (symbol)
BenarAlfabet (symbol = a) OR (symbol = b)
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 4
endwhile
{symbol bukan karakter maupun numerik}
Lexical Analyzer dapat lebih efisien jika kita menggunakan tabel transisi seperti berikut ini
State/symbol a b #
q0 q1 q0 error
q1 error error accept
error error error error
Program LexicalAnalyzerTT
{IS : string input berisi string yang akan dibaca; initial state = q0;
Tabel transisi berisi next state
FS : string diterima (ACCEPT) atau ditolak (ERROR)}
State := q0
read (symbol)
repeat
state := TT [state, symbol]
read (symbol)
until ( state = (ACCEPT OR ERROR) )
If ( state = ACCEPT )
then write (“string diterima”)
else write (“string ditolak”)
endif
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 5
endProgram (LexicalAnalyzerTT)
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 6
7.5 Terapan FA
Seperti yang telah disebutkan di awal bab ini, FA dapat digunakan untuk memodelkan sesuatu yang
memiliki state berhingga. Contohnya untuk menggambarkan berbagai state (kondisi) pada Mesin Penjual
Snack (MPS) dengan spesifikasi :
- MPS menjual 3 jenis snack yakni :
o Kacang dengan harga 3000
o Kripik dengan harga 5000
o Permen dengan harga 2000
- Koin yang bisa dimasukkan adalah koin 1000 dan 500
- Koin dibaca mesin secara serial, misalnya 1000 500 500 1000 1000
- Pembeli menekan tombol pilihan snack sesudah memasukkan uang
Soal Latihan FA
2. Sebuah finite automata didefinisikan dalam 5-tuple (Q, Σ, δ, q 0, F). Pernyataan di bawah ini yang tidak
tepat adalah…
a. Q adalah himpunan terbatas dari transisi.
b. Σ himpunan terbatas alfabet.
c. δ : Q × Σ Q fungsi transisi, dinotasikan ke δ(q,a) p.
d. q0 ∈ Q adalah start state.
e. F ⊆ Q adalah himpunan accept states (atau final states).
5. Sebuah Finite State Automata M ({q0, q1}, {a, b}, δ, q0, (q0, q1)} dengan δ(q0,b) q1, δ(q1, a) q0,
δ (q1, b) q1.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 7
Finite State Automata tersebut dapat disederhanakan dengan mengubah…
a. δ menjadi δ(q0, a) q0 dan δ(q0, b) q1
b. Himpunan state = q0, Accept state = q0, δ menjadi δ(q0, a) q0
c. Accept State = q0.
d. δ menjadi δ(q1, a) q0 dan δ(q1, b) q1
e. Tidak ada jawaban yang benar.
Jika Finite State Automata di atas ini didefinisikan oleh sebuah tuple (Q, Σ, δ, q0, F), maka akan didapatkan…
a. Q: {q1, q2}
b. Σ: {0)
c. q0 sebagai initial state
d. q1 dan q2 sebagai final state
e. Semua jawaban benar
a. 1
b. 2
c. 3
d. 4
e. Salah semua
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 9
Soal Essay
1. Sebutkan pengertian Finite State Automata.
2. Sebutkan syarat sebuah Finite State Automata agar bisa dikategorikan deterministik.
3. Diketahui Finite State Automata dengan Σ = {a, b, c}. Buatlah sebuah Diagram State yang menerima
string aabc.
4. Diketahui Finite State Automata dengan Σ = {a, b} yang menerima string yang panjangnya kelipatan 3
(termasuk string kosong). Buatlah Regular Grammar dari Finite State Automata tersebut.
Regular grammar yang dapat ditemukan dari gambar diatas adalah, kecuali :
a. A → 1A | 1B
b. B → 0A | 1C
c. B → 1C
d. C → 0C
e. C → 1C
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 10
Bab 8 Nondeterministic Finite Automata
(NDFA)
8.1 Definisi
Sebuah Non-Deterministik Finite Automata (NDFA) didefinisikan sebagai 5-tuple berikut :
M = (Q, å, d,q0,F)
Dengan :
Q adalah himpunan terbatas dari states,
å himpunan terbatas alfabet,
d: Q × åà Q fungsi transisi, dinotasikan ke
d(q,a)à p
dan p adalah himpunan state hasil transisi.
q0ÎQ adalah start state, dan
FÍ Q adalah himpunan accept states (atau final states).
Contoh :
Jika kita memiliki sebuah NDFA, maka untuk setiap NDFA selalu ada DFA yang dapat menerima bahasa yang
dapat diterima oleh NDFA tersebut. Berikut ini adalah contoh konversi NDFA ke DFA.
Misalkan terdapat diagram NDFA M = {1, 2},{a,b}, δ, 1 ,{2}) dengan table transisi sebagai berikut
a b
1 {1, 2} {1}
2 {} {1, 2}
Buatlah DFA-nya
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 12
Gambar 8.2 : DFA M
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 13
Latihan (Kuis)
Konversikan NDFA menjadi DFA
1.
DFA M’ =
Q’ = { [Ø], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]}
q0’= [1]
F’ = {[3], [1, 3], [2, 3], [1, 2, 3]}
δ’ a b
[1] [1, 2] Ø
[2] Ø [2, 3]
[3] [3] Ø
[1, 2] [1, 2] [2, 3]
[2, 3] [3] [2, 3]
[1, 3] [1, 2, 3] Ø
[1, 2, 3] [1, 2, 3] [2, 3]
Ø Ø Ø
3.
DFA M’ =
Q’ = { [Ø], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]}
q0’= [1]
F’ = {[3], [1, 3], [2, 3], [1, 2, 3]}
δ’ a b
[1] Ø [2]
[2] [1, 3] [1, 3]
[3] Ø Ø
[1, 2] [1, 3] [2]
[1, 3] Ø [2]
[2, 3] [1, 3] [1, 3]
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 14
[1, 2, 3] [1, 3] [1, 2, 3]
Ø Ø Ø
Soal-soal
8. Perbedaan deterministik automata dengan non-deterministik automata adalah…
1. Ada atau tidaknya epsilon (ε).
2. Fully defined atau tidak.
3. Ambiguitas dalam penentuan next state.
4. a, b, dan c benar.
5. b dan c benar.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 15
BAB 9
Ekspresi Regular
Ekspresi reguler merupakan rumus yang dapat menggambarkan struktur pola kata pada bahasa reguler.
Ekspresi reguler berguna karena memungkinkan kita menyatakan bahasa reguler yang kompleks secara
formal, ringkas, dan tepat. Bahasa reguler yang tidak berhingga dapat dispesifikasikan secara mudah
dengan ekspresi reguler. Selain itu, ekspresi reguler akan memberikan suatu pola (pattern) atau template
untuk kata/ string dari suatu bahasa. Penerapan ekspresi reguler misalnya pada pencarian kata pada suatu
file.
Berikut ini adalah contoh dari ekspresi regular (r) berikut contoh kata-kata / bahasa yang dapat dibentuk
dari ekspresi reguler ini L(r):
r L(r)
ab*cc {acc, abcc, abbcc, abbbcc, abbbbcc, …}
a*Ub* {λ, a, b, aa, bb, aaa, bbb, aaaa, bbbb, …}
(aUb)* { λ, a, b, ab, ba, abb, bba, aaaa, bbbb, …}
aUb {a, b}
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 16
Gambar 9.1 : 2 Ekspresi yang akan di-union
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 17
Gambar 9.3 : 2 STD yang akan di-concate
- untuk semua keadaan di T1 dilakukan pemberian tanda panah ke semua keadaan di T2 yang
merupakan tujuan dari initial state ekspresi kedua
- accept state T1 tetap merupakan keadaan berhenti jika dan hanya jika initial state T2 merupakan
elemen dari accept state (initial state T2 ε accept state)
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 18
- menggambar initial state baru dan kemudian dihubungkan dengan tujuan initial state lama. Initial
state baru dianggap sebagai keadaan akhir juga
- menambahkan 1 tanda panah dari tiap keadaan akhir ke tiap keadaan tujuan dari initial state baru.
Kemudian dilakukan pemberian label dengan simbol yang sama dengan simbol tanda panah dari
keadaan awal menuju keadaan seperti di bawah ini.
Jika kita memiliki suatu FSA, baik yang Deterministic FA maupun Non-Deterministic FA, kita dapat
mengubahnya menjadi ekspresi regular. Seperti contoh FSA dibawah ini:
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 19
Gambar 9.7 : Contoh FSA
Lalu kita telusuri FSA dari initial state hingga accepts state, dan dicapai ekspresi reguler 0+(10)*11.
Setelah mengetahui operasi yang terdapat pada ekspressi reguler, maka langkah selanjutnya yaitu melihat
string yang dapat dibangkitkan dari ekspressi tersebut. Setelah itu, kita dapat melihat pola yang dimiliki
oleh ekspresi tersebut. Lalu kita bentuk finite state automata dari ekspressi reguler tersebut.
Untuk konversi ekspresi reguler ke FSA, berikut adalah penggambaran final state automata dengan operasi
union, concatenation, dan Kleene*.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 20
Union
1+10
Kleene*
(10)*
Langkah kedua adalah menghubungkan initial state baru ke setiap state dimana initial state lama
menunjuk.
Langkah ketiga adalah memberikan label pada hubungan initial state lama dan baru sesuai dengan
hubungan yang dimiliki initial state lama.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 21
Gambar 9.10 : Hasil finite state automata hasil dari union 2 FSA
Jawab:
Langkah pertama menghilangkan accepted state dari FSA pertama.
Langkah kedua menghubungkan accepted state pertama dengan setiap state yang berhubungan dengan
initial state FSA yang kedua.
Langkah ketiga memberikan label sesuai dengan hubungan yang ada pada initial state FSA kedua
Langkah keempat menghilangkan state yang tidak mungkin tercapai.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 22
Gambar 9.12 : Hasil pengubahan FSA menggunakan Concatenation
Langkah pertama membuat initial state baru dan ditunjuk sebagai accepted state.
Langkah kedua menghubungkan initial state baru dengan semua state yang berhubungan dengan initial
state lama.
Langkah ketiga memberikan label sesuai dengan hubungan yang ada pada state yang berhubungan dengan
initial state lama.
Langkah keempat menghubungkan accepted state lama dengan state yang terhubung dengan initial state
lama dan sekaligus memberikan label pada yang terhubung dengan label accepted state sebelumnya.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 23
Soal-Soal
Pilihan Ganda
A. Manakah dibawah ini yang termasuk ekspresi regular?
a. ((r*◦t) ◦ (u◦v) ◦ w*) ◦ (w)) ((((r*◦t) ◦ (u◦v)) ◦ w*)) ◦ (w))
b. (((r* ◦ s*) ◦ t*) ◦ (u ◦ v*) ◦ w) ( (((r* ◦ s*) ◦ t*) ◦ (u ◦ v*)) ◦ w)
c. (r* ◦ (s ◦ t*) ◦ u) ◦ v*) ((((r* ◦ (s ◦ t*)) ◦ u)) ◦ v*)
d. ((r* ◦ s) ◦ t*)
b.
c.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 24
d.
C. Hasil dari Concatenation dari bahasa regular (r* ◦ t) dan (v* ◦ u) adalah
b.
c.
d.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 25
e.
E. Ekspresi regular dari bahasa yang diterima dari diagram transisi berikut adalah
a. (( x ◦ y ) ◦ z )
b. (( x ◦ y ) ◦ z )*
c. (( x U y U z )
d. ((x ◦ y ) U z)
G. Hasil bahasa yang diterima setelah dilakukan operasi kleene star dari bahasa regular r ◦ t adalah
a. rtrtrtrt
b. rrrtrttr
c. rrttrrtt
d. rtrtrtr
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 26
c. rrtu
d. ruvv
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 27
I. Hasil Concatenation dari gambar diatas adalah
a.
b.
c.
d.
b.
c.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 28
d.
ESSAI
1. Ubahlah ekspresi regular ((1* ◦ 0*) U 1) menjadi FSA.
2. Buatlah hasil operasi Concatenation dari dua finite state automata berikut ini.
3. Sebutkan bahasa yang diterima dari finite state automata berikut ini. Tuliskan dalam bentuk ekspresi
regular.
4. Apakah FSA yang dibentuk oleh ekspresi regular ((r ◦ t) U v) dan (r ◦ (t U v)) sama?
Sebutkan bahasa yang diterima oleh kedua FSA tersebut.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 29
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 30
2. Jika diketahui bahasanya, berikanlah bentuk ekspresi regularnya. Lengkapi tabel.
Bahasa yang dihasilkan L(r) Ekspresi reguler r
A {a, ab}
B {10, 100, 1000, ... }
C {xx, yy}
D Himpunan semua string yang dapat dibentuk dari
{x, y}, berakhir ‘xx’
E Himpunan semua string yang dapat dibentuk dari
{0, 1}, berawal ‘01’
3. Jika diketahui STD, tuliskan ekspresi regulernya dan bahasa yang diterima.
State Transition Diagram (Diagram Bahasa yang dihasilkan L(M) Ekspresi Regular r
Transisi Keadaan)
A
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 31
BAB 10
Aplikasi Finite State Automata
Analisis Leksikal merupakan antarmuka antara kode program sumber dan analisis sintaktik (parser).
Scanner melakukan pemeriksaan karakter per karakter pada teks masukan, memecah sumber program
menjadi bagian-bagian disebut Token.
karakter yang diabaikan (ignore), yaitu spasi, tabulasi - karakter ilegal - karakter komentar yaitu % - huruf
dan digit - awal teks, yaitu " - karakter spesial, yaitu karakter-karakter yang dipakai dalam tata bahasa selain
huruf dan digit. - karakter akhir baris - karakter akhir file
Karakter-karakter dikelompokkan menjadi token gabungan/ komposit, token spesial, dan token keyword.
Token gabungan misalnya Tidentifier, Ttext, untuk nama identifier dan teks. Token spesial misalnya Tcolon
untuk tanda ';', Tcomma untuk ',' dst. Token keyword misalnya Tif untuk 'if', Tvar untuk 'var', dst.
Token yang didapat akan diproses pada tahap berikutnya, yaitu analisis sintaks oleh program parser.
Program scanner tersebut akan dipanggil oleh parser, setiap kali suatu token yang dihasilkannya telah
dproses oleh parser.
1. Pengenalan Token
- Scanner harus dapat mengenali token
- Terlebih dahulu dideskripsikan token-token yang harus dikenali
2. Pendeskripsian Token
- Menggunakan reguler grammar. Menspesifikasikan aturan-aturan pembangkit token-token dengan
kelemahan reguler grammar menspesifikasikan token berbentuk pembangkit, sedang scanner perlu bentuk
pengenalan.
- Menggunakan ekspresi grammar. Menspesifikasikan token-token dengan ekspresi reguler.
- Model matematis yang dapat memodelkan pengenalan adalah finite-state acceptor (FSA) atau finite
automata.
Di sini akan diberikan kasus mesin jajan yang mempunyai spesifikasi sebagai berikut :
Masukan dari mesin berupa himpunan uang logam (koin-koin) yaitu koin Rp. 500,- dan koin Rp.1000,-
Keluaran dari mesin adalah makanan dengan jenis kacang asin, permen jahe, dan kripik pedas
Harga -harga makanan tersebut adalah kacang asin Rp. 1500,- ; permen jahe Rp. 1000,-; kripik pedas Rp.
2000,-
Untuk membuat model dari sebuah mesin jaja dibutuhkan teori mengenai mesin abstrak. Dalam dunia
matematika, teori automata berkaitan dengan teori mengenai mesin abstrak.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 33
Gambar 10.1 : Model 1 mesin jaja
Dari Gambar 5.2.1, model 1 ini akan mendesain mesin jaja sebagai berikut :
Masukan dari mesin berupa koin Rp. 500,- dan koin Rp. 1000,-
Setiap kali mesin menerima masukan koin, mesin akan menjumlahkan koin yang telah dimasukkan
Mesin berada pada status q1 artinya satu koin Rp.500,- telah dimasukkan pada mesin. Status q2 artinya
satu koin Rp. 1000,- atau dua koin Rp.500,- telah dimasukkan.
Status awal diberi anak panah, status akhir diberi dua lingkaran. Staus akhir dari mesin mi adalah himpunan
status q2, q3, q4.
Status q2 berarti mesin memberikan keluaran yaitu suatu tanda bahwa sebuah permen jahe dapat
dikeluarkan dari mesin jajan. Status q3 artinya sebungkus kacang asin dapat dikeluarkan. Begitu juga status
q4 berarti sebungkus kripik pedas dapat dikeluarkan.
Untuk tiap tiap status akhir berlaku :
Model NFA lain yang dapat dipakai untuk solusi ini adalah seperti gambar 5.2.2 model 2. berikut :
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 34
Gambar 10.2 : NFA jaja model 2.0
Pada gambar 5.2.2 model 2. sama seperti model 1. dengan sedikit perbedaan, yaitu pada gambar model 2
diijinkan terjadinya proses replikasi pada mesin jaja (mesin dapat mengeluarkan beberapa bungkus
makanan sejenis). Sedangkan pada model 1. Transaksi dilakukan satu-satu (mesin hanya dapat
mengeluarkan sebungkus makanan).
Keluaran akhir dari mesin ini diilustrasikan sebagai berikut :
Model 1 dan model 2 pada gambar di atas adalah NFA. Mesin Automata yang deterministik maupun tidak
deterministik dapat mengenali suatu pola dari regular expression dengan tepat. Tetapi diantara kedua
automata ini terdapat perbedaan waktu dan tempat yang perlu diperhatikan.
Automata berhingga yang deterministik akan menghasilkan suatu pengenal yang lebih cepat dibandingkan
dengan automata yang tidak deterministik, dilain pihak untuk dapat mengenali ekspressi beraturan yang
sama , ukuran automata berhingga yang deterministik dapat jauh lebih besar dari automata berhingga yang
tidak deterministik. Mesin Automata yang tidak deterministik dapat dibuat mesin automata
deterministiknya yang ekuivalen. Ekuivalen di sini artinya dapat mengenali bahasa yang sama. Mesin
automata yang deterministik dari model 1 dan model 2 dapat dilihat pada gambar 5.2.3 dan gambar 5.2.4.
Untuk menghitung perbandingan keuntungan dan kerugian terhadap waktu dan tempat jika memakai DFA
dan NFA diperlihatkan pada gambar 9, dimana | r | adalah besar RE dan | x | adalah jumlah input Gambar
9. menyimpulkan bahwa maksimal besar tempat yang dibutuhkan NFA adalah sebanyak besar RE-ay* dan
pad&DFA mentbutuhkan tempat sebanyak 2 ta"r tt. Sedangkan untuk jumlah waktu yang dibutuhkan NFA
untuk mengenali Ä£ sebanyak besar RE dikali banyaknya input Untuk £>Fj4 membutuhkan waktu sebanyak
input
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 36
Gambar 10.4 : DFA mesin jaja untuk model 2
Untuk kasus mesin jajan model 1., rancangan dengan pendekatan 1 lebih efekttf karena dapat mengenali
dengan cepat, tapi untuk pendekatan 2 NFA lebih baik, karena bila dengan pendekatan DFA jumlah state-
nya berkembang menjadi sangat besar dibanding dengan waktu untuk mengenali A&nya bila memakai
pendekatan NFA.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 37
10.3 Pengenalan Pola Alamat Email Menggunakan FSA
Untuk bisa mengenali apakah itu sebuah alamat email yang valid atau tidak, perlu diketahui pola yang
terdapat pada alamat email itu sendiri. Sebagai contoh terdapat suatu serangkaian string
winangsari@uai.ac.id apakah string tersebut adalah alamat email yang valid atau tidak. Untuk bisa
mengenali suatu pola suatu kalimat (string), terdapat suatu cabang ilmu yang membahas mengenai
pemrosesan suatu bahasa, yaitu Teori Bahasa Formal dan Automata. Pendekatan pengenalan pola suatu
string melalui Bahasa Formal dan Automata sangat mungkin dilakukan karena dapat memodelkan
pengenalan pola string input menggunakan Finite State Automata (FSA), yaitu suatu mesin abstrak yang
mampu mengenali (recognize) dan membangkitkan (generate) suatu string atau kalimat.
Email
Email (electronic mail) merupakan suatu teknologi pengiriman surat berbasis elektronik. Karena berbasis
elektronik, alamat email (mail address) yang digunakan juga memiliki struktur yang berbeda dengan alamat
pengiriman surat tradisional. Sebagai contoh winangsari@uai.ac.id adalah alamat email yang valid
berdasarkan RFC822 [2]. Alamat email memiliki format user@namadomain.domain sehingga secara garis
besar selalu memiliki pola sebagai berikut :
“satu atau lebih huruf/angka, diikuti tanda @ kemudian diikuti dengan satu atau lebih huruf/angka,
dipisahkan oleh tanda titik, lalu diakhiri dengan satu atau lebih huruf/angka”.
Pada kenyataannya, sesuai dengan perkembangan teknologi email, pola diatas memang tidak mutlak
demikian. Terdapat otentikasi yang lain seperti melibatkan karakter spesial yang lainnya pada baik pada
user/ namadomain/ domain itu sendiri. Domain juga tidak lagi hanya international domain saja (com, net,
org, web) tetapi sudah terdapat region/ country domain dimana setiap negara di dunia ini memiliki
identitas sendiri-sendiri, sebagai contoh Indonesia (id) sehingga jika terdapat alamat email
winangsari@uai.ac.id maka alamat tersebut valid. Sebagai batasan pada tulisan ini, penulis hanya akan
melibatkan tambahan karakter tanda titik, tanda minus, dan garis bawah.
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 38
Gambar 10.5 : Mesin Email menggunakan DFA
Mesin email selalu mengawali “hidupnya” dari initial state (q0) yang dilanjutnya ke state selanjutnya sampai
accepted state (q5). Contoh kasus diberikan input winangsari@uai.ac.id maka prosesnya adalah sebagai
berikut :
Head akan menunjuk ke karakter digit pertama dari input, yaitu “t” (huruf) diterima di q 0 sehingga state
berubah ke q1.
Karakter berikutnya adalah “o” (huruf), sedangkan di q 1 terjadi perulangan (looping) ke state q1 (berulang
ke dirinya sendiri) jika masih mendapat input berupa huruf. Karena setelah “o” adalah “m” (masih huruf)
maka head di pita input akan terus bergerak ke kanan sampai tidak bertemu huruf. Sehingga pada state q1
akan berhenti menunjuk ke karakter “y” dan head menunjuk ke tanda “@”.
Karena current head menunjuk tanda @ (bukan huruf). Maka state akan berpindah ke q2. Current head
berada di “b” (huruf) pada “bangsanegara”. Karena dari “b” hingga “a” sebelum tanda titik “.” adalah huruf
semua, maka terjadi looping di q2 sampai pada akhirnya head menunjuk ke tanda titik “.” setelah
“bangsanegara”.
Head menunjuk tanda titik “.” maka state bertransisi dari q2 menuju q4.
Setelah itu head menunjuk karakter “w” dan akan terjadi perulangan di q4 sampai menghabiskan “web”.
Head menunjuk ke tanda titik “.” Maka state bertransisi dari q4 ke q5.
Current head menunjuk pada karakter “i”, tetap di q 5 sampai pada akhirnya head menunjuk ke karakter
terakhir (end-of-string) yaitu “d”. Karena “d” adalah huruf, maka state akan tetap dan berhenti di q5. Karena
q5 adalah accepted state, maka input diterima, artinya input adalah alamat email yang valid.
SOAL- SOAL
1. Jika kita memiliki mesin seperti gambar di bawah, maka pada saat kita definisikan sebagai tupple
(Q, å, d,q0,F) akan kita dapatkan:
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 39
b. å : {0, 1}.
c. q0 sebagai initial state.
d. q2 sebagai final state.
e. semua jawaban benar.
2. Sebuah DFA M = ( Q={q0,q1}, {a,b}, S=q0 , F={q0,q1}, T) dengan T={ (q0,a)=q0, (q0,b)=q1,
(q1,a)=q0, (q1,b)=q1}.
4. Diberikan diagram transisi status suatu FSA pada gambar di bawah ini :
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 40
6. Pada sebuah kompilator, kegiatan mengenali rangkaian karakter pada kode sumber dan
menerjemahkannya menjadi token2 adalah tugas dari modul :
a. code generator
b. lexical analyzer
c. code generator
d. tokener
1
y
1
Semua string kecuali λ y
Semua string termasuk λ
Semua string yang dimulai dengan 0 atau 1
{w | w Є (0, 1)* dan |w| ≥ 1}
a. Semua benar
b. Hanya satu yang benar
c. Hanya satu yang salah
d. 2 jawaban benar
e. Tidak ada jawaban benar.
8.
c
0 0
1
a b
a. ab(cb)*
b. ab(bab)*
c. ab(cb)* +ab(bab)*
d. ab(cb+bab)*
e. benar semua
ESSAY
4. Buatkan DFA yang menerima semua string biner yang mengandung kemunculan 1 tepat 2 kali.
Contoh : 11, 101, 011, 110, 0110, ...
5. Buatkan NFA yang menerima string biner dengan semua kemunculan 0 selalu lebih dahulu dari pada
kemunculan 1, sekaligus kemunculan 0 minimal 1 kali, dan sekaligus kemunculan 1 minimal 1 kali juga.
Contoh : 01, 001, 0011, 011, 00011111111, …
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 43