q0,q1 - Toko Elektronika.com

Download Report

Transcript q0,q1 - Toko Elektronika.com

Matakuliah
Tahun
Versi
: T0162/Teori Bahasa dan Automata
: 2009
: 1/0 Revisi
Pertemuan 3
Konversi NFA - DFA dan
Konversi ε-NFA - DFA
1
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)
2
Konversi NFA - DFA
• Contoh : jika diketahui
maka
:
NFA sbb :
State
0
1
State
0
1
{}
q0 {q0,q1}
q2
{q0, q1}
{q2}
q0
q1
q0
q1
{q0}
{q1}
q1
* q2
q1
{q0,q1}
* q2
{q1}
{q0, q1}
{q0,q1}
{q0, q1} {q1, q2}
* {q0,q2}
{q0, q1} {q0,q1,q2}
* {q1,q2}
{q0, q1} {q0, q1}
* {q0,q1,q2} {q0, q1} {q0,q1,q2}
3
Konversi NFA – DFA (Cara 1)
1
{q1}
0
0
Start
{q0}
0
1
1
0
1
0
{}
{q2}
{q1,q2}
{q0,q1}
{q0,q1,q2}
0,1
1
0
1
{q0,q2}
4
Konversi NFA – DFA (Cara 1)
• Karena stata { }, {q0,q2}, {q0,q1,q2} tidak
dapat dicapai dari stata awal, maka stata
tersebut dapat dihilangkan, sehingga :
1
{q1}
0
0
Start
{q0}
1
{q2}
1
0
1
0
{q0,q1}
{q1,q2}
0,1
5
Konversi NFA – DFA (Cara 2penjabaran)
1. Stata Awal D = {q0}
2. ({q0},0) = {q0,q1}
3. ({q0},1) = {q2}
4. ({q0,q1},0) = {q0,q1}
5. ({q0,q1},1) = {q1,q2}
6. ({q2},0) = {q1}
7. ({q2},1) = {q0,q1}
8. ({q1,q2},0) = {q0,q1}
9. ({q1,q2},1) = {q0,q1}
10. ({q1},0) = {q0}
11. ({q1},1) = {q1}
State
q0
q1
* q2
0
1
{q0,q1}
q2
q0
q1
q1
{q0,q1}
6
Konversi NFA – DFA (Cara 2)
• Langsung didapat gambar Sbb:
1
{q1}
0
0
Start
{q0}
1
{q2}
1
0
1
0
{q0,q1}
{q1,q2}
0,1
Cara ke-2 dapat dilakukan jika stata pada NFA lebih dari 3,
dengan maksud agar tidak perlu membuat subset terlalu
banyak
7
Konversi NFA – DFA (Cara 2-tabel)
State
q0
q1
* q2
0
1
{q0,q1}
q2
q0
q1
q1
{q0,q1}
State
0
1
q0 {q0,q1}
{q2}
{q0,q1} {q0,q1} {q1,q2}
*{q2} {q1}
{q0,q1}
*{q1,q2} {q0,q1} {q0,q1}
{q1}
{q0}
{q1}
8
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)
9
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
0,1,…,9
Start
.
ε, +, q0
0,1,…,9
q1
q2
0,1,…,9
0,1,…,9
q3
ε
q5
.
q4
10
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
11
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)
12
Konversi ε – NFA - DFA
Contoh eliminasi ε – NFA
1. Stata awal E = q0, stata awal D =ECLOSE(q0)
Stata awal D = {q0,q1}
2. ({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}
13
Konversi ε – NFA - DFA
5. ({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}
7. ({q1},0,1,...,9) = {q1,q4}
 ECLOSE(q1,q4) = {q1,q4}
({q1},0,1,...,9) = {q1,q4}
14
Konversi ε – NFA - DFA
8. ({q2},0,1,...,9) = {q3}  ECLOSE(q3) = {q3,q5}
({q2},0,1,...,9) = {q3,q5}
9. ({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}
15
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}
16
Konversi ε – NFA - DFA
0,1,…,9
0,1,…,9
Start
{q0,q1}
+, -
{q1}
.
0,1,…,9
.
{q1,q4}
.
{q2,q3,q5}
0,1,…,9
{q2}
0,1,…,9
{q3,q5}
0,1,…,9
17
Konversi ε – NFA - DFA
Contoh :
Diketahui RE : (ab)* a + (a+b)* b, gambarkan ε – NFA, telusuri
string abba dan konversikan ke DFA
Jawab :
q2
a
q0
ε
b
a
q1
ε
q4
b
q3
a, b
18
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
1.
Eqclose (q0) = {q0, q1, q3}
2.
({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}
19
Konversi ε – NFA - DFA
7.
8.
9.
10.
11.
({q3, q4}, b) = {q3,q4}  Eqclose(q3,q4) = {q3,q4}
({q3, q4}, b) = {q3,q4}
({q3}, a) = {q3}  Eqclose(q3) = {q3}
({q3}, a) = {q3}
({q3}, b) = {q3,q4}  Eqclose(q3,q4) = {q3,q4}
({q3}, b) = {q3,q4}
({q1, q3, q4}, a) = {q2,q3,q4}  Eqclose(q2,q3,q4) = {q2,q3,q4}
({q1, q3, q4}, a) = {q2,q3,q4}
({q1, q3, q4}, b) = {q3,q4}  Eqclose(q3,q4) = {q3,q4}
({q1, q3, q4}, b) = {q3,q4}
a
{q0,q1,q3}
a
{q2,q3,q4}
{q1,q3,q4}
b
a
b
b
{q3,q4}
b
a
b
q3
a
b
20