Anda di halaman 1dari 43

Ekspresi Reguler

Teori Bahasa, Automata, dan Kompilator


Dosen : Ir. Winangsari P., MT
2.4 Algoritma FA

Berikut adalah algoritma yang merepresentasikan state diagram di atas :

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}

If ( (symbol = spasi ) AND (state = “q2”) ) {spasi merupakan End


Of String, tanda akhir string}
then output (“STRING DITERIMA”)
else output (“STRING TIDAK DITERIMA”)
endif

end Program (FA_Identifier)

------------------------------------------------------------------------
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}

If ( (symbol = spasi ) AND (state = “q3”) ) {spasi merupakan End


Of String, tanda akhir string}
then output (“STRING DITERIMA”)
else output (“STRING TIDAK DITERIMA”)
endif
end Program (FA_Identifier)

------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 3
Contoh program Finite Automata

Misalkan diketahui sebuah STD yang namanya M :

Maka algoritma FA di atas adalah

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}

If ( (symbol = spasi ) AND (state = “q1”) ) {spasi merupakan End


Of String, tanda akhir string}
then output (“STRING DITERIMA”)
else output (“STRING TIDAK DITERIMA”)
endif

end Program (FA_M)

Lexical Analyzer dapat lebih efisien jika kita menggunakan tabel transisi seperti berikut ini

Deskripsi : Mengenali string a dan b yang memiliki ketentuan


- Diakhiri oleh ‘a’
- Diawali oleh 0 atau lebih b

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

1. Syarat yang harus dipenuhi oleh suatu diagram transisi adalah…


a. Terdapat busur yang menyatakan transisi antar state.
b. Minimal 1 initial state.
c. Maksimal 1 final state.
d. Fully defined.
e. Tidak ada jawaban yang benar.

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).

3. Pernyataan berikut ini yang berkaitan dengan FSA adalah…


a. Memiliki satu status awal.
b. Status berikutnya bergantung pada status ini dan input.
c. Memiliki beberapa status akhir atau memiliki output pada setiap state/ transisinya.
d. a dan b benar.
e. a, b, dan c benar.

4. Tata bahasa di bawah ini yang membangun bahasa reguler adalah…


a. Abc  De
b. Ad  DeF
c. D  bC
d. C  cDgF
e. Tidak ada jawaban yang benar

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.

6. Perhatikan Diagram State berikut!

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

7. Perhatikan Diagram State berikut!

String yang diterima oleh Finite State Automata di atas adalah …


a. 101
b. 010
c. 001
d. 110
e. 000
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 8
8.Berdasarkan penggolongan bahasa menurut Chomsky di bawah ini, yang termasuk bahasa reguler adalah
yang ditunjukkan oleh nomor...

a. 1
b. 2
c. 3
d. 4
e. Salah semua

9. Perhatikan representasi Finite State Automata berikut!

Indikator State ditunjukkan oleh nomor…


a. 1
b. 2
c. 3
d. 4
e. Tidak ada Indikator State pada gambar.

------------------------------------------------------------------------
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.

5. Buatlah Diagram State untuk Finite State Automata pada no. 4.

6. Perhatikan gambar berikut :

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

7. Perhatikan gambar berikut :

Regular grammar yang dapat dibentuk dari gambar diatas adalah :


a. A → B0
b. B → A0
c. B → 0A
d. B → C1
e. B → 1C

8. Manakah pernyataan berikut yang benar ????


a. Setiap CFG adalah bagian dari regular grammar
b. Setiap regular grammar adalah sebuah CFG
c. Regular grammar menjelaskan dengan tepat bahwa semua bahasa regular tidak ekivalen dengan
FSA
d. Regular grammar menjelaskan dengan tepat bahwa semua bahasa regular tidak ekivalen dengan
Regular expression
e. Regular grammar sama dengan regular expression

------------------------------------------------------------------------
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).

