Conversion of an NFA to a DFA using Subset Construction Algorithm
description
Transcript of Conversion of an NFA to a DFA using Subset Construction Algorithm
Conversion of an NFA to a DFAusing
Subset Construction Algorithm
Algorithm of Subset construction`
Operations on NFA States
By using subset construction algorithm convert the following NFA N for (alb) * abb to DFA
Example:
we need to remove :1. ε – transition• That require to construct ε – closure (s)
2. A multiple transition on input symbol from some state s in T:Mov(T,a)
Example: To apply subset construction
{0 , 1, 2, 4, 7} {0= }{1, 2, 4} {1= }{2} {2= }{1, 2, 3, 4, 6, 7} {3= }{4} {4= }{1, 2, 4, 5, 6, 7} {5= }{1, 2, 4, 6, 7} {6= }{7} {7= }{8} {8= }{9} {9= }{10} {10= }
Example: First step: construct ε – closure (s)
The start state A of the equivalent DFA is ε – closure (0)
The ε – closure (0) = {0, 1, 2, 4, 7}
Then the starting state A = {0, 1, 2, 4, 7}
Example: Second step: Looking for the start state for the DFA
{0, 1, 2, 4, 7}A
a
b
• First determine the input alphabet
here input alphapet = {a,b}• Second compute:
1. Dtran[A,a] = ε -closure(move(A,a))2. Dtran[A,b] = ε -closure(move(A,b))
Example: Third step: Compute U = ε -closure(move(T,a)
Remember:
A = {0, 1, 2, 4, 7}
1. Dtran[A,a] = ε -closure(move(A,a))• Among the state 0, 1, 2, 4, 7, only 2 and 7 have transitions on a to 3 and 8,
respectively.
Thus move(A,a) = {3, 8}Also, ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8}
So we conclude:Dtran[A,a] = ε -closure(move(A,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8}
Let us call this set B so:Dtran[A,a] = B
{1 ,2 ,3 ,4 ,6 ,7 ,8 }B
aA
2. Dtran[A,b] = ε -closure(move(A,b))Among the states in A, only 4 has a transition on b, and it goes to 5Thus: Dtran[A,b] = ε -closure(move(A,b)) = ε- closure ({5} = {1, 2, 4, 5, 6, 7 }
Let us call this set C so:Dtran[A,b] = C
{1 ,2 ,4 ,5 ,6 ,7 } C
bA
• Third compute:3. Dtran[B,a] = ε -closure(move(B,a))4. Dtran[B,b] = ε -closure(move(B,b))
3. Dtran[B,a] = ε -closure(move(B,a))Among the states in B, only 2, 7 has a transition on a, and it goes to {3, 8} respectivelyThus: Dtran[B,a] = ε -closure(move(B,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }
Dtran[B,a] = B
{1 ,2 ,3 ,4 ,6 ,7 ,8 } B
aA
a
4. Dtran[B,b] = ε -closure(move(B,b))Among the states in B, only 4, 8 has a transition on b, and it goes to {5, 9} respectivelyThus: Dtran[B,b] = ε -closure(move(B,b)) = ε- closure ({5,9} = {1, 2, 4, 5, 6, 7,9}
Dtran[B,b] = D
{1 ,2 ,4 ,5 ,6 ,7,9}B
aA
a
bBD
• Fourth compute:5. Dtran[C,a] = ε -closure(move(C,a))6. Dtran[C,b] = ε -closure(move(C,b))
5. Dtran[C,a] = ε -closure(move(C,a))Among the states in C, only 2, 7 has a transition on a, and it goes to {3, 8} respectivelyThus: Dtran[C,a] = ε -closure(move(C,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }
Dtran[C,a] = B
{1 ,2 ,4 ,5 ,6 ,7 } C
A Bab
6. Dtran[C,b] = ε -closure(move(C,b))Among the states in C, only 4 has a transition on b, and it goes to {5} respectivelyThus:
Dtran[C,b] = ε -closure(move(C,b)) = ε- closure ({5} = {1, 2, 4, 5, 6, 7}
Dtran[C,b] = C
{1 ,2 ,4 ,5 ,6 ,7}bAC
b
• Fifth compute:7. Dtran[D,a] = ε -closure(move(D,a))8. Dtran[D,b] = ε -closure(move(D,b))
7. Dtran[D,a] = ε -closure(move(D,a))Among the states in D, only 2, 7 has a transition on a, and it goes to {3, 8} respectivelyThus: Dtran[D,a] = ε -closure(move(D,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }
Dtran[D,a] = B
{1 ,2 ,4 ,5 ,6 ,7,9}
DB b
a
8. Dtran[D,b] = ε -closure(move(D,b))Among the states in D, only 4 and 9 has a transition on b, and it goes to {5, 10} respectivelyThus:Dtran[D,b] = ε -closure(move(D,b)) = ε- closure ({5,10} = {1,2, 4, 5, 6, 7, 10}
Dtran[D,b] = E
{1 ,2 ,4 ,5,6 ,7 ,10}
bBb
{1 ,2 ,4 ,5 ,6 ,7 ,9}Da E
• Finally compute:9. Dtran[E,a] = ε -closure(move(E,a))
10. Dtran[E,b] = ε -closure(move(E,b))
9. Dtran[E,a] = ε -closure(move(E,a))Among the states in E, only 2, 7 has a transition on a, and it goes to {3, 8} respectivelyThus: Dtran[E,a] = ε -closure(move(E,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 }
Dtran[E,a] = B
{1 ,2 ,4 ,5 ,6 ,7,9}
ED b Ba
10. Dtran[E,b] = ε -closure(move(E,b))Among the states in E, only 4 has a transition on b, and it goes to {5} respectivelyThus:Dtran[E,b] = ε -closure(move(E,b)) = ε- closure ({5} = {1,2, 4, 5, 6, 7}
Dtran[E,b] = C
{1 ,2 ,4 ,5,6 ,7 ,10}
bDE
b C
Transition table Dtran for DFA D
Result of applying the subset Construction NFA for (alb) * abb