390 likes | 2.34k Views
Pertemuan 3 Konversi NFA - DFA dan Konversi ε -NFA - DFA. Matakuliah : T0162/Teori Bahasa dan Automata Tahun : 2009 Versi : 1/0 Revisi. Konversi NFA - DFA. Jika diketahui NFA N = (Q N , , N , q 0 , F N ) Maka DFA A = (Q D , , D ,{q D }, F D )
E N D
Pertemuan 3 Konversi NFA - DFA dan Konversi ε-NFA - DFA Matakuliah : T0162/Teori Bahasa dan Automata Tahun : 2009 Versi : 1/0 Revisi
Konversi NFA - DFA • Jika diketahui NFA N = (QN, , N, q0, FN) Maka DFA A = (QD, , D,{qD}, FD) • Simbol input untuk kedua FA sama dan stata awal D merupakan himpunan yang terdiri dari stata awal N saja. • Komponen D yang lain dapat dibangun dengan ketentuan sbb : • QD adalah himpunan subset dari QN. Jika QN memiliki n stata maka QD memiliki 2n stata • FD adalah Stata penerima pada D, yang merupakan subset dari stata pada N, yang memiliki sedikitnya 1 stata penerima pada N • Untuk setiap himpunan S QN dan untuk setiap simbol input a , maka D (S, a) = U p dlm s N (P, a)
Konversi NFA - DFA • Contoh : jika diketahui maka : NFA sbb : {q0, q1} {q2} {q0} {q1} {q1} {q0, q1} {q0, q1} {q1, q2} {q0, q1} {q0,q1,q2} {q0, q1} {q0, q1} {q0, q1} {q0,q1,q2}
1 {q1} 0 0 Start { } {q0} 1 {q2} 1 0 0 1 {q1,q2} {q0,q1} {q0,q1,q2} 0 0,1 1 0 1 {q0,q2} Konversi NFA – DFA (Cara 1)
1 {q1} 0 0 Start {q0} 1 {q2} 1 0 1 {q1,q2} {q0,q1} 0 0,1 Konversi NFA – DFA (Cara 1) • Karena stata { }, {q0,q2}, {q0,q1,q2} tidak dapat dicapai dari stata awal, maka stata tersebut dapat dihilangkan, sehingga :
Konversi NFA – DFA (Cara 2-penjabaran) • Stata Awal D = {q0} • ({q0},0) = {q0,q1} • ({q0},1) = {q2} • ({q0,q1},0) = {q0,q1} • ({q0,q1},1) = {q1,q2} • ({q2},0) = {q1} • ({q2},1) = {q0,q1} • ({q1,q2},0) = {q0,q1} • ({q1,q2},1) = {q0,q1} • ({q1},0) = {q0} • ({q1},1) = {q1}
1 {q1} 0 0 Start {q0} 1 {q2} 1 0 1 {q1,q2} {q0,q1} 0 0,1 Konversi NFA – DFA (Cara 2) • Langsung didapat gambar Sbb: Cara ke-2 dapat dilakukan jika stata pada NFA lebih dari 3, dengan maksud agar tidak perlu membuat subset terlalu banyak
Konversi NFA – DFA (Cara 2-tabel) {q0,q1} {q2} {q0,q1} {q0,q1} {q1,q2} *{q2} {q1} {q0,q1} *{q1,q2} {q0,q1} {q0,q1} {q1} {q0} {q1}
Non Deterministic Finite Automaton dengan ε- move (ε - NFA) Finite Automata dengan -move : • Memungkinkan transisi atas input kosong (empty) . • Definisi Formal NFA : M = (Q, ( U {}), , q0, F) Q, , q0, F : seperti pada FA • Fungsi Transisi : : Q ( {}) Q (q,a) : a mungkin atau a Basis : • State q berada dalam ECLOSE(q) Induksi : • Jika state p ada dalam ECLOSE(q), dan terdapat transisi dari state p ke state r berlabel maka r juga termasuk dalam ECLOSE(q)
0,1,…,9 0,1,…,9 . ε, +, - Start q0 q1 q2 q3 ε q5 0,1,…,9 0,1,…,9 . q4 Non Deterministic Finite Automaton dengan ε- move (ε - NFA) Language Accepted : • L yang diterima NFA dengan -move : L(M) = {w(q0,w) dalam F} Contoh : Diketahui ε-NFA yang menerima nilai desimal, yang terdiri dari tanda (+/-), digit, titik decimal dan digit. Salah satu dari digit boleh empty
Non Deterministic Finite Automaton dengan ε- move (ε - NFA) • Telusurilah string 5.6 (q0, 5.6) = ECLOSE(q0) = {q0,q1} (q0, 5) = (q0,5) U (q1,5) = {q1,q4} = ECLOSE(q1) U ECLOSE(q4) = {q1,q4} (q0, 5.) = (q1, .) U (q4, .) = {q2,q3} = ECLOSE(q2) U ECLOSE(q3) ={q2,q3,q5} (q0, 5.6) = (q2,6) U (q3,6) U (q5,6) = {q3} = ECLOSE(q3) = {q3,q5} Accepted
Konversi ε – NFA - DFA • Jika diketahui ε- NFA E = (QE, , E, q0, FE) Maka DFA A = (QD, , D,{qD}, FD) dengan ketentuan sbb : • QD adalah himpunan subset dari QE. • qD = ECLOSE(q0) • FD adalah himpunan yang memiliki sedikitnya 1 stata penerima pada E • D(S,a) untuk semua a dalam dan himpunan S dalam QD, maka : a. Diketahui S = {p1,p2,p3,…pk} b. Carilah Uki=1 E(Pi,a) simpan sebagai himpunan {r1,r2,r3,…rm) c. Maka D(S,a) = Umj=1 ECLOSE(Rj)
Konversi ε – NFA - DFA Contoh eliminasi ε– NFA • Stata awal E = q0, stata awal D =ECLOSE(q0) Stata awal D = {q0,q1} • ({q0,q1},+) = {q1} ECLOSE(q1) = {q1} ({q0,q1},+) = {q1} 3. ({q0,q1},-) = {q1} ECLOSE(q1) = {q1} ({q0,q1},-) = {q1} 4. ({q0,q1},.) = {q2} ECLOSE(q2) = {q2} ({q0,q1},.) = {q2}
Konversi ε – NFA - DFA • ({q0,q1},0,1…,9) = {q1,q4} ECLOSE(q1,q4) = {q1,q4} ({q0,q1},0,1…,9) = {q1,q4} 6. ({q1},.) = {q2} ECLOSE(q2) = {q2} ({q1},.) = {q2} • ({q1},0,1,...,9) = {q1,q4} ECLOSE(q1,q4) = {q1,q4} ({q1},0,1,...,9) = {q1,q4}
Konversi ε – NFA - DFA 8. ({q2},0,1,...,9) = {q3} ECLOSE(q3) = {q3,q5} ({q2},0,1,...,9) = {q3,q5} • ({q1,q4},0,1,...,9) = {q1,q4} ECLOSE(q1,q4) = {q1,q4} ({q1,q4},0,1,...,9) = {q1,q4} 10. ({q1,q4},.) = {q2,q3} ECLOSE(q2,q3) = {q2,q3,q5} ({q1,q4},.) = {q2,q3,q5}
Konversi ε – NFA - DFA 11. ({q3,q5},0,1,…,9) = {q3} ECLOSE(q3) = {q3,q5} ({q3,q5},0,1,…,9) = {q3,q5} 12. ({q2,q3,q5},0,1,...,9) = {q3} ECLOSE(q3) = {q3,q5} ({q2,q3,q5},0,1,...,9) = {q3,q5}
0,1,…,9 0,1,…,9 +, - . Start {q0,q1} {q1} {q1,q4} {q2,q3,q5} 0,1,…,9 . 0,1,…,9 . {q2} 0,1,…,9 {q3,q5} 0,1,…,9 Konversi ε – NFA - DFA
q2 a b q0 q1 q4 ε a ε q3 b a, b Konversi ε – NFA - DFA Contoh : Diketahui RE : (ab)* a + (a+b)* b, gambarkan ε– NFA, telusuri string abba dan konversikan ke DFA Jawab :
Konversi ε – NFA - DFA Penelusuran string : ({q0}, abba) Eclose (q0) = {q0,q1,q3} ({q0,q1,q3}, a) = {q2,q3,q4} Eclose (q2,q3,q4) = {q2,q3,q4} ({q2,q3,q4},ab) = {q1,q3,q4} Eclose(q1, q3,q4) = {q1,q3,q4} ({q1,q3,q4},abb) = {q3,q4} Eclose(q3,q4) = {q3,q4} ({q3,q4},abba) = {q3} Eclose(q3) = {q3} rejected krn tidak ada q4 Konversi ke DFA • Eqclose (q0) = {q0, q1, q3} • ({q0, q1, q3}, a) = {q2,q3,q4} Eqclose(q2, q3,q4) = {q2,q3,q4} ({q0, q1, q3}, a) = {q2,q3,q4} 3. ({q0, q1, q3}, b) = {q3,q4} Eqclose(q3, q4) = {q3,q4} ({q0, q1, q3}, b) = {q3,q4} 4. ({q2, q3, q4}, a) = {q3} Eqclose(q3) = {q3} ({q2, q3, q4}, a) = {q3} 5. ({q2, q3, q4}, b) = {q1,q3,q4} Eqclose(q1, q3,q4) = {q1,q3,q4} ({q2, q3, q4}, b) = {q1,q3,q4} 6. ({q3, q4}, a) = {q3} Eqclose(q3) = {q3} ({q3, q4}, a) = {q3}
a {q1,q3,q4} {q0,q1,q3} {q2,q3,q4} a b a b {q3,q4} b q3 a b a b b Konversi ε – NFA - DFA 7. ({q3, q4}, b) = {q3,q4} Eqclose(q3,q4) = {q3,q4} ({q3, q4}, b) = {q3,q4} 8. ({q3}, a) = {q3} Eqclose(q3) = {q3} ({q3}, a) = {q3} 9. ({q3}, b) = {q3,q4} Eqclose(q3,q4) = {q3,q4} ({q3}, b) = {q3,q4} 10. ({q1, q3, q4}, a) = {q2,q3,q4} Eqclose(q2,q3,q4) = {q2,q3,q4} ({q1, q3, q4}, a) = {q2,q3,q4} 11. ({q1, q3, q4}, b) = {q3,q4} Eqclose(q3,q4) = {q3,q4} ({q1, q3, q4}, b) = {q3,q4}