Perbedaan deterministic dan non-deterministik automata adalah :


Deterministik Finite Automata : pada diagram transisi DFA setiap simbol input dari suatu state hanya akan
bertansisi ke satu state lain.
Non-Deterministik Finite Automata : pada diagram transisi NDFA satu simbol input dari suatu state dapat
bertransisi ke lebih dari satu state lainnya.

Contoh :

Gambar 8.1 : DFA dan NDFA


Contoh soal :
Buatlah diagram NDFA M = ({1, 2, 3, 4 },{a,b}, δ, q0 ,{q3}) dengan table transisi sebagai berikut :
a b
1 1, 2 1,3
2 4 {}
3 {} 4
4 4 4
Table di atas maksudnya adalah :
δ(1,a) = {1, 2} δ(1,b) = {1, 3}
δ(2,a) = {4} δ(2,b) = {}
δ(3,a) = {} δ(3,b) = {4}
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 11
δ(4,a) = {4} δ(4,b) = {4}

8.2 Ekivalensi NFA dan NDFA


Definisi : Dua Finite Automata M1 dan M2 ekivalen jika dan hanya jika
L(M1) = L(M2)
Dengan kata lain, jika keduanya menerima bahasa yang sama.

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

Misalkan : M’ = (Q’, å, d’,q0’,F’)


Q’ = {[1], [2], [1, 2], [Ø]}
q0’= [1]
F’ = {[2], [1, 2]}
δ’ a b
[1] [1, 2] [1]
[2] Ø [1, 2]
[1, 2] [1, 2] [1, 2]
Ø Ø Ø

Perlu dicatat bahwa δ’ ([1, 2], a) = [1, 2]


Karena δ’ ([1, 2], a) = δ (1, a) U δ (2, a)
= {1, 2} U Ø
= {1, 2}

------------------------------------------------------------------------
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.

NDFA M = {1, 2, 3},{a,b}, δ, 1 ,{3}) dengan table transisi sebagai berikut


a b
1 {1, 2} {}
2 {} {2, 3}
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] [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.

NDFA M = {1, 2, 3},{a,b}, δ, 1 ,{3}) dengan table transisi sebagai berikut


a b
1 {} {2}
2 {1, 3} {1, 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.

9.1 Definisi Ekspresi Reguler


Suatu ekspresi reguler dari himpunan simbol Σ didefinisikan sebagai berikut:
a. λ adalah ekspresi reguler
b. tiap anggota Σ adalah ekspresi reguler
c. jika p dan q adalah ekspresi reguler maka (p U q) juga merupakan ekspresi reguler
d. jika p dan q adalah ekspresi reguler maka (p ο q) juga merupakan ekspresi reguler
e. jika p adalah ekspresi reguler maka p* juga merupakan ekspresi reguler

urutan prioritas dari operasi yang ada adalah:


operasi bintang atau kleene closure (*)
operasi penyambungan atau concatenation (ο)
operasi gabungan atau union (U)

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}

9.2 Hubungan Ekspresi Reguler dengan Finite Automata


operasi “U” (union)
misalkan L1 = {a,ab}
L2 = {ba,bb}
Maka L1 U L2 adalah {a,ab,ba,bb}

Untuk menggambar diagram transisinya, langkah-langkah yang ditempuh adalah:


- membuat gambar dari dua STD yang akan di-union

------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 16
Gambar 9.1 : 2 Ekspresi yang akan di-union

- membuat initial state baru


- initial state baru adalah final state jika dan hanya jika salah satu initial state lama adalah final state
- dari initial state baru dibuat tanda panah yang sama dengan tanda panah dari initial state lama,
kemudian initial state lama dibatalkan

Gambar 9.2 : STD yang baru

Operasi “o” (concatenation)


Misalkan L1 = {a, ab}
L2 = {ba, bb}
L1 ο L2 = {aba, abb, abba, abbb}

