Teori Bahasa dan Otomata 2 sks Ekuivalensi DFANDFA
Teori Bahasa dan Otomata 2 sks Ekuivalensi DFA-NDFA dengan ɛ-move
Cakupan Bahasan n n n NDFA dengan ɛ-move Algoritma ɛ-move ke NDFA Kenapa harus ekuivalen? Persamaan VS Perbedaan Langkah 2 penyamaan DFA-NDFA Contoh permasalahan
Non DFA dengan - move (transisi ) n n Dapat merubah state satu ke state lain tanpa membaca input Tidak bergantung pada suatu input ketika melakukan transisi q 0 q 3 b b q 1 a q 4 q 2 dari q 0 tanpa membaca input dapat berpindah ke q 1 dan q 3 dari q 4 tanpa membaca input dapat berpindah ke q 2
-closure untuk NFA -move n n Himpunan state yang dapat dicapai dari sebuah state tanpa membaca input. State yg tidak memiliki transisi , maka -closurenya adalah state itu sendiri Dari diagram NDFA dengan -move maka dihasilkan: n -closure (q 0)= q 0, q 1, q 2 n -closure (q 1) = q 1, q 2 n -closure (q 2) = q 2 n -closure (q 3) = q 3 n -closure (q 4) = q 1, q 2, q 4 q 0 a q 3 b b q 1 q 4 q 2
Algoritma ɛ-move ke NDFA n n n Buat tabel transisi NFA dengan -move awal Tentukan -closure untuk setiap state Carilah setiap fungsi transisi hasil perubahan dari NFA dengan move ke NFA tanpa -move (kita sebut saja sebagai ’) dimana ’ didapatkan dengan rumus: ’(state, input) = _closure ( ( _closure(state, input)) Berdasarkan hasil diatas, kita bisa membuat tabel transisi dan diagram transisi dari NFA tanpa -move yang ekivalen dengan NFA dengan move tersebut. Jangan lupa menentukan state-state akhir untuk Non-deterministic Finite Automata 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)
Contoh 1: Buatlah NDFA tanpa -move yang ekivalen dengan NDFA -move dibawah ! a q 0 q 1 b q 2 b
1. 2. a b q 0 q 1 q 2 q 2 Tentukan -closure untuk setiap state: Ø _ closure (q 0) = q 0, q 1 Ø _ closure (q 1) = q 1 Ø _ closure (q 2) = q 0, q 1, q 2
3. Tentukan ’: q ’(q 0, a) = _closure ( ( _closure(q 0), a)) = _closure ( ( q 0, q 1 , a)) =(q 0, a) U (q 1, a)=q 0 U = q 0, sehingga _closure (q 0) = q 0, q 1 q ’(q 0, b) = _closure ( ( _closure(q 0), b)) = _closure ( ( q 0, q 1 , b)) =(q 0, b) U (q 1, b)= U q 2= q 2 sehingga _closure (q 2)= q 0, q 1, q 2 q ’(q 1, a) = _closure ( ( _closure(q 1), a)) = _closure ( ( q 1 , a)) = _closure ( ) = q ’(q 1, b) = _closure ( ( _closure(q 1), b)) = _closure ( ( q 1 , b)) = (q 1, b) = q 2 sehingga _closure (q 2) = q 0, q 1, q 2 q ’(q 2, a) = _closure ( ( _closure(q 2), a)) = _closure ( ( q 0, q 1, q 2 , a)) = (q 0, a)U(q 1, a)U(q 2, a)=q 0 U U =q 0, sehingga _closure (q 0) = q 0, q 1 q ’(q 2, b) = _closure ( ( _closure(q 2), b)) = _closure ( ( q 0, q 1, q 2 , b)) = _closure (q 2) = q 0, q 1, q 2
4. a b q 0, q 1, q 2 q 1 q 0, q 1, q 2 q 0, q 1, q 2 5. Tentukan State Akhir - Himpunan state akhir semula adalah q 0 - Cari _closure yang memuat state q 0 dikenai masing 2 input _close (q 0, a) U _close (q 0, b) (q 0, q 1)a U (q 0, q 1)b hasilnya q 0 U q 2 jadi F = {q 0, q 2}
b q 0 a, b q 1 b b b q 2 b a, b
Kenapa harus ekuivalen? n n Ada apa dengan NFA ? konsep yang sulit diimplementasikan. Komputer sepenuhnya deterministic. Kenapa dipelajari ? Lebih dekat ke sistem nyata Tujuannya menerima bahasa yang sama
DFA vs NDFA Keterangan Topologi DFA Lebih ringkas NDFA Lebih kompleks Penyerapan string Tunggal (tdk mendua) Bisa lebih dari 1 dalam 1 state State kosong {Ø} Hampir tidak ada Besar kemungkinan ada State baru Tidak ada Ada state baru yg terbentuk Final state Tetap sesuai keadaan Bisa bertambah
Algoritma Ekuivalen NDFA-DFA 1. 2. 3. 4. 5. 6. Buat semua state yang merupakan subset dari state semula. jumlah state menjadi 2 Q Telusuri transisi state–state yang baru terbentuk, dari diagram transisi. Fokus yang “mendua” Tentukan state awal Tentukan state akhir adalah state yang elemennya mengandung state akhir Rename state yang tersisa (*optional)
Contoh 1 : Diberikan tabel transisi NDFA n δ p r Q 0 {Q 1, Q 2} - Q 1 - Q 2 Q 1 Dengan initial state = Q 0 Final state = Q 1 Bagaimanakah DFA yg ekuivalen?
Mari kita kerjakan sama-sama
Contoh 2: Buatlah DFA yang ekuivalen dengan NDFA berikut : Q={P, Q, R, S} δ 0 1 ∑={0, 1} P Q, S Q S=P Q R Q, R R S P F={Q, S} n S - P
1 0, 1 > Q 0, 1 1 P 0 1 R 0 S 0 Ø
δ 0 1 Fokus pada “yg mendua” awal : P Q, S Q Q R Q, R a) {Q, S} b) {Q, R} R S P S - P Q, S R P, Q, R R, S P, Q, R, S P, Q, R R, S S P Q, R, S P, Q, R 1. (Q, 0) U (S, 0)= R U Ø = R (Q, 1) U (S, 1)= {Q, R} U P= {P, Q, R} 2. (Q, 0) U (R, 0)= R U S={R, S} (Q, 1) U (R, 1)= {Q, R} U P = {P, Q, R} 3. (P, 0) U (Q, 0) U (R, 0) = {Q, S} U R U S={Q, R, S} (P, 1) U (Q, 1) U (R, 1) = Q U {Q, R} U P = {P, Q, R} 4. (R, 0) U (S, 0) = S U Ø = S (R, 1) U (S, 1) = P U P = P 5. (Q, 0) U (R, 0) U (S, 0) = R U S U Ø = {R, S} (Q, 1) U (R, 1) U (S, 1) = {Q, R} U P= {P, Q, R} State awal = 4, muncul state baru berjumlah 5, shg total state setelah ekuivalen = 9
Shg DFA yg ekuivalen dgn NDFA tadi adalah …. Q, R 0 0 Q 1 > 1 1 P 1 0 0 R 0 Q, R, S Q, S 1 1 R, S S 1 1 P, Q, R 0 0 1 0
Kemudian boleh di rename state 2 baru 1 1 U(Q, R) Q 1 0 > 0 P 1 0 0 1 1 0 S X(Q, R, S) T(Q, S) 1 W(R, S) 0 R 1 0 V(P, Q, R) 1 0
- Slides: 20