Anda di halaman 1dari 37

CSH2B3

Teori Bahasa dan Automata

Finite Automata
State Transition Diagram
Regular Language

KK Intelligence, Computing, and Multimedia


Finite Automata [1]

Finite Automata (FA) :


Suatu model komputer dengan jumlah memory yang sangat terbatas.
Model komputasional yang paling sederhana.

Digunakan pada aplikasi yang membutuhkan teknik


pengenalan pola.

Contoh : pada aplikasi kompilator, bagian leksikal harus bisa


mengenali string mana yang merepresentasikan variable,
nama, konstanta numerik, dan reserved word.

Teori Komputasi | CSG3D3


Finite Automata [2]

Manfaat nyata :
Software untuk mendesain dan mencek perilaku sirkuit
digital. Contoh : mesin ATM.
Bagian Lexical Analyzer dari berbagai kompiler yang
berfungsi membagi teks input menjadi logical unit seperti
Keyword, Identifier, dan pungtuasi.
Search engine: menscan web, dan menemukan kata, frasa
atau pola yang tepat

Teori Komputasi | CSG3D3


Finite Automata [3]

FA dapat direpresentasikan/digambarkan dengan


State Transition Diagram
Tabel Transisi

Teori Komputasi | CSG3D3


State Transition Diagram [1]
State Transition Diagram (STD) : sekumpulan node berlabel
yang jumlahnya terbatas, yang dihubungkan dengan garis
berarah yang disebut busur.
STD akan menerima input berupa string dan menghasilkan
output berupa accept/reject
Contoh di bawah ini adalah STD untuk mengenali variable (kita
akan menyebutnya sebagai M1).

Teori Komputasi | CSG3D3


M1 memiliki tiga states yakni: q0, q1, q2
Start state / initial state q0 adalah state awal dari state
transition diagram
Accepted state / final state q2, dinotasikan dengan lingkaran
ganda
Transition: panah yang memindahkan dari state satu ke state
lainnya dengan menerima simbol input
Output dari mesin ini adalah accept (jika berhenti di accepted
state) atau reject (jika berhenti di selain accepted states)
Contoh string input (cek apakah akan diterima oleh M1) :
X256, 789, 7uyt

Teori Komputasi | CSG3D3


State Transition Diagram [2]

Contoh String input X256


Pertama kali, state akan masuk ke q0 secara otomatis.
Kemudian membaca simbol X dan state berubah ke q2
membaca alphabet 2, 5, dan 6 berturut-turut state tetap
di q2

Teori Komputasi | CSG3D3


Program Terjemahan STD
State := q0
Baca symbol pertama dari string input
While not End-Of-String do
Case State of
q0 : if CurrentSymbol adalah letter then State := q2
else if CurrentSymbol adalah digit then State := q1
else exit to error routine
q1 : exit to error routine
q2 : if CurrentSymbol adalah letter then State := q2
else if CurrentSymbol adalah digit then State := q2
else exit to error routine
Baca symbol berikut dari string input;
End While
If State <> q2 then exit to error routine

Teori Komputasi | CSG3D3


Latihan 1

Buat diagram transisi untuk mengenali penulisan bilangan Real


(mesin float) dengan kriteria masukan sebagai berikut.
123459 (integer)
1234567,987 (real)
1234E (tidak valid)
1234E+ (tidak valid)
1234E56 (real)
1234E+56 (real)
1234E-56 (real)

Teori Komputasi | CSG3D3


Jawaban 1

Teori Komputasi | CSG3D3


Tabel Transisi [1]

Tabel transisi : tabel dua dimensi yang menggambarkan setiap


transisi pada sebuah STD.
Index pada baris menyatakan daftar state
Index pada kolom meyatakan daftar symbol yang mungkin
muncul
Penambahan 1 atribut (kolom) di paling kanan dengan label
EOS yang menyatakan accept or error.

Teori Komputasi | CSG3D3


Tabel Transisi [2]

Gambar di bawah merupakan tabel transisi dari mesin M1 yang


sebelumnya dibahas.

Teori Komputasi | CSG3D3


Program Terjemahan Tabel Transisi
State := q0
Repeat
Baca symbol berikutnya dari string input
Case symbol of
letter : Input := letter
digit : Input := digit
End-of-string : Input := EOS
else
Exit to Error routine
end Case
State := Table[State, Input]
if State = Error then Exit to Error routine
Until State = Accept

Teori Komputasi | CSG3D3