Yang perlu diingat disini adalah L1 ο L2 ≠ L2 ο L1


Untuk menggambar diagram transisinya, langkah-langkah yang dilakukan adalah:
- membuat gambar dari dua ekspresi yang akan diconcat

------------------------------------------------------------------------
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)

Gambar 9.4 : 2 ekpresi setelah diconcat

Operasi “*” (bintang kleene /star)


Tujuannya adalah membentuk semua kemungkinan konkatenasi string dalam bahasa.
Misalkan ada dua buah ekspresi:
L1 = {b}
L1 * = { λ, b, bb, bbb, bbbb, …}
L2 = {bb} = {b²}
L2* = { λ , b², b⁴, b⁶, …}

Untuk membentuk diagram transisinya, langkah-langkah yang dilakukan adalah :


- semisal dilakukan konkatenasi dengan dirinya sendiri maka perlu ditambahkan keadaan berhenti
untuk menerima λ.

Gambar 9.5 : Menggambarkan initial 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

Gambar 9.6 : Initial state baru sebagai keadaan akhir

- 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.

Gambar 9.7 : Keadaan akhir

9.3 Konversi FSA (Finite State Automata) menjadi Ekspresi


Regular
Finite State Automata (FSA)
Finite State Automata adalah suatu model yang dapat menerima input dan mengeluarkan input. FSA
mempunyai state yang jumlahnya berhingga, terjadi transisi antara satu state dengan state lainnya. Pada
FSA, tidak terdapat tempat penyimpanan sebagai pengingat, FSA hanya dapat mengingat state terkini.

Tabel 9.1 : Ekspresi regular dan maknanya


Ekspresi Makna
r+t Himpunan string gabungan r∪ t
Rt Penyambungan string r∘t
r* Kleene closure

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

FSA diatas menerima ekspresi reguler 0+(10)*11

Langkah-langkah mengkonversi FSA menjadi ekspresi regular:


Dimulai dari initial state, tuliskan transisi inputan (yang terdapat pada busur), perhatikan ekspresi reguler
yang terjadi pada transisi dari state tersebut ke state lain, apakah terdapat union (jika transisi dari 1 state
memiliki lebih dari 1 state tujuan), atau concatenation (terdapat penggabungan string dari 1 state ke 1
state tujuan), dan Kleene* (terdapat perulangan terus-menerus), ditulis setiap input yang diterima dari tiap
state dan kemungkinan ekspresi reguler yang terjadi antar transisi (union, concat atau Kleene*) hingga
akhir FSA atau accepts state . Seperti pada gambar diatas akan kita jabarkan transisi yang terjadi :
Dari initial state q0 menuju q1, terjadi penulisan string 0
Dari state q1 terdapat 2 transisi yaitu :
q1 ke q2 lalu ke q1 lagi dengan penulisan string 10 secara Kleene* dan q1 ke q3 lalu ke q4 dengan penulisan
string 11 secara concatenation. Pada kedua transisi diatas terjadi ekspresi regular union, yaitu kita dapat
membuat transisi dengan menggambar 2 transisi dari q1 tersebut, mesin membaca union ini sebagai
pemilihan transisi, dapat melalui q1-q2-q1 atau q1-q3-q4.

Lalu kita telusuri FSA dari initial state hingga accepts state, dan dicapai ekspresi reguler 0+(10)*11.

9.4 Konversi ekspresi reguler menjadi FSA


Untuk mengonversi ekspressi reguler menjadi FSA, terlebih dahulu kita harus mengetahui operasi yang ada
dalam ekspresi reguler tersebut, seperti union, concatenation dan Klenee*. Jika terdapat symbol ‘+’ pada
ekspressi reguler, maka terdapat operasi union, dimana terdapat 1 state awal dengan transisi ke beberapa
state tujuan (tergantung jumlah operasi union pada ekspresi reguler). Jika terdapat symbol ‘*’ pada
ekspressi regulrer, maka terdapat operasi Klenee*, dimana terdapat pengulangan pembacaan string input.
Dan jika pembacaan string pada ekspresi reguler tidak terdapat simbol antara string1 dan string berikutnya,
maka operasi yang digunakan adalah opersi concatenation atau penggabungan string.

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*.

