finite state automata

Download Report

Transcript finite state automata

TEORI BAHASA DAN OTOMATA
PROGRAM STUDI
TEKNIK INFORMATIKA
STIMIK AMIKOM PURWOKERTO
2012/2013
FINITE STATE AUTOMATA
Oleh:
BAGUS ADHI KUSUMA, ST
BAHASA FORMAL
dapat dipandang sebagai entitas
abstrak, yaitu sekumpulan string yang
berisi simbol-simbol alphabet
dapat juga dipandang sebagai entitasentitas abstrak yang dapat dikenali atau
dibangkitkan oleh mesin komputasi
Mesin komputasi yang
sesuai untuk kelas
bahasa ini
Finite (state)
Automata
FINITE AUTOMATA
mesin abstrak berupa sistem model
matematika dengan masukan dan keluaran
diskrit yang dapat mengenali bahasa paling
sederhana (bahasa reguler) dan dapat
diimplementasikan secara nyata.
FINITE AUTOMATA
 model matematika yang dapat menerima input dan
mengeluarkan output
 Memiliki state yang berhingga banyaknya dan dapat
berpindah dari satu state ke state lainnya berdasar input dan
fungsi transisi
 Tidak memiliki tempat penyimpanan/memory, hanya bisa
mengingat state terkini.
 Mekanisme kerja dapat diaplikasikan pada : elevator,
text editor, analisa leksikal, pencek parity.
FINITE STATE AUTOMATA
didefinisikan sebagai pasangan 5 tupel :
(Q, ∑, δ, S, F)
Q : himpunan hingga state
∑ : himpunan hingga simbol input (alfabet)
δ : fungsi transisi, menggambarkan transisi state FSA akibat
pembacaan simbol input.
(Fungsi transisi ini biasanya diberikan dalam bentuk tabel atau
representasi lainnya.)
S : state AWAL (Start)
F : himpunan state AKHIR (Final)
FINITE STATE DIAGRAM
Finite State Automata dapat dimodelkan dengan Finite State
Diagram (FSD) dapat juga disebut State Transition Diagram.
1. Lingkaran menyatakan state
Lingkaran diberi label sesuai dengan nama state
tersebut.
Adapun pembagian lingkaran adalah:
 Lingkaran bergaris tunggal berarti
state sementara
 Lingkaran bergaris ganda berarti state akhir
2. Anak Panah menyatakan transisi yang terjadi
 Label di anak panah menyatakan simbol yang
membuat transisi dari 1 state ke state lain
 1 anak panah diberi label start untuk
menyatakan awal mula transisi dilakukan
Contoh:
FSA untuk mengecek parity ganjil
Q ={Genap, Ganjil}
himpunan state
∑ ={0,1}
himpunan simbol input
δ = fungsi transisi,
S = Genap
Start
F = {Ganjil}
Final state, himpunan state AKHIR
(ingat untuk himpunan harus ditulis di dalam {} )
input : 1101
Ganjil
diterima mesin
input : 1100
Genap
ditolak mesin
input : 1011
Ganjil
diterima mesin
input : 11011
Genap
ditolak mesin
Q = {Genap, Ganjil}
δ = {0,1}
S = Genap
F = {Ganjil}
Tabel Transisi:
Maka:
δ (Genap,0) = Genap
δ (Genap,1) = Ganjil
δ (Ganjil,0) = Ganjil
δ (Ganjil,1) = Genap
Jenis Finite State Automata
1. Deterministic Finite Automata (DFA)
 otomata berhingga yang pasti (tetap/tertentu)
 dari suatu state ada tepat satu state berikutnya
untuk setiap simbol masukan yang diterima
2. Non-deterministic Finite Automata (NFA)
 otomata berhingga yang tidak pasti
 dari suatu state ada 0, 1 atau lebih state berikutnya
untuk setiap simbol masukan yang diterima
 Untuk NFA harus dicoba semua kemungkinan yang ada
sampai terdapat satu yang mencapai state akhir.
Deterministic Finite Automata (DFA)
DFA dapat menuntun recognizer(pengenal) lebih
cepat dibanding NDFA.
Contoh : pengujian parity ganjil
Contoh lain : Pengujian untuk menerima bit string dengan
banyaknya 0 genap, serta banyaknya 1 genap.
Pengujian untuk menerima bit string dengan banyaknya 0
genap, serta banyaknya 1 genap.
0011 : diterima.
10010 : ditolak, karena banyaknya 0 ganjil
Diagram transisi-nya:
DFA nya
Q = {q0 , q1 , q2 , q3 }
δ = {0,1}
S = q0
F = { q0}
Fungsi Transisi
011
δ ( q0,011)= δ ( q2,11) = δ ( q3,1)= q2
Ditolak
1010
δ ( q0,1010)= δ ( q1,010) = δ ( q3,10)= δ ( q2,0)= q0
Diterima
Non-deterministic Finite Automata (NFA)
 Perbedaan dengan DFA: fungsi transisi dapat memiliki 0
