05. FINITE STATE AUTOMATA
Konsep Automata Hingga atau Finite State Automata
¾ Finite State Automata (FSA) atau Finite Automata atau Automata
Hingga dapat dibayangkan sebagai sebuah Mesin yang terdiri dari
Kepala Baca (Read Head), dan Kotak Kontrol Stata Hingga.
¾ Mesin ini membaca sebuah pita (tape), satu persatu karakter, dari kiri ke kanan, seperti gambar berikut:
¾ Cara Kerja Konsep Finite State Automata
FSA bekerja dengan cara membaca tape satu demi satu karakter (dari
kiri ke kanan) menggunakan head baca yang dikendalikan oleh kotak
(mesin) kendali stata berhingga.
FSA selalu dalam kondisi yang disebut stata awal (initial state) pada saat FSA mulai membaca tape.
Perubahan atau transisi stata terjadi pada mesin ketika sebuah
karakter berikutnya pada pita selesai dibaca.
Beberapa stata dapat ditunjuk sebagai Stata Akhir/Stata Penerima.
Ketika head sampai pada akhir tape dan stata yang ditemui adalah
stata akhir, maka string pada tape dikatakan diterima FSA.
Dengan kata lain; bila pembacaan dimulai dari Stata Awal, berjalan
sesuai jalur hingga ke Stata Akhir, maka untai (deretan karakter) yang ada pada pita tersebut dikatakan diterima oleh FSA.
¾ Implementasi Finite Automata
Sistem dengan stata berhingga diterapkan pada:
Sistem elevator
Mesin pengeluar minuman kaleng (vending machine)
Pengatur lampu lalu lintas (traffic light regulator)
Sirkuit penyaklaran (switching) di komputer dan telekomunikasi R E A D N O T R E A D
READ HEAD
Protokol komunikasi (communication protocol)
Analisis Leksikal (Lexical analyzer)
jaringan saraf (Neuron nets)
sistem Komputer
¾ Kelengkapan Finite Automata atau Automata Hingga
FSA atau Automata Hingga memiliki kelengkapan sbb:
himpunan stata berhingga sebagai kendali
Simbol-simbol masukan yang dibolehkan/diijinkan
Stata mula/awal (initial state)
Himpunan stata akhir (set of final states)
Stata-stata yang menandai diterimanya masukan.
Fungsi transisi stata (state transition function)
Fungsi transisi ini memberikan/menyatakan semua stata berikutnya yang mungkin dituju akibat adanya transisi.
¾ Finite State Diagram (FSD)
Perilaku FSA dimodelkan dengan Finite State Diagram (FSD) atau
State Transition Diagram atau Diagram Automata Hingga atau
Diagram Transisi yang berbentuk Graf Berarah (dengan tanda anak panah) atau Digraph, dengan tambahan beberapa notasi khusus.
Jika terdapat busur mengarah dari Simpul P ke Simpul Q, dengan
label a, berarti bahwa akan terjadi transisi Stata P ke Stata Q bila terbaca karakter a pada pita (bila memperoleh input karakter a).
Anak panah berlabel "start" mengarah ke suatu Stata, menandakan bahwa Stata tersebut merupakan Stata Awal. Stata akhir atau stata penerima disajikan berupa lingkaran ganda.
Busur dari satu simpul ke simpul lain menandakan transisi stata.
Karakter samping atau diatas busur menandakan karakter yang menyebabkan terjadinya transisi stata.
Finite State Diagram terdiri dari:
1. Lingkaran menyatakan stata
Lingkaran diberi label sesuai dengan nama stata tersebut. Adapun pembagian lingkaran adalah:
2. Anak Panah menyatakan transisi yang terjadi
Label pada anak panah menyatakan simbol yang membuat transisi dari satu stata ke stata lain. Satu anak panah diberi label start untuk menyatakan awal mula transisi dilakukan.
Contoh :
Gambar diagram dibawah menggambarkan perilaku FA untuk penerimaan bilangan nyata (riil) yang paling tidak mempunyai satu digit setelah titik desimal adalah sebagai berikut:
Simpul-simpul (berbentuk lingkaran) pada FSD tersebut mengambarkan stata-stata dari FA, yaitu :
- Simpul S
- Simpul A
- Simpul B
¾ Diagram Automata Hingga tersebut menerima bilangan Real, yang
mempunyai paling sedikit satu digit sesudah titik desimal. Simpul dari
Digraph tersebut menyatakan stata dari Automata Hingga.
¾ Simpul dengan garis ganda menunjukkan state akhir.
¾ Digit adalah nilai 0,1,2,3,4,5,6,7,8,9
Uji Digraf 1
- Misalkan pita berisikan untaian karakter 112.75 (seratus dua belas
koma tujuh lima).
- Automata Hingga mulai bekerja dari Stata S, yakni Stata Awal, dan
masih tetap berada di Stata S ini saat bilangan di depan titik desimal dibaca.
- Ketika tanda titik desimal dibaca, berpindah ke Stata A, kemudian
pindah lagi ke Stata B ketika digit pertama sesudah titik desimal (dalam contoh ini adalah digit 7) dibaca.
- Automata Hingga kemudian membaca digit berikutnya, yakni 5, dan
masih tetap berada di Stata B. Sekarang akhir dari pembacaan Pita sudah tercapai.
S A B
Start
digit
- Penelusuran token berakhir di Simpul B, yang adalah Stata Penerima
atau Stata Akhir.
- Ini berarti Automata Hingga menerima bilangan desimal yang
diberikan, yakni 112.75, sebagai sebuah token. Catatan:
∗ Jika penelusuran Automata Hingga tidak sampai pada Stata B, saat
sesudah untai selesai dibaca seluruhnya, maka untai tersebut ditolak.
∗ Misalnya untai 112, untai ini termasuk kasus yang ditolak karena tidak
mencapai ke Stata Penerima (Stata Akhir).
∗ Penolakan dapat pula terjadi apabila Transisi Stata tidak dapat
dilakukan untuk suatu karakter yang dibaca. ∗ Misalnya di antara digit tersebut terdapat huruf.
∗ Sebagai contoh untai yang ditolak adalah sbb.: X15.25 ataupun
112.H75.
Uji Digraf 2
Contoh string : 9.8765
- Busur berlabel Start menunjukkan transisi ke state S atau awal transisi.
- Head membaca angka "9"
Digraf menunjukkan bahwa pada stata S ada busur yang kembali ke stata S bila membaca digit (berarti memiliki kesesuaian bahasa).
- pembacaan ke karakter berikutnya adalah "."
Digraf menunjukkan bahwa pada stata S ada busur yang menuju ke stata A bila membaca titik desimal (” . ”) (kondisi berada di state A)
- pembacaan karakter berikutnya = "8"
Digraf menunjukkan bahwa pada stata A ada busur yang menuju ke stata B bila membaca digit (kondisi berada di state B)
- pembacaan karakter berikutnya = "7"
Digraf menunjukkan bahwa pada stata B ada busur yang kembali ke stata B bila membaca digit (kondisi tetap berada di posisi B)
- pembacaan karakter berikutnya = "6"
Digraf menunjukkan bahwa pada stata B ada busur yang kembali ke stata B bila membaca digit (kondisi tetap berada di posisi B)
- pembacaan karakter berikutnya = "5"
- penyesuaian aturan kendali
Pada akhir pembacaan dilakukan penyesuaian apakah karakter terakhir berada pada stata akhir.
Bila kondisi "YA" maka string termasuk di dalam bahasa, dalam hal ini karakter "5" berada pada stata B yaitu stata dengan lingkaran bergaris ganda yang menandakan stata akhir, maka sesuai.
String 9.8765 termasuk di dalam bahasa Finite Automata pada FSD.
Contoh string : a
- Busur berlabel Start
- Menunjukkan transisi ke state S
- Head membaca nilai "a"
- Terdapat kondisi yang menunjukkan ketidaksesuaian dengan aturan
kendali pada state S yaitu tidak adanya busur yang menunjukkan persamaan simbol dengan simbol yang dibaca ("a")
- Ketidaksesuaian simbol
- Aturan kendali pada kondisi "TIDAK" menandakan string a tidak
termasuk di dalam bahasa FSD di atas.
Klasifikasi Finite Automata atau Automata Hingga
Finite automata dapat berupa:
- Deterministic Finite Automata (DFA)
Terdiri dari satu transisi dari suatu state pada 1 simbol masukan. - Non deterministic Finite Automata (NDFA)
Lebih dari satu transisi dari suatu state dimungkinkan pada simbol masukan yang sama.
Kedua FA tersebut mampu mengenali himpunan reguler secara presisi. Dengan demikian kedua FA itu dapat mengenali string-string yang ditunjukkan dengan ekspresi reguler secara tepat.
DFA dapat menuntun recognizer (pengenal) lebih cepat dibanding NDFA.
Lebih mudah membangun NDFA dibanding DFA untuk suatu bahasa, namun lebih mudah mengimplementasikan DFA dibanding NDFA.
¾ Automata Hingga yang digunakan dalam contoh di atas disebut
Deterministic Finite State Acceptor, atau Deterministic Finite State
Definisi Automata Hingga Deterministik
Sebuah Automata Hingga Deterministik (AHD) yang terdiri atas 5 tupel (K, VT, f, q0, Z) adalah:
(1) Himpunan Hingga K, berisi Stata Internal, atau disingkat Stata. (2) Himpunan Hingga VT, berisi simbol input.
(3) Sebuah fungsi f : K x VT Î K, merupakan fungsi next-State atau
fungsi Stata berikut. (4) Stata Awal q0 anggota K
(5) Himpunan Z, subset dari K, yang elemennya disebut Stata Akhir atau
Stata Penerima.
Berikut ini adalah contoh sebuah Automata Hingga Deterministik dengan 2 (dua) simbol input dan 3 (tiga) Stata.
VT = (a,b), himpunan simbol input
K = (q0, q1, q2), himpunan Stata
Z = (q0, q1), himpunan Stata penerima atau Stata akhir
Stata Awal adalah q0
Fungsi next-state f : K x VT Î K, didefinisikan sebagai tabel berikut :
f a b q0
q1
q2
q0
q0
q2
q1
q2
q2
Stata Awal q0. Stata Akhir disajikan dengan lingkaran ganda.
Bila f(qi, aj) = qk, maka terdapat busur/anak panah dari qi ke qk dengan
label a.
Perlu dicatat bahwa Stata Awal dapat merangkap sebagai simpul penerima.
Digraph pada contoh tersebut adalah sebagai berikut :
Misalkan w = a1, a2, ..., an adalah untai simbol input dari Automata M.
Kita dapatkan barisan Stata S0, S1, ..., Sn dengan S0 adalah Stata Awal,
dan Si = f(Si-1, ai) untuk i > 0.
Automata M dikatakan dapat menerima atau mengenal untai w tersebut,
jika Stata terakhir Sn merupakan Stata Penerima. Himpunan semua untai
Sebagai contoh, Automata di atas dapat menerima untai aabababa, aaa, baab
dan lain-lain untai lagi.
Sedangkan untai yang ditolak adalah untai yang mengandung 2 buah b berturutan sbb.:
Bbaaaaaa, aabaabb, babbaa, dan lain-lain.
Sebagai contoh lain dari Automata Hingga adalah sbb.
Automata berisikan dua Stata, yakni Stata S dan A. Stata S adalah Stata Awal dan Stata A merupakan Stata Akhir.
Di sini terlihat bahwa kita akan tetap berada di Stata A saat Automata membaca sesuatu karakter atau digit ataupun karakter khusus pada himpunan {#, @, $, _}.
Contoh lain yang lebih kompleks adalah pada gambar berikut.
Contoh ini juga berbentuk Diagram Stata Hingga yang menggambarkan Diagram Transisi untuk sebuah Bahasa yang terdiri dari Token <, <=, =, >=, >, ( ), (, ), +, -, *, /, :=, identifier, ; , keyword, konstanta, literal (yang diapit oleh apostrof).
Semua kemungkinan transisi dipandang dijalankan secara paralel.
Bila terdapat transisi yang menuju/sampai state akhir, berarti string masukan diterima otomata.
AUTOMATA HINGGA NON DETERMINISTIK (AHN)
AHN pada hakekatnya adalah sama dengan AHD, hanya saja pada AHN
dimungkinkan adanya transisi ke lebih dari satu Stata, dari sebuah Stata untuk pembacaan karakter input yang sama.Pengertian
AHN terdiri dari 5 tupel (K, VT, M, S, Z) dengan;
1. K adalah himpunan Stata internal yang tidak hampa 2. VT adalah himpunan simbol input
3. M adalah fungsi stata berikut
M : K x VT → subhimpunan dari K
4. S adalah himpunan Stata Awal yang merupakan subhimpunan dari K 5. Z adalah himpunan Stata Akhir atau Stata penerima yang merupakan
subhimpunan dari K
Fungsi Stata berikut M dapat ditulis sbb.: M(q, t) = {p1, p2, ..., pn}
berarti bahwa dimungkinkan terjadi transisi dari Stata q menjadi Stata p1,
atau Stata p2, atau.... Stata pn, apabila sebuah karakter t anggota VT dibaca.
Fungsi Stata-berikut dari AHN dapat diperluas sbb.:
1. M(q,∧) = {q}, untuk setiap q anggota K, ∧ adalah untai hampa.
2. M(q,tT) = ∪ M(pi,T), bila t karakter anggota VT, dan T untai anggota VT*, serta {pi} adalah sama dengan M(q,t)
3. M({q1,q2,...qn},X) = ∪ M(q1,X), untuk X untai anggota VT*
Keterangan;
1. Definisi pertama menerangkan bahwa jika input merupakan untai hampa, maka AHN harus tetap pada Stata yang sama.
2. Definisi kedua dapat ditulis
M(q,tT) = M(p1,T) ∪ M(p2,T) ∪ ... ∪ M(pn,T) dengan
M(q,t) adalah {p1,p2,...,pn}
Di sini M(q,tT) merupakan suatu himpunan Stata.
3. Definisi ketiga menjelaskan suatu pemetaan 2k x VT* → subhimpunan dari K
Suatu untai X dikatakan diterima oleh sebuah AHN, jika sedikitnya ada
satu Stata penerima terkandung dalam M(q0,X). q0 adalah Stata Awal
AHN.
AHN tersebut adalah:
F = ({q0,q1,q2,q3,q4},{a,b,c},M,q0,{q4})
Digraf untuk AHN ini adalah sbb.:
Fungsi M dapat didefinisikan dengan tabel sbb.:
simbol input
Sebagai contoh dengan input untai aca, nilai dari M(q0,aca) dapat
LATIHAN
1. Misalkan a dan b adalah simbol input. Buatlah sebuah AHD (Automata Hingga Deterministik) M yang hanya menerima untaian karakter yang mengandung sejumlah genap a.
(Contohnya untai aababab atau aa dapat diterima, sedangkan untai ababa atau abbb tidak diterima).
2. Buatlah sebuah Automata Hingga Deterministik dengan simbol input a,b, yang hanya dapat menerima untai karakter yang mengandung sejumlah b yang habis dibagi 3.
(Petunjuk: dibutuhkan 3 Stata)
3. Buatlah sebuah Automata Hingga Deterministik M dengan simbol input a dan b, yang hanya dapat menerima untai karakter yang mengandung sejumlah genap a dan sejumlah b yang habis dibagi 3.
4. Misalkan M1(K1, VT, Z1, q0, f1) dan M2(K2, VT, Z2, s0, f2) adalah dua
buah Automata Hingga Deterministik dengan himpunan simbol input
VT yang sama. Misalkan L(M1) dan L(M2) berturut-turut adalah
himpunan untai yang dapat diterima oleh M1 dan M2. Buatlah sebuah
Automata Hingga Deterministik N dengan himpunan simbol input VT
yang dapat menerima L(M1) IRISAN L(M2), yakni untai yang dapat diterima baik oleh M1 dan M2.
5. Sebuah Automata Hingga Non-deterministik (F) dapat dinyatakan
sebagai berikut:
Fungsi M dapat didefinisikan dengan tabel sbb.:
a) Gambarkan Digraf dari Automata Hingga tersebut.
b) Selidiki apakah untai karakter aabbab diterima atau tidak.
6. Cobalah anda implementasikan scanner untuk suatu bahasa yang anda
rancang Sendiri.
7. Sebuah Automata Hingga Non-deterministik (F) dapat dinyatakan
sebagai berikut
F = ({q0,q1,q2,q3,q4}, {a,b,c}, M, q0, {q4})
Fungsi M dapat didefinisikan dengan tabel sbb.:
simbol input Stata
a b c
q0
q1
q2
q3
q4
{q0,q1}
{q3}
{q2}
{q3}
φ
{q0,q2}
{q1}
{q2,q4}
{q1,q4}
φ
{q0,q3}
{q1}
{q2}
{q3,q4}
φ