360 likes | 1.43k Views
Conversion of an NFA to a DFA using Subset Construction Algorithm. Algorithm of Subset construction`. Operations on NFA States. Example:. By using subset construction algorithm convert the following NFA N for ( alb ) * abb to DFA. Example: To apply subset construction .
E N D
Conversion of an NFA to a DFAusingSubset Construction Algorithm
Example: By using subset construction algorithm convert the following NFA N for (alb) * abbto DFA
Example: To apply subset construction we need to remove : • ε – transition • That require to construct ε – closure (s) • A multiple transition on input symbol from some state s in T: Mov(T,a)
Example: Second step: Looking for the start state for the DFA 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} b {0, 1, 2, 4, 7} a A
Example: Third step: Compute U = ε -closure(move(T,a) • 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)) 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 A a {1, 2, 3, 4, 6, 7, 8} B
2. Dtran[A,b] = ε -closure(move(A,b)) Among the states in A, only 4 has a transition on b, and it goes to 5 Thus: 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 A b {1, 2, 4, 5, 6, 7 } C
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} respectively Thus: Dtran[B,a] = ε -closure(move(B,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 } Dtran[B,a] = B a A a {1, 2, 3, 4, 6, 7, 8 } B
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} respectively Thus: Dtran[B,b] = ε -closure(move(B,b)) = ε- closure ({5,9} = {1, 2, 4, 5, 6, 7,9} Dtran[B,b] = D a B A {1, 2, 4, 5, 6, 7,9} a b D B
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} respectively Thus: Dtran[C,a] = ε -closure(move(C,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 } Dtran[C,a] = B B A a b {1, 2, 4, 5, 6, 7 } C
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} respectively Thus: Dtran[C,b] = ε -closure(move(C,b)) = ε- closure ({5} = {1, 2, 4, 5, 6, 7} Dtran[C,b] = C A b {1, 2, 4, 5, 6, 7} b C
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} respectively Thus: Dtran[D,a] = ε -closure(move(D,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 } Dtran[D,a] = B B {1, 2, 4, 5, 6, 7,9} b D 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} respectively Thus: Dtran[D,b] = ε -closure(move(D,b)) = ε- closure ({5,10} = {1,2, 4, 5, 6, 7, 10} Dtran[D,b] = E B {1, 2, 4, 5, 6, 7, 9} b {1, 2, 4, 5,6, 7, 10} D E a b
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} respectively Thus: Dtran[E,a] = ε -closure(move(E,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 } Dtran[E,a] = B B D {1, 2, 4, 5, 6, 7,9} b a E
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} respectively Thus: 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} b b C D E
Result of applying the subset Construction NFA for (alb) * abb