Mesin model Non-Deterministic Finite Automata (NFA) sangat mirip dengan DFA, hanya berbeda pada fungsi transisinya yaitu dapat memiliki 0, atau lebih fungsi transisi. Pada gambar diagram transisi/state terlihat untuk input yang sama busur panah keluar dari suatu state bisa saja tidak ada, bisa hanya satu, bisa ada dua atau lebih.
Contoh: {Q = ({q0, q1, q2,
q3, q4}, Σ = {0,1}, S= q0 , F = { q2
, q4}}, dengan tabel fungsi transisi sebagai berikut.
d
|
0
|
1
|
q0
|
{ q0,q3}
|
{q0,q1}
|
q1
|
{e}
|
{q2}
|
q2
|
{q2}
|
{q2}
|
q3
|
{q4}
|
{e}
|
q4
|
{q4}
|
{q4}
|
Non-Deterministic Finite Automata |
Perhatikan bahwa dalam table transisi, state-state
dituliskan dalam kurung kurawal, yang berarti bahwa hasil transisinya/state
yang dituju adalah himpunan state-state.
Pada gambar 3.1 terlihat bahwa dari state q0
terdapat dua busur keluar yang berlabel input “0”, yaitu kembali ke q0
dan satu busur lagi menuju ke state q3. Demikian pula apabila
mendapat input “1”, terdapat dua busur keluar yang berlabel input “1”, yaitu
kembali ke q0 dan satu busur lagi menuju ke state q1.
Pada state q1 hanya ada satu busur keluar yaitu yang berlabel input
“1”, menuju ke state q2, sedangkan
yang berlabel input “0” tidak ada. Pada state q3 tidak
terdapat input berlabel “1”, hanya input berlabel “0” yang menuju ke sate q4.
Secara formula dapat dituliskan:
1.
d(q0
,0) = {q0, q3}, baca: transisi state q0
mendapat input “0”, menuju ke state q0, dan state q3.
2.
d(q0
,1) = {q0, q1}, baca: transisi state q0
mendapat input “1”, menuju ke state q0, dan state q1.
3.
d(q1
,1) = {q2}, baca: transisi state q1 mendapat input “1”,
menuju ke state q2.
4.
d(q3
,0) = {q4}, baca: transisi state q3 mendapat input “0”,
menuju ke state q4.
5.
d(q2
,0) = d(q2, 1) ={q2},
baca: transisi state q2 mendapat input “0”, maupun mendapat input
“1” menuju ke state q2.
6.
d(q4
,0) = d(q4 ,1) ={q4},
baca: transisi state q4 mendapat input “0”, maupun mendapat input
“1” menuju ke state q4.
Suatu string diterima NFA bila terdapat suatu urutan
transisi berdasar input, dari state awal ke state akhir. Suatu transisi
berdasarkan input yang tidak berakhir pada state akhir dapat dikatakan bahwa
input yang dimaksud tidak diterima oleh mesin NFA tersebut. Untuk mengetahui
apakah suatu string diterima atau tidak harus dilakukan percobaan untuk semua
kemungkinan.
Contoh : string 01001
Contoh String |
Ekivalensi Antar Deterministic Finite Automata
Misalkan terdapat dua buah FSA, M1 dan M2, yang
masing-masing menerima bahasa L(M1) untuk mesin M1 dan L(M2) untuk mesin M2,
maka disebut ekuivalen apabila kedua FSA tersebut menerima bahasa yang sama
yaitu L(M1) = L(M2)
Contoh
: FSA yang menerima bahasa {an | n³0 }
Gambar FSA |
Reduksi Jumlah State
pada FSA
Untuk suatu bahasa regular, kemungkinan ada banyak mesin
FSA yang dapat menerima bahasa tersebut, perbedaannya hanyalah pada jumlah
state yang dimiliki oleh FSA-FSA yang saling ekivalen tersebut. Suatu FSA akan
lebih praktis apabila memiliki jumlah state yang lebih sedikit.
Dua buah state dari FSA disebut indistinguishable (tidak dapat dibedakan) apabila :
d(q,w)ÎF sedangkan d(p,w) Î F dan
d(q,w) ÏF sedangkan d(p,w) ÏF untuk semua w Î S*
Dua buah state dari FSA disebut distinguishable (dapat dibedakan) bila terdapat w Î S* sedemikian
hingga:
d(q,w)ÎF sedangkan d(p,w)ÏF dan
Salah satu cara untuk mereduksi/mengurangi jumlah state dari suatu
mesin FSA adalah dengan mencari kombinasi state yang distinguishable. 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 semua state lakukan
pencarian state yang distinguishable
dengan aturan apabila d(p,a) = pa
dan d(q,a) = qa, jika pasangan (pa,qa)
sudah tercatat sebagai pasangan yang distinguishable,
maka pasangan (p,q) tersebut juga dimasukkan sebagai distinguishable.
4.
Untuk setiap pasangan (p,q)
yang tidak termasuk dalam distinguishable,
maka pasangan tersebut adalah pasangan state yang indistinguishable.
5.
Beberapa state yang saling indistinguishable dapat digabungkan ke
dalam satu state.
6.
Sesuaikan transisi dari dan ke
state-state gabungan tersebut
Contoh: Lakukan pengurangan/reduksi state dari gambar 3.4 di bawah
ini
Mesin DFA 5 state |
1.
Hapus state yang tidak tercapai
dari state awal à semua
dapat dicapai
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)
pasangan
|
state 1
|
state 2
|
Hasil
|
||
0
|
1
|
0
|
1
|
||
(q0,q1)
|
q1
|
q3
|
q2
|
q4
|
distinguishable
|
(q0,q2)
|
q1
|
q3
|
q1
|
q4
|
distinguishable
|
(q1,q2)
|
q2
|
q4
|
q3
|
q4
|
indistinguishable
|
(q0,q3)
|
q1
|
q3
|
q2
|
q4
|
distinguishable
|
(q1,q3)
|
q2
|
q4
|
q2
|
q4
|
indistinguishable
|
(q2,q3)
|
q1
|
q4
|
q2
|
q4
|
indistinguishable
|
Perhatikan pasangan state ketika mendapat input 1, untuk pasangan (q1,q2),
(q1,q3), (q2,q3) menghasilkan state
hanya q4, sehingga pasangan-pasangan ini disebut indistinguishable,
dan dalam penggambaran dapat disatukan.
Catatan : jumlah pasangan seluruhnya :
Prosedur Reduksi DFA
Tentukan
pasangan status indistinguishable.
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.
sesuaikan
transisi dari dan ke state-state gabungan.
Contoh
pasangan
status indistinguishable (q1,q2), (q1,q3) dan (q2,q3).
q1,q2,q3
ketiganya dapat digabung dalam satu state q123
Menyesuaikan
transisi, sehingga DFA menjadi
DFA |
0 komentar:
Post a Comment