Lecture 03
CS3113 Theory of Computation
CS3113 Theory of Computation
State transition diagram &
transition table
2 EAR/CS3113
Finite Automata
• Suatu model komputer dengan jumlah memory yang sangat terbatas (Model komputasional yang paling sederhana)
• Contoh : • Contoh :
– Perangkat lunak untuk merancang dan menguji perilaku rangkaian digital.
– Lexical analyzer dari sebuah kompilator yang membagi teks input ke dalam unit-unit logik, seperti identifier, keyword dan pungtuasi. – Perangkat lunak untuk men-scan teks berukuran besar, seperti
koleksi web page, untuk menemukan adanya kata, frasa atau pola yang lain.
– Perangkat lunak untuk verifikasi sistem yang memiliki sejumlah berhingga state yang berbeda, seperti protokol-protokol komunikasi atau protokol untuk keamanan pertukaran data.
Contoh 1 Model FA Sederhana
• Model switch on/off mengingat apakah switch berada dalam state “on” atau state “off”.
• Model memungkinkan user untuk menekan tombol yang memiliki pengaruh berbeda tergantung pada keadaan
switch:
– Jika switch berada dalam state “off” maka setelah tombol ditekan
state berubah menjadi “on”.
– Jika switch berada dalam state “on” maka setelah tombol ditekan
state berubah menjadi “off”.
4 EAR/CS3113
Komponen dalam FA
• State dinyatakan oleh lingkaran, dalam Contoh 1 state diberi nama
“on” dan “off”.
• Arc diantara state diberi label “input “ yang menyatakan pengaruh
eksternal pada sistem.
– Dalam Contoh 1 kedua arc diberi label ‘push” yang menyatakan
user menekan tombol tertentu.
• Start state atau initial state merupakan state dimana sistem berada • Start state atau initial state merupakan state dimana sistem berada
dalam keadaan awal.
– Dalam Contoh 1 start state adalah off.
– Selanjutnya, start state ditunjukan oleh kata start dan panah menuju start state tersebut.
• Final atau accepting state.
– Dalam Contoh 1 state on dinyatakan sebagai final state. – Selanjutnya, final State dinyatakan dalam lingkaran ganda.
Contoh 2 Model FA Sederhana
• FA untuk mengenali kata “then”
• dapat dinyatakan sebagai bagian dari lexical analyzer.
• Input dinyatakan oleh huruf.
• Start state merupakan string kosong
• Setiap state memiliki transisi pada huruf selanjutnya dari kata then
ke state yang menyatakan prefix selanjutnya yang lebih besar.
• State “then” adalah accepting state.
6 EAR/CS3113
Sehingga….
• Finite Automata (FA):
– Merupakan mesin otomata dari
bahasa regular
.
– Memiliki
state
yang jumlahnya
berhingga
dan
dapat
berpindah
dari satu state ke state yang
dapat
berpindah
dari satu state ke state yang
lainnya.
– Perubahan state dinyatakan oleh
fungsi transisi
.
– Tidak
memiliki tempat penyimpanan, sehingga
State Transition Diagram [1]
• sekumpulan node berlabel terbatas, yang dihubungkan dengan garis
( busur)
• State diagram akan menerima input string dan menghasilkan output
berupa accept/reject
• Contoh di bawah ini adalah state transition diagram untuk • Contoh di bawah ini adalah state transition diagram untuk
mengenali variable (kita akan menyebutnya M1).
8 EAR/CS3113
• Contoh string input : X256, 789, 7uyt (variabel manakah yang akan diterima)?
State Transition Diagram [4]
Contoh String input X256
Pertama kali, state akan masuk ke q0 secara otomatis. Kemudian membaca alphabet “X” dan state berubah ke q2
membaca alphabet “2”, “5”, dan “6” berturut-turut state tetap di q2
10 EAR/CS3113
Program Terjemahan STD
State := q0
Baca simbol berikut dari string input While not End-Of-String do
Case State of
q0 : if CurrentSymbol adalah letter then State := q2 q0 : if CurrentSymbol adalah letter then State := q2
else if CurrentSymbol adalah digit then State := q1 else exit to error rutine
q1 : exit to error rutine
q2 : if CurrentSymbol adalah letter then State := q2
else if CurrentSymbol adalah digit then State := q2 else exit to error rutine
Baca simbol berikutnya dari string input; End While
Example
: String in a Language
0 0,1
String 101 is in the language of the DFA below. Start at A. 12 Start 1 0 A B C 1 0 0,1
Example
: String in a Language
0 0,1
Follow arc labeled 1.
String 101 is in the language of the DFA below.
Start 1 0 A B C 1 0 0,1
Example
: String in a Language
0 0,1
Then arc labeled 0 from current state B.
String 101 is in the language of the DFA below.
14 Start 1 0 A B C 1 0 0,1
Example
: String in a Language
0 0,1
Finally arc labeled 1 from current state A. Result is an accepting state, so 101 is in the language. String 101 is in the language of the DFA below.
Start 1 0 A B C 1 0 0,1
Latihan : [1]
• Buat diagram transisi untuk mengenali penulisan
bilangan Real (mesin float).
Masukkan string berikut ke dalam mesin float tersebut:
– 123459 (integer tidak valid)
– 1234567,987 (real)
– 1234567,987 (real)
– 1234E (tidak valid)
– 1234E+ (tidak valid)
– 123,4E5 (valid) – 1234E56 (real) – 1234E+56 (real) – 1234E-56 (real) 16 EAR/CS3113
Tabel Transisi [2]
Gambar di atas adalah tabel transisi dari M1.
18 EAR/CS3113
State := q0; Repeat
Baca simbol berikut dari aliran input; Case simbol of
letter : Input := “letter”; digit : Input := “digit”;
End-of-string : Input := “EOS”;
jika-tak-satupun-ada-diatas : Exit to Error rutine; State := Table[State, Input]
if State = “error” then Exit to Error rutine Until State = “Accept”
Mengubah STD
ke Tabel Transisi
1. Definisikan state dan alfabet yang mungkin
2. Tambahkan kolom EOS
3. Isi nilai di kolom EOS dengan “accept” untuk baris dimana accepted state berada
dimana accepted state berada
4. Isi dengan “error” untuk selainnya (di kolom EOS)
5. Untuk tiap-tiap baris, isikan nilai state berikutnya yang bersesuaian dengan alfabet.
6. Isikan “error” untuk sel yang belum terisi.
20 EAR/CS3113
Latihan : [2]
a. Ubah diagram transisi dari Mesin Float
menjadi tabel transisi.
b. Buat juga program terjemahan tabel
transisinya (Lexical Analizer)
Jawab : [2-a]
22 EAR/CS3113
Jawab : [2-b]
State := q1 Repeat
Baca simbol berikut dari aliran input Case Symbol of
0..9 : Input := “digit”
“,”, “E”, “+”, “-” : Input := Symbol End-of-string : Input := “EOS”
else else
Exit to Error rutine end Case
State := Table[State, Input]
if State = “error” then Exit to Error rutine Until State = “Accept”
Diskusi
Buatkan State Transition Diagram, dan Tabel
Transisi untuk kasus deteksi :
a. Bilangan ganjil pada string biner
b. Bilangan genap pada string biner
b. Bilangan genap pada string biner
c. Kemunculan substring 111 pada string biner
d. Kemunculan substring 0101 pada string biner
e. Bagian leksik yang mengenali kemunculan
string “:=“, sekaligus Angka, sekaligus variabel.
24 EAR/CS3113
Jawab : [1] Mesin Ganjil
• Mesin terdiri dari dua status : q0 dan q1. • karakter masukan: 0, 1
• Lihat bahwa accepted state selalu menerima karakter 1. • Contoh String yang dikenali mesin 100001, 1111111,
0000001, dan sebagainya
Contoh String yang dikenali mesin 100001, 1111111, 0000001, dan sebagainya
Jawab : [2] Mesin Genap
• Contoh string yang diterima mesin ini adalah
0, 00, 10, 1111110, 000000010, dan
sebagainya
26 EAR/CS3113
Jawab : [3] Mesin 111
• Contoh string yang diterima mesin ini adalah
111, 1111110, 000001110, dan sebagainya
Jawab : [4] Mesin 0101
• Contoh string yang diterima mesin ini adalah
0101, 000101, 000001010, 1111110101111
dan sebagainya
28 EAR/CS3113
Jawab : [5] Mesin Variabel, Angka, dan
Assignment
Daftar Pustaka
1. Brookshear, Glen. J. “Theory of Computation : Formal
Language, Automata and Complexity”, The
Benjamin/Cummings Publishing Company, 1989
2. Hopcroft, Jhon E. and Jeffery D. Ullman, “Introduction
to Automata Theory, Language, and Computation” to Automata Theory, Language, and Computation”
30 EAR/CS3113