Non-deterministic Finite Automata Dengan -Move
Terdapat jenis otomata baru yang disebut NFA dengan -move ( disini bisa dianggap sebagai empty). Pada NFA dengan -move (transisi ), diperbolehkan merubah state tanpa membaca input. Disebut dengan transisi karena tidak bergantung pada suatu input ketika melakukan transisi
Dari q0 tanpa membaca input dapat berpindah ke q1 Dari q1 tanpa membaca input dapat berpindah ke q2 Dari q4 tanpa membaca input dapat berpindah ke q1 Salah satu kegunaan dari transisi ini adalah memudahkan dalam mengkombinasikan finite state automata.
-closure adalah himpunan statestate yang dapat dicapai dari suatu state tanpa membaca input. Misal: -closure (q0)=himpunanhimpunan state-state yang dapat dicapai dari state q0 tanpa membaca input. Maka dengan melihat gambar 1 closure (q0)=q0,q1,q2, artinya dari state q0 tanpa membaca input dapat mencapai state q0, q1, dan q2.
-closure untuk state lainnya bisa dilihat sebagai berikut: -closure (q1) = q1,q2 -closure (q2) = q2 -closure (q3) = q3 -closure (q4) = q1,q2,q4
Dari gambar 2 diketahui -closure untuk setiap state adalah: -closure (q0) = q0,q1,q3 -closure (q1) = q1,q3 -closure (q2) = q2,q4 -closure (q3) = q3 -closure (q4) = q4 Perhatikan: Pada suatu state yang tidak memiliki transisi , maka closurenya adalah state itu sendiri.
Dari sebuah NFA dengan -move dapat diperoleh NFA tanpa -move yang ekivalen. (Dalam materi ini sebutan NFA saja mengacu pada NFA tanpa -move).
Contoh: Bila terdapat NFA -move, seperti pada gambar 3. Gambar 4 adalah NFA tanpa -move yang ekivalen dengan NFA -move pada gambar 3.
Gambar 3 Gambar 4
Perhatikan bahwa NFA -move semula menerima bahasa yang membuat string ’b’, selanjutnya bisa dilihat bahwa NFA tanpa move pada gambar 4 juga mampu menerima bahasa yang memuat string ‘b’. Maka dapat dinyatakan bahwa kedua mesin tersebut ekivalen, karena mampu menerima bahasa yang sama. Tentu saja bila gambarnya tidak sesederhana itu, perlu dilakukan beberapa tahapan untuk mendapatkan perubahan dari NFA -move ke NFA tanpa -move.
1. Buat table transisi Non-deterministic Finite Automata dengan -move semula 2. Tentukan -closure untuk setiap state 3. Carilah setiap fungsi transisi hasil perubahan dari NFA -move ke NFA tanpa -move (sebut saja sebagai ’), dimana ’ didapatkan dengan rumus: ’(state, input) = -closure ((-closure(state), input))
4. Berdasarkan hasil no.(3), buatlah table transisi dan diagram transisi dari NFA tanpa -move yang ekivalen dengan NFA -move tersebut. 5. Menentukan state-state akhir untuk NFA tanpa -move tersebut, yaitu state-state akhir semula ditambah dengan state-state yang closure –nya menuju ke salah satu dari state akhir semula. Dalam bahasa formalnya: F’ = F q(-closure (q) F) Misal: bila semula F= q0, q3, _closure q1, = q0, q2, maka F’=q0, q1, q3.
Tabel transisi dari NFA -move pada gambar 3 δ q0 q1 q2 q3
a {q2}
b {q3}
Dari NFA -move pada gambar 3 tentukan -closure untuk setiap state (-closure bisa juga disingkat sebagai -cl): -cl (q0) = q0,q1 -cl (q1) = q1 -cl (q2) = q2 -cl (q3) = q3
Cari ’ dengan memanfaatkan table transisi dan -closure yang diperoleh sebelumnya, sebagai berikut: ’(q0,a), ’(q0,b), ’(q1,a), ’(q1,b), ’(q2,a), ’(q2,b), ’(q3,a), dan ’(q3,b) Perhatikan penjabaran pada slide selanjutnya !
’(q0,a) = = = =
-closure ((-closure(q0),a)) -closure ((q0,q1,a)) -closure (q2) q2
’(q0,b) = = = =
-closure ((-closure(q0),b)) -closure ((q0,q1,b)) -closure (q3) q3
’(q1,a) = = = =
-closure ((-closure(q1),a)) -closure ((q1,a)) -closure (q2) q2
’(q1,b) = = = =
-closure ((-closure(q1),b)) -closure ((q1,b)) -closure (q3) q3
’(q2,a) = = = =
-closure ((-closure(q2),a)) -closure ((q2,a)) -closure ()
’(q2,b) = = = =
-closure ((-closure(q2),b)) -closure ((q2,b)) -closure ()
’(q3,a) = = = =
-closure ((-closure(q3),a)) -closure ((q3,a)) -closure ()
’(q3,b) = = = =
-closure ((-closure(q3),b)) -closure ((q3,b)) -closure ()
Bisa dilihat table transisi dan diagram untuk NFA tanpa -move dari hasil diatas:
δ q0 q1 q2 q3
a {q2} {q2}
b {q3} {q3}
Akhirnya ditentukan himpunan state akhir untuk NFA tanpa -move ini. Himpunan state akhir semula adalah q3. Karena tidak ada state lain yang -closure-nya memuat q3, maka himpunan state akhir sekarang tetap q3.
Perhatikan: karena disini mesin NFA maka state tidak perlu dimunculkan dalam diagram transisi.
Pada 2 mesin FSA dapat dilakukan penggabungan, disebut union serta konkatenasi. Misalkan terdapat dua mesin NFA, M1 dan M2
Gambar 5: M1
Gambar 6: M2
Diketahui L(M1) adalah bahasa yang diterima oleh M1 dan L(M2) adalah bahasa yang diterima oleh M2. Dilakukan operasi union berikut: L(M3) = L(M1) L(M2) atau dengan notasi lain: L(M3) = L(M1) + L(M2)
Bisa dibuat mesin M3 yang menerima bahasa L(M3) dengan cara: Tambahkan state awal untuk M3, hubungkan dengan state awal M1 dan state awal M2 menggunakan transisi Tambahkan state akhir untuk M3, hubungkan dengan state-state akhir M1 dan state-state akhir M2 menggunakan transisi
qs dan qf adalah state awal dan state final mesin baru FSA
Diketahui L(M1) adalah bahasa yang diterima oleh M1 dan L(M2) adalah bahasa yang diterima oleh M2. Dilakukan operasi konkatenasi berikut: L(M4) = L(M1).L(M2)
Bisa dibuat mesin M4 yang menerima bahasa L(M4) dengan cara: State awal M1 menjadi state awal M4 State-state akhir M2 menjadi state akhir M4 Hubungan state-state akhir M1 dengan state awal M2 menggunakan transisi .
qA0 dan qB1 adalah state awal dan state final mesin baru FSA
FSA hasil operasi gabungan atau konkatenasi adalah sebuah NFA -move. Untuk selanjutnya harus diubah menjadi NFA tanpa -move.