Tabel 9.2 : Penggambaran final state automata


Operasi FSA
Concatenation
11

------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 20
Union
1+10

Kleene*
(10)*

9.5 Penggambaran Operasi FSA


 Penggabungan dua buah FSA (Union)

Gambar 9.8 : 2 FSA


Penyelesaian:
Langkah pertama adalah menghapus kedua initial state lama dan membuat suatu state baru sebagai initial
state yang baru.

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

 Concatenation dua buah FSA

Gambar 9.11 : 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

 operasi Kleene Star FSA

Gambar 9.13 : 1 FSA

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.

Gambar 9.14 : pengubahan FSA menggunakan Kleene Star

------------------------------------------------------------------------
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*)

e. L (((r* ◦ s) ◦ t*)) = L ((r* ◦ s)) ◦ L (t*)


= L(r*)

B. Hasil dari Union bahasa regular (r* ◦ t) dan (v* ◦ u) adalah


a.

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.

D. Ekspresi regular di definisikan sebagai berikut, kecuali


a. Ø bukan merupakan ekspresi regular
b. Jika p dan q adalah ekspresi regular, maka p U q
c. Jika p dan q adalah ekspresi regular, maka p ◦ q adalah ekspresi regular
d. Jika p adalah ekspresi regular maka p* adalah ekspresi regular

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)

F. Manakah pernyataan berikut yang benar


a. Ekspresi regular tidak dapat dirubah menjadi Finite State Automata
b. Dua buah ekspresi regular tidak dapat digabung (U)
c. Dua buah ekspresi regular tidak dapat di-Concatenation
d. Ekspresi regular dapat diubah sehingga bisa menerima bahasanya sendiri secara berulang-ulang
disebut Kleene Star

G. Hasil bahasa yang diterima setelah dilakukan operasi kleene star dari bahasa regular r ◦ t adalah
a. rtrtrtrt
b. rrrtrttr
c. rrttrrtt
d. rtrtrtr

H. Bahasa yang diterima dari ekspresi regular (((r*◦ t) ◦ u) U v) adalah


a. {}
b. rtuu

------------------------------------------------------------------------
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.

J. Hasil konversi ekspresi regular (1* ◦ (0 U 1)) menjadi FSA adalah


a.

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.

5. Gambarkan FSA dari ekspresi regular ((p ◦ q) U (r ◦ s)).

Soal Latihan sebelum Kuis


1. Manakah dari ekspresi regular di bawah ini yang menghasilkan bahasa yang infinite ? Lengkapi
tabelnya.
Ekspresi reguler r Bahasa yang dihasilkan L(r) Finite / infinite
A (x o y)
B (x* o z)
C (z U x)
D (x U y)*
E (a o y)*
F (x o (x U z))

------------------------------------------------------------------------
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

10.1 Scanner (Lexical analyzer) pada Kompilator


Scanner merupakan bagian dari kompilator yang berfungsi melakukan analisis leksikal. Analisis ini
melakukan penerjemahan masukan menjadi bentuk yang lebih berguna untuk tahap-tahap kompilasi
berikutnya. Finite-State Automata adalah model dasar untuk membentuk suatu Analisis Leksikal.

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.

Analisis Leksikal mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen pokok:


identifier, delimeter, simbol-simbol operator, angka, keyword, noise word, blank, komentar, dan seterusnya
menghasilkan suatu Token Leksikal yang akan digunakan pada Analisis Sintaktik. Untuk melakukan analisis
leksikal, di dalam program kompilator terdapat pengelompokan jenis-jenis karakter dan token. Untuk
karakter, bentuk pengelompokan karakter adalah sebagai berikut:

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.

