TEORI BAHASA DAN OTOMATA [TBO]
NFA 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
Gambar 1 Mesin NFA dengan -move
Penjelasan Gambar 1 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 Untuk NFA -Move -closure adalah himpunan state-state yang dapat dicapai dari suatu state tanpa membaca input. Misal: -closure (q0)=himpunan-himpunan statestate 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.
Perhatikan Gambar 1 -closure untuk state lainnya bisa dilihat sebagai berikut: -closure (q1) = q1,q2 -closure (q2) = q2 -closure (q3) = q3 -closure (q4) = q1,q2,q4
Gambar 2 Mesin NFA dengan -move
Perhatikan Gambar 2 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.
Ekivalensi NFA -move ke NFA tanpa -move 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.
Perhatikan Gambar 3 dan 4 Gambar 3 Gambar 4
Penjelasan.. 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.
Tahapan Perubahan 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))
Tahapan Perubahan Lanjt.. 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.
Tahapan 1 Tabel transisi dari NFA -move pada gambar 3 δ a b q0 q1 {q2} {q3} q2 q3
Tahapan 2 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
Tahapan 3 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!
Tahapan 3 Lanjt.. (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
Tahapan 3 Lanjt (q1,a) (q1,b) = -closure ( ( -closure(q1),a)) = -closure ( ( q1,a)) = -closure (q2) = q2 = -closure ( ( -closure(q1),b)) = -closure ( ( q1,b)) = -closure (q3) = q3
Tahapan 3 Lanjt. (q2,a) (q2,b) = -closure ( ( -closure(q2),a)) = -closure ( ( q2,a)) = -closure ( ) = = -closure ( ( -closure(q2),b)) = -closure ( ( q2,b)) = -closure ( ) =
Tahapan 3 Lanjt.. (q3,a) = -closure ( ( -closure(q3),a)) = -closure ( ( q3,a)) = -closure ( ) = (q3,b) = -closure ( ( -closure(q3),b)) = -closure ( ( q3,b)) = -closure ( ) =
Tahapan 4 Bisa dilihat table transisi dan diagram untuk NFA tanpa - move dari hasil tahapan sebelumnya : δ a b q0 {q2} {q3} q1 {q2} {q3} q2 q3
Tahapan 5 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.
PENGGABUNGAN 2 FSA 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
OPERASI UNION 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 statestate akhir M1 dan state-state akhir M2 menggunakan transisi
HASIL UNION qs dan qf adalah state awal dan state final mesin baru FSA
OPERASI KONKATENASI 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.
HASIL KONKATENASI q A0 dan q B1 adalah state awal dan state final mesin baru FSA
ALUR PENGEMBANGAN FSA (1) FSA hasil operasi gabungan atau konkatenasi adalah sebuah NFA -move. Untuk selanjutnya harus diubah menjadi NFA tanpa -move.
ALUR PENGEMBANGAN FSA (2)