Finite Automata adalah mesin abstrak berupa sistem model matematika dengan
masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler)
dan dapat diimplementasikan secara nyata. Sedangkan Finite State Automata (FSA) adalah
model matematika dari sistem dengan masukan dan keluaran berupa nilai diskrit.
Automata memiliki suatu alur khusus dan unik untuk setiap kata yang akan dikenali
atau diterima. Jika suatu alur berakhir pada suatu state yang disebut sebagai Final State atau
Accepting State, maka kata yang ditelusuri tersebut dikatakan dikenali oleh automata.
Komponen dasar yang dimiliki oleh Finite Automata adalah Alphabet yaitu
Himpunan symbol/ lambang yang dikenali.
Himpunan Alfabet diwakili dengan ∑ jika dan hanya jika ∑ merupakan himpunan symbol
yang bersifat tetap dan bukan merupakan himpunan kosong.
Contoh umum dari Alphabet adalah 26 (dua puluh enam) huruf yang dikenali dalam bahasa
Indonesia ataupun rangkaian karakter ASCII, yang merupakan rangkaian standar dari kode-
kode komputer. Sedangkan sebuah word, yang disebutkan juga string atau sentence adalah
rangkaian satu atau lebih alphabet yang telah dinyatakan sebelumnya. Rangkaian word itu
sendiri disebut bahasa (language), yang diwakili dengan L.
Berikut ini adalah contoh Alphabet beserta words yang dapat dibentuknya :
∑ = {a, b}, maka contoh words yang dapat dibentuknya yaitu “aab”, “abab”, “a”,
“bbbbbb”, dan lain- lain.
∑ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, maka contoh words yang dapat dibentuknya yaitu
“26498098”, “100103”, “0000”, dan lain- lain.
Lebih lanjut, Concatenation adalah proses menggabungkan dua buah words menjadi satu
word baru, yaitu terdiri dari rangkaian alphabet dari word pertama dan disambung dengan
rangkaian alphabet dari word ke-dua.
∑ = {a, b}, words = “aaa” dan y = “bbb”dimana setiap a merupakan anggota
himpunan ∑, a ∈ ∑ dan setiap b anggota himpunan ∑, b ∈ ∑. Maka, gabungan atau
concatenation x dan y, dinyatakan dengan x,y = “aaabbb”.
Setelah memiliki pemahaman diatas, maka definisi dari sebuah Finite Automata dapat
ditetapkan sebagai suatu model Matematis dari sebuah mesin yang menerima suatu rangkaian
words tertentu yang mengandung alphabet ∑.
Setiap FSA memiliki:
M : Nama Mesin.
Q : Himpunan hingga state/ kedudukan.
∑ : Himpunan hingga simbol input/ masukan (alfabet).
δ : Fungsi transisi, berbentuk δ (qi, a) = qk
S : State AWAL (Start)/ kedudukan awal, S > Q.
F : Himpunan state AKHIR (Final), F > Q.
δ = fungsi transisi,
S = Gnp (Start).
0110 = Karena state akhirnya adalah finalnya state, dalam konteks ini adalah Gjl.
1011 = Diterima.
0100 = Diterima.
11110 = Diterima.
011 = Ditolak (karenan state akhirnya tidak di final state, Gnp).
11011 = Ditolak.
Secara visual, suatu bagan Finite Automata diwakili dengan suatu graf berarah dengan
rumus G= < V , E > ; dimana V = S dan E = { | s,t S, a ∑^(s,a) = t }. “V”
merupakan himpunan verteks pada graf, “E” merupakan himpunan sisi pada graf yang pada
dasarnya merupakan fungsi- fungsi transisi antara state yang satu ke state yang lain (state “s”
dan “t”, yang masing- masingnya merupakan anggota dari “S”). Selain itu, setiap sisi graf
diberi nama dengan alphabet penghubung (alphabet “a”) antara dua verteks yang
dihubungkannya.
Pada umumnya dalam suatu bagan Finite Automata terdapat minimal satu state akhir.
Verteks graf yang menunjukkan suatu state, tetapi bukan state akhir, dinyatakan dengan
lingkaran, sedangkan yang menunjukkan suatu state akhir dinyatakan dengan lingkaran
ganda, sisi graf yang menunjukkan fungsi transisi dinyatakan dengan tanda panah.
Jadi suatu state dapat menjadi asal dan tujuan dalam suatu fungsi transisi yang melibatkan
dua buah state. Ditinjau dari sudut pandang state asal, maka setiap state (kecuali state akhir)
pasti menjadi state asal dan memiliki fungsi transisi ke state yang lain, sedangkan state akhir
dapat tidak memiliki fungsi transisi state ke yang lain. Ditinjau dari sudut pandang state
tujuan, maka setiap state (kecuali state awal) pasti menjadi pasti state tujuan.
Transisi state FSA akibat pembacaan sebuah simbol bersifat tak tentu.
Jenis FSA:
Dengan kata lain secara formal bila M adalah sebuah bahasa FSA,
M = (Q, _, d, S, F) menerima bahasa yang disebut L(M) yang
merupakan himpunan {x | d (S,x) di dalam F}.
Contoh DFA:
DFA :
∑= {a, b}
S = q0
F = {q0, q1}
Kalimat yang diterima oleh DFA : a, b, aa, ab, ba, aba, bab, abab, baba.
DFA ini menerima semua kalimat yang tersusun dari simbol a dan b yang tidak mengandung
substring bb.
----------------------------------------------------------------------------------------------------------------
DFA :
Pada suatu NFA, Suatu state dapat memiliki tujuan ke beberapa state yang berbeda
dengan alphabet penghubung yang sama. Akan tetapi, hal ini tidak diperbolehkan pada suatu
DFA. Untuk menyederhanakan suatu NFA menjadi suatu DFA dipergunakan Tabel Transisi
yang memiliki kolom berupa variasi alphabet yang diterima dan baris berupa nama- nama
state asal. Sedangkan titik temu antara suatu kolom dan baris diisi dengan nama- nama state
tujuan dari state asal yang tertera pada bagian kolom.
Berikut ini adalah Contoh suatu DFA yang akan mengenali suatu bilangan Cacah :
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
S = {S0, S1, S2}
S0 = S0
F = {S1, S2}
Bagan pada Gambar di atas sudah merupakan bagan DFA karena tidak ada state asal yang
memiliki tujuan ke lebih dari satu state tujuan dengan alphabet penghubungan yang sama.
Pada NFA terdapat kemungkinan lebih dari 1 transisi yang keluar dari sebuah state
dengan sumber input yang sama.
Gambar berikut ini adalah Contoh NFA yang menginformasikan NFA yang menerima aa* |
bb*:
a B
0 1,3 - -
1 - 2 -
2 - 2 -
3 - - 4
4 - - 4
Bagan pada gambar itu sudah merupakan bagan NFA, karena ada state asal yang memiliki
tujuan ke lebih dari satu state tujuan dengan alphabet penghubungan yang sama ( ).
Pada gambar diatas state 0 sebagai start dan state 2 serta state 4 adalah final state. Disini
digambarkan NFA menerima suatu input berupa aa* | bb*. Suatu string “aaa” akan diterima
dengan melalui state 0, 3, 4, 4, 4 dan 4. NFA mempunyai kelebihan dapat melakukan
backtracking, namun aksesnya lebih lambat dibandingkan dengan DFA (Deterministic Finite
Automaton).
NFA
Contoh NFA:
Kalimat yang diterima NFA di atas : aa, bb, cc, aaa, abb, bcc, cbb
Kalimat yang tidak diterima NFA di atas : a, b, c, ab, ba, ac, bc
Sistem elevator.
Mesin pengeluar minuman kaleng (vending machine).
Pengatur lampu lalu lintas (traffic light regulator).
Sirkuit penyaklaran (switching) di komputer dan telekomunikasi.
Protokol komunikasi (communication protocol).
Analisis Leksikal (Lexical analyzer).
Neuron nets.
Sistem Komputer.
Finite State Automata dapat dimodelkan dengan Finite State Diagram (FSD) dapat juga
disebut State Transition Diagram.
menerimanya.
Bahasa-bahasa yang diterima oleh FSA bisa dinyatakan secara sederhana dengan
Ekspresi regular memberikan suatu pola (pattern) atau template untuk untai/string dari
suatu bahasa.
Banyak masalah pada perangkat lunak yang bisa disederhanakan dengan melakukan
pengubahan notasi ekspresi regular ke dalam implementasi komputer dari FSA yang
bersangkutan.
Contoh : Finite State Automata untuk mengenal bilangan bulat /integer tidak bertanda
0..9
0..9 q2
q0
Ekspresi Regularnya adalah : misal 0..9 disimbolkan sebagai digit, maka ERnya adalah :
(digit)(digit)*
1. * : berarti bisa tidak muncul, bisa juga muncul berhingga kali (0-n)
+
2. : berarti minimal muncul satu kali (1-n)
4. . : berarti konkatenasi, biasanya tanpa ditulis titiknya, misal ab sama dengan a.b
Contoh string yang bisa dibangkitkan abcc, acc, abbcc, abbbcc, dst. (b bisa tidak
2. ER : 010*
Contoh string yang bisa dibangkitkan 01,010, 0100,01000, dst. (0 bisa tidak muncul
3. ER : a+d
Contoh string yang bisa dibangkitkan ad,aad, aaad,aaaad dst. (a minimal muncul satu
kali)
4. ER : a* U b*
5. ER : 01*+0
Untuk setiap ER ada satu NFA dengan transisi ε (NFA ε-move) yang ekivalen.
Sementara untuk setiap DFA ada satu ER dari bahasa yang diterima oleh DFA.
ER
Kesimpulan :
Klasifikasi FSA.
Kedua Finite Automata tersebut mampu mengenali himpunan reguler secara presis.
Dengan demikian kedua Finite Automata itu dapat mengenali string-string yang ditunjukkan
dengan ekspresi reguler secara tepat.
Namun demikian, DFA berukuran lebih besar dibanding NDFA yang ekivalen
dengannya. Lebih mudah membangun NDFA dibanding DFA untuk suatu bahasa, namun
lebih mudah mengimplementasikan DFA dibanding NDFA.