Yang dilakukan oleh program scanner adalah:


- Melakukan pembacaan karakter perkarakter pada berkas masukan.
- Mengklasifikasikan karakter, apakah spesial, huruf, atau lainnya. Jika karakter tersebut tidak
termasuk dalam kelompok manapun, maka proses kompilasi akan berhenti dan memberi pesan
kesalahan dan baris posisi kesalahan.
- Mengklasifikasikan karakter atau beberapa karakter menjadi suatu token.

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.

Tahap Pelaksanaan Analisis Leksikal:


- Pada single one pass
Terjadi interaksi antara scanner dan parser. Scanner dipanggil saat parser memerlukan token berikutnya.
Pendekatan ini lebih baik karena bentuk internal program sumber yang lengkap tidak perlu dibangun dan
disimpan di memori sebelum parsing dimulai.

- Pada separate pass


------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 32
Scanner memproses secara terpisah, dilakukan sebelum parsing. Hasil scanner disimpan dalam file. Dari file
tersebut, parsing melakukan kegiatannya. Scanner mengirim nilai-nilai integer yang mempresentasikan
bentuk internal token, bukan nilai-nilai string. Keunggulan cara ini adalah ukurannya kecil dan tetap. Parser
sangat lebih efisien bekerja dengan nilai integer yang mempresentasikan simbol daripada string nyata
dengan panjang variabel.

Implementasi Analisis Leksikal:

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.

3. Implementasi Analisis Leksikal sebagai Finite Automata


Pada pemodelan analisis leksikal sebagai pengenal yang menerapkan finite automata, analisis leksikal tidak
cuma hanya melakukan mengatakan YA atau TIDAK. Dengan demikian selain pengenal, maka analisis
leksikal juga melakukan aksi-aksi tambahan yang diasosiasikan dengan string yang sedang diolah.

4. Penanganan Kesalahan di Analisis Leksikal


Hanya sedikit kesalahan yang diidentifikasi di analisis leksikal secara mandiri karena analisis leksikal benar-
benar merupakan pandangan sangat lokal terhadap program sumber.

10.2 Vending machine


Di dalam finite state machine with output ada beberapa contoh yang dapat digunakan dalam penelitian
seperti mesin jajan, mesin atm, dan lain-lain. Misal mengambil salah satu contoh yaitu mesin jajan atau
vending machine, di dalam vending machine terdapat beberapa aspek yang harus kita pelajari seperti
bagaimana proses dalam menjalankan vending machine, oleh karena itu kita juga harus mendefinisikan dari
awal seperti data inputan, data proses, dan data keluaran. Dalam data inputan juga harus dijelaskan seperti
apakah masukkannya, kemudian juga menentukan data keluaran atau objek yang akan digunakan.

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.

Mesin jaja diatas akan dimodelkan sebagai berikut :

------------------------------------------------------------------------
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 :

Status akhir Kalimat vane diterima (RE)


ql0 1000| 500,500
ql5 500,1000|1000,500|500,500,500
q20 500,1000,500| 500,500,500,500|1000,500,500|1000,1000

Diagram transisi untuk model 1. Di atas sebagai berikut :

Tabel 3. Diagram transisi NFA Mesinj Jaja Model 1

Tabel 10.1 : Diagram transisi NFA mesin jaja model 1

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

Diagram transisi dari model 2. Disajikan sebagai berikut:

Tabel 10.2 : Diagram transisi mesin 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 :

Untuk mengeluarkan makanan permen jahe :


RE = (500)+|(1000)+ |(1000,500,500)+|(500,500,1000)+

Untuk mengeluarkan makanan kacang asin :


RE = (500)+ |(1000)+ |(1000,500)+ |(500,1000)+

Untuk mengeluarkan makanan kripik pedas :


------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 35
RE = (500)+ 1(1000)* 1(1000,500,500)+ | (500,500,1000)+

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.