atau lebih fungsi transisi untuk setiap simbol inputan
 String diterima NFA bila terdapat suatu urutan transisi
berdasar input, dari state awal ke state akhir.
 Untuk NFA harus dicoba semua kemungkinan yang ada
sampai terdapat satu yang mencapai state akhir.
Contoh :
G = ({q0 , q1 , q2 , q3, q4 }, {0,1}, δ , q0 , { q2 , q4}}
Q = {q0 , q1 , q2 , q3, q4 }
δ = {0,1}
S = q0
F = { q2, q4 }
Fungsi Transisi
Contoh : string 01001
Diterima
Pasangan Status
Distinguishable & Indistinguishable
 Dua buah state dari FSA disebut indistinguishable (tidak
dapat dibedakan) apabila :
δ (q,w) Є F sedangkan δ (p,w) Є/ F dan
δ (q,w) /Є F sedangkan δ (p,w) Є F untuk semua w Є ∑ *
 Dua buah state dari FSA disebut distinguishable (dapat
dibedakan) bila terdapat w Є ∑* sedemikian hingga:
δ (q,w) Є F sedangkan δ (p,w) /
Є F dan
δ (q,w) Є
/ F sedangkan δ (p,w) Є F untuk semua w Є ∑ *
Prosedur Menentukan Pasangan Status
Indistinguishable
1. Hapus semua state yang tak dapat dicapai dari state
awal.
2. Catat semua pasangan state (p,q) yang
distinguishable, yaitu {(p,q) | p /Є F q Є F}
3. Untuk setiap pasangan (p,q) sisanya, untuk setiap a Є
∑, tentukan δ(p,a) dan δ(q,a)
Catatan : jumlah pasangan seluruhnya :
Contoh
1. Hapus state yang tidak tercapai -> tidak ada
2. Pasangan distinguishable (q0,q4), (q1,q4), (q2,q4),
(q3,q4).
3. Pasangan sisanya (q0,q1), (q0,q2), (q0,q3), (q1,q2)
(q1,q3) (q2,q3)
Prosedur Reduksi DFA
1. Tentukan pasangan status indistinguishable.
2. Gabungkan setiap group indistinguishable state ke dalam
satu state dengan relasi pembentukan group secara berantai
: Jika p dan q indistingishable dan jika q dan r
indistinguishable maka p dan r indistinguishable, dan p,q
serta r indistinguishable semua berada dalam satu group.
3. sesuaikan transisi dari dan ke state-state gabungan.
Contoh:
1. pasangan status indistinguishable (q1,q2), (q1,q3) dan
(q2,q3).
2. q1,q2,q3 ketiganya dapat digabung dalam satu state q123
3. Menyesuaikan transisi, sehingga DFA menjadi
EKUIVALENSI NFA-DFA
Algoritma :
1. Buat semua state yang merupakan subset dari state semula
2. Telusuri transisi state–state yang baru terbentuk, dari
diagram transisi.
3. Tentukan state awal : {q0}
4. Tentukan state akhir adalah state yang elemennya
mengandung state akhir.
5. Reduksi state yang tak tercapai oleh state awal.
6. Rename nama-nama state yang tersisa.
Contoh :
Ubahlah NFA berikut menjadi DFA
M= {{q0,q1}, {0,1}, δ, q0,{q1}}
Q = {q0 , q1}
δ = {0,1}
S = q0
F = { q1 }
Jawab :
tabel transisi
1. State yang akan dibentuk : {}, {q0} {q1},{q0,q1}
2. Telusuri state
3. State awal : {q0}
4. State akhir yang mengandung q1, yaitu {q1},{q0,q1}
Diagram transisi-nya:
•Diket: M={{q0,q1 ,q2}, {0,1}, , q0,{q1}} dengan tabel transisi
sbb. Ubahlah NFA berikut menjadi DFA

0
1
q0
{q1,q2}
{}
q1
{}
{q0,q1}
q2
{q1}
{q1}