Conv Nfa Dfa
description
Transcript of Conv Nfa Dfa
-
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 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
{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} respectively
Thus:
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} respectively
Thus:
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
bB
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
{1, 2, 4, 5, 6, 7 }
CA 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} respectively
Thus:
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}b
AC
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} respectively
Thus:
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}
DBb
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
{1, 2, 4, 5,6, 7, 10}
bB
b
{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} respectively
Thus:
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}
EDb 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} 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
DE
bC
-
Transition table Dtran for DFA D
-
Result of applying the subset Construction NFA for (alb) * abb