Gambar 10.3 : DFA untuk mesin jaja model 1

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

Tabel 10.3 : Maksimal jumlah tempat dan waktu yang digunakan


untuk mengenal suatu RE pada NFA dan DFA

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.

Perancangan Perangkat Lunak


Mesin yang dirancang adalah mesin DFA yang dapat menerima input string berupa alamat email yang valid
(baca: mesin email). Jika input adalah string alamat email valid, maka mesin akan “berhenti” atau dalam
artian mesin akan “menerima” string tersebut. Mesin email bekerja secara sekuensial, artinya mengecek
satu persatu dari input string yang diterima oleh mesin email dan bergerak (bertransisi) dari current state
ke state selanjutnya. Jika input string memenuhi atau cocok, state akan selalu bertransisi terus menerus,
sampai akhirnya mesin akan berhenti dengan hasil akhir diterima atau ditolak. Jika karakter akhir (end-of-
string) dari input string berakhir di final state, maka input diterima (alamat email valid), jika tidak maka
input string ditolak (error) dan mesin berhenti (alamat email tidak valid). Berikut adalah pemodelan mesin
email menggunakan DFA :

------------------------------------------------------------------------
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:

a. Q : {q0, q1, q2}

------------------------------------------------------------------------
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}.

DFA tersebut dapat disederhanakan dengan mengubah


a. T = {  (q0,a)=q0,  (q0,b)=q1 }
b. T= {  (q1,a)=q0,  (q1,b)=q1 }
c. F = {q0}
d. Q = {q0}, F = {q0} dan T = {  (q0,a)=q0,  (q0,b)=q0 }
e. Salah semua

3. X dan Y adalah 2 himpunan tak berhingga (infinite), mana yang salah?


a. |X| ≤ |Y| jika dan hanya jika ada fungsi satu ke satu dari X ke Y
b. |X| = |Y| jika dan hanya jika ada fungsi onto dari X ke Y
c. |X| dan |Y| tidak dapat dibandingkan karena keduanya tak hingga
d. |X| < |Y| berarti |X| ≤ |Y| dan |X| ≠ |Y|

4. Diberikan diagram transisi status suatu FSA pada gambar di bawah ini :

Ekspresi reguler mana yang cocok dengan FSA di atas :


a. 0* 01 *12* 2
b. 0*1*2*
c. 0+ 1+ 2+
d. 0+1* 2*
e. Salah semua

5. Berikut ini berkaitan dengan FSA


a. Memiliki satu status awal.
b. Status berikutnya bergantung pada status saat ini dan input.
c. memiliki beberapa status akhir atau memiliki output pada tiap state/transisinya.
d. jawaban (a) dan (b) benar
e. jawaban (a), (b), dan (c) benar

------------------------------------------------------------------------
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

7. Diketahui diagram transisi :


0
0
y
y

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.

Yang bisa diterima oleh sistem :


a. Kelipatan2
b. Kelipatan 3
c. Kelipatan 4
d. Dibagi 3 menyisakan 1
e. Dibagi 3 menyisakan 2

9. Diketahui tata bahasa G = ({S},{a,b}, S, P) dimana P terdiri dari


S  aaS | Saa | b
aS  Sa
Tata bahasa tersebut membangun :
a. Bahasa Bebas Konteks
b. Bahasa Sensitif-Konteks
c. Bahasa Reguler
d .Bahasa TakTerikat
e. Tidak ada yang benar
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 41
------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 42
10. Ekspresi regular yang dinyatakan dengan DFA berikut, adalah
b

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, …

6. Ubah NFA berikut menjadi DFA

7. Ubah e-NFA berikut menjadi DFA

8. Gambar FA untuk ER berikut


1(01)*

------------------------------------------------------------------------
Teori Bahasa, Automata dan Kompilator – Ir. Winangsari P, MT Halaman 43

Anda mungkin juga menyukai