Mengubah STD ke Tabel Transisi
Tambahkan sejumlah n baris state yang ada di STD (n
menyatakan jumlah state)
Tambahkan sejumlah m kolom dari semua simbol yang
mungkin muncul (m adalah jumlah simbol)
Tambahkan kolom EOS di posisi paling kanan tabel
Isi nilai di kolom EOS dengan Accept untuk baris dimana
accepted states berada, isi dengan Error untuk selainnya
Untuk setiap cell [S, X], di mana S anggota himpunan state dan
X anggota dari alphabet, isikan state hasil transisi dari state S
dengan menerima simbol X
Isikan Error untuk setiap cell yang belum terisi

Teori Komputasi | CSG3D3


Contoh Studi Kasus: Controller Pintu Otomatis
State diagram controller pintu otomatis (M. Sipser, 2012)

Tabel Transisi controller pintu otomatis (M. Sipser, 2012)


Input Signal

NEITHER FRONT REAR BOTH

CLOSED CLOSED OPEN CLOSED CLOSED


State
OPEN CLOSED OPEN OPEN OPEN

Teori Komputasi | CSG3D3


Dua state: OPEN dan CLOSE
Empat macam kondisi input, yaitu
FRONT : ada orang berdiri di depan pintu
REAR : ada orang berdiri di belakang pintu
BOTH : ada orang berdiri di depan dan belakang pintu
NEITHER : tidak ada orang yang berdiri di depan maupun belakang pintu
Contoh:
State awal controller: CLOSE.
Rangkaian input sinyal:
FRONT, REAR, NEITHER, FRONT, BOTH, NEITHER, REAR, NEITHER.
Rangkaian statenya?
CLOSED (start), OPEN, OPEN, CLOSED, OPEN, OPEN, CLOSED, CLOSED,
CLOSED.

Teori Komputasi | CSG3D3


Men-desain Finite Automata [1]
Menggunakan prinsip reader as automaton (source: M. Sipser,
2012)
1. Apa yang perlu diingat dari string yang akan dibaca?
finite state, finite memory
a. Contoh: Misalkan dengan = {0, 1}, akan dibangun FA yang
menerima semua string biner dengan jumlah kemunculan 1 ganjil.
b. Maka yang diingat adalah apakah 1 sudah terbaca dan sejauh ini
berjumlah genap/ganjil?
c. Hanya terdapat dua kemungkinan jumlah 1, yaitu (1) sejauh ini
genap atau (2) sejauh ini ganjil.
2. Kemudian, gambarkan satu state untuk setiap kemungkinan
3. Tuliskan transisi antar state

Teori Komputasi | CSG3D3


Men-desain Finite Automata [2]
Langkah 1 dan 2 (source: M. Sipser, 2012)

Langkah 3 (source: M. Sipser, 2012)

Teori Komputasi | CSG3D3


Men-desain Finite Automata [3]
Tentukan initial state. Jika sejauh ini jumlah kemunculan 1 adalah 0,
apakah disebut genap atau ganjil?
Karena genap, maka initial state accepted state
Tentukan accepted/final state
State yang menyimpan informasi bahwa jumlah simbol 1 yang muncul
adalah ganjil

Langkah 4 dan 5 (source: M. Sipser, 2012)

Teori Komputasi | CSG3D3


Men-desain Finite Automata [4]

Buatlah Finite Automata yang mampu mengenali semua string


biner yang mengandung substring 001.
Contoh string yang diterima: 0010, 1001, 001, dan 1111001111

Teori Komputasi | CSG3D3


1. Hal yang perlu diingat (terdapat empat kemungkinan):
a. belum melihat simbol apapun yang sesuai dari pola yang dicari
b. telah melihat sebuah simbol 0
c. telah melihat substring 00
d. telah melihat pola substring 001
2. Gambarkan state untuk setiap kemungkinan: q, q0, q00, dan
q001
3. Tuliskan transisi antar state
4. Tentukan initial state
5. Tentukan accepted/final state

Teori Komputasi | CSG3D3


Regular Language [1]

Sebuah bahasa disebut Regular Language jika ada beberapa


Finite Automata yang mampu mengenalinya (recognize).
Misal M = (Q, , , q0, F) dan w = w1w2...wn sebuah string, di
mana wi .
Maka M accept w jika sebuah sequence dari state
r0, r1, ..., rn Q ada dalam kondisi berikut.
1. r0 = q0;
2. (ri, wi+1) = ri+1, for i = 0, , n-1; dan
3. rn F
M mengenali bahasa A jika A = {w | M accept w}.

