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 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: First step: construct ε – closure (s) {0} = {1} = {2} = {3} = {4} = {5} = {6} = {7} = {8} = {9} = {10} = {0 , 1, 2, 4, 7} {1, 2, 4} {2} {1, 2, 3, 4, 6, 7} {4} {1, 2, 4, 5, 6, 7} {1, 2, 4, 6, 7} {7} {8} {9} {10} 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 {1, 2, 3, 4, 6, 7, 8 } B 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} respectively Thus: Dtran[B,b] = ε -closure(move(B,b)) = ε- closure ({5,9} = {1, 2, 4, 5, 6, 7,9} a Dtran[B,b] = D A a B B b {1, 2, 4, 5, 6, 7,9} D • 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 A b {1, 2, 4, 5, 6, 7 } C a B 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 b {1, 2, 4, 5, 6, 7} 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 b a {1, 2, 4, 5, 6, 7,9} D 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 b a {1, 2, 4, 5, 6, 7, 9} D b {1, 2, 4, 5,6, 7, 10} 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} respectively Thus: Dtran[E,a] = ε -closure(move(E,a)) = ε- closure ({3,8} = {1, 2, 3, 4, 6, 7, 8 } Dtran[E,a] = B D b {1, 2, 4, 5, 6, 7,9} E a B 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 D b {1, 2, 4, 5,6, 7, 10} E b C Transition table Dtran for DFA D Result of applying the subset Construction NFA for (alb) * abb
© Copyright 2024 ExpyDoc