Teori Komputasi | CSG3D3


Regular Language [2]

Dari hirarki Chomsky yang dijelaskan sebelumnya, suatu


bahasa dikatakan Regular jika dapat dikenali oleh suatu Finite
Automata (dalam hal ini Deterministik Finite Automata).
Lihat juga Teorema 1.1 di hal 39 buku 1.
Contoh :
Dari contoh sebelumnya, karena L(M) bisa dikenali oleh
mesin FA M, maka L(M) = {w : w string biner genap atau
string biner yang diakhiri oleh 0} adalah Regular Language.

Teori Komputasi | CSG3D3


Diskusi

Apakah masing-masing language berikut ini termasuk Regular?


L(M2) = {w : w adalah string yang menyatakan bilangan real}
L(M3) = {w : w adalah string biner yang mengandung substring
111}
L(M4) = {w : w adalah string yang menyatakan ekspresi
aritmetik}. Contoh : (a + b), a + (b + a), dll.

Teori Komputasi | CSG3D3


Non-Regular Language
Pada saat kita mengenali pola string (a + b) atau a + (b + a),
maka tidak ada satupun FA yang bisa memodelkan jenis ini.
Alasan :
Pada saat mengenali string dengan pola umum xnyn, maka
kita harus mengingat berapa kali kemunculan simbol x,
sebelum mencocokkannya dengan jumlah kemunculan
simbol y. Dengan DFA, kita tidak punya tools untuk ini (yang
dapat mengingat jumlah kemunculan simbol).
Lihat referensi buku 1 hal 39-41.
Bahasa yang seperti ini kita katakan Non-Regular Language.

Teori Komputasi | CSG3D3


Latihan 2

a. Ubah diagram transisi dari Mesin Float (yang sebelumnya


dibangun) menjadi tabel transisi!
b. Buat juga program terjemahan tabel transisinya (Lexical
Analizer)!

Teori Komputasi | CSG3D3


Jawaban 2-a

Teori Komputasi | CSG3D3


Jawaban 2-b
State := q1
Repeat
Baca symbol berikutnya dari string input
Case symbol of
0..9 : Input := digit
,, E, +, - : Input := symbol
End-of-string : Input := EOS
else
Exit to Error routine
end Case
State := Table[State, Input]
if State = Error then Exit to Error routine
Until State = Accept

Teori Komputasi | CSG3D3


Latihan 3

Buatkan State Transition Diagram dan Tabel Transisinya untuk


kasus deteksi string berikut.
a. String biner yang bernilai ganjil
b. String biner yang bernilai genap
c. Kemunculan substring 111 pada string biner
d. Kemunculan substring 0101 pada string biner
e. Bagian leksik yang mengenali kemunculan string :=,
sekaligus Angka, dan sekaligus variabel

Teori Komputasi | CSG3D3


Jawaban 3-a: Mesin biner ganjil

Mesin terdiri dari dua state : q0 dan q1


Karakter input : 0, 1
Lihat bahwa accepted state selalu menerima karakter 1
Contoh string yang dikenali mesin ini antara lain: 100001,
1111111, 0000001, dan sebagainya

Teori Komputasi | CSG3D3


Jawaban 3-b: Mesin biner genap

Contoh string yang diterima mesin ini antara lain: 0, 00, 10,
1111110, 000000010, dan sebagainya

Teori Komputasi | CSG3D3


Jawaban 3-c: Mesin biner 111

Contoh string yang diterima mesin ini adalah 111, 1111110,


000001110, dan sebagainya

Teori Komputasi | CSG3D3


Jawaban 3-d: Mesin biner 0101

Contoh string yang diterima mesin ini adalah 0101, 000101,


000001010, 1111110101111, dan sebagainya

Teori Komputasi | CSG3D3


Jawaban 3-e: Mesin :=, angka, dan variabel

Teori Komputasi | CSG3D3


Latihan 4

Syarat yang harus dipenuhi oleh suatu diagram transisi adalah :


a. Terdapat busur yang menyatakan transisi antar state
b. Minimal 1 Initial State
c. Maximal 1 Final State
d. Fully Defined
e. Tidak ada jawaban benar

Teori Komputasi | CSG3D3


Tugas Membaca

Cari definisi Deterministic Finite Automata dan Non-


Deterministic Finite Automata!
Bandingkan antara keduanya dan cari perbedaannya!

Teori Komputasi | CSG3D3


THANK YOU

Anda mungkin juga menyukai