Conversion from NFA to DFA
Conversion from NFA to DFA
In NFA, when a specific input is given to the current state, the machine goes to multiple states. It can have zero, one or more than one move on a given input symbol. On the other hand, in DFA, when a specific input is given to the current state, the machine goes to only one state. DFA has only one move on a given input symbol.
Let, M = (Q, β, Ξ΄, q0, F) is an NFA which accepts the language L(M). There should be equivalent DFA denoted by M' = (Q', β', q0', Ξ΄', F') such that L(M) = L(M').
Steps for converting NFA to DFA:
Step 1: Initially Q' = Ο
Step 2: Add q0 of NFA to Q'. Then find the transitions from this start state.
Step 3: In Q', find the possible set of states for each input symbol. If this set of states is not in Q', then add it to Q'.
Step 4: In DFA, the final state will be all the states which contain F(final states of NFA)
Example 1:
Convert the given NFA to DFA.

Solution: For the given transition diagram we will first construct the transition table.
|
State |
0 |
1 |
|
βq0 |
q0 |
q1 |
|
q1 |
{q1,
q2} |
q1 |
|
*q2 |
q2 |
{q1,
q2} |
Now we will obtain Ξ΄' transition for state q0.
Ξ΄'([q0], 0) = [q0]
Ξ΄'([q0], 1) = [q1]
The Ξ΄' transition for state q1 is obtained as:
Ξ΄'([q1], 0) = [q1, q2] (new state generated)
Ξ΄'([q1], 1) = [q1]
The Ξ΄' transition for state q2 is obtained as:
Ξ΄'([q2], 0) = [q2]
Ξ΄'([q2], 1) = [q1, q2]
Now we will obtain Ξ΄' transition on [q1, q2].
Ξ΄'([q1, q2], 0) = Ξ΄(q1, 0) βͺ Ξ΄(q2, 0)
= {q1, q2} βͺ {q2}
= [q1, q2]
Ξ΄'([q1, q2], 1) = Ξ΄(q1, 1) βͺ Ξ΄(q2, 1)
= {q1} βͺ {q1, q2}
= {q1, q2}
= [q1, q2]
The state [q1, q2] is the final state as well because it contains a final state q2. The transition table for the constructed DFA will be:
|
State |
0 |
1 |
|
β[q0] |
[q0] |
[q1] |
|
[q1] |
[q1,
q2] |
[q1] |
|
*[q2] |
[q2] |
[q1,
q2] |
|
*[q1,
q2] |
[q1,
q2] |
[q1,
q2] |
The Transition diagram will be:

The state q2 can be eliminated because q2 is an unreachable state.
Example 2:
Convert the given NFA to DFA.

Solution: For the given transition diagram we will first construct the transition table.
|
State |
0 |
1 |
|
βq0 |
{q0,
q1} |
{q1} |
|
*q1 |
Ο |
{q0,
q1} |
Now we will obtain Ξ΄' transition for state q0.
Ξ΄'([q0], 0) = {q0, q1}
= [q0, q1] (new state generated)
Ξ΄'([q0], 1) = {q1} = [q1]
The Ξ΄' transition for state q1 is obtained as:
Ξ΄'([q1], 0) = Ο
Ξ΄'([q1], 1) = [q0, q1]
Now we will obtain Ξ΄' transition on [q0, q1].
Ξ΄'([q0, q1], 0) = Ξ΄(q0, 0) βͺ Ξ΄(q1, 0)
= {q0, q1} βͺ Ο
= {q0, q1}
= [q0, q1]
Similarly,
Ξ΄'([q0, q1], 1) = Ξ΄(q0, 1) βͺ Ξ΄(q1, 1)
= {q1} βͺ {q0, q1}
= {q0, q1}
= [q0, q1]
As in the given NFA, q1 is a final state, then in DFA wherever, q1 exists that state becomes a final state. Hence in the DFA, final states are [q1] and [q0, q1]. Therefore set of final states F = {[q1], [q0, q1]}.
The transition table for the constructed DFA will be:
|
State |
0 |
1 |
|
β[q0] |
[q0,
q1] |
[q1] |
|
*[q1] |
Ο |
[q0,
q1] |
|
*[q0,
q1] |
[q0,
q1] |
[q0,
q1] |
The Transition diagram will be:

Even we can change the name of the states of DFA.
Suppose
A = [q0]
B = [q1]
C = [q0, q1]
With these new names the DFA will be as follows:

Labels: Automata, TAFL Unit-1
Discussion & Queries (<$I18NNumComments$>):
<$CommentPager$>
- <$I18NAtCommentTimeWithPermalink$>, <$I18NCommentAuthorSaid$>
<$CommentPager$>
<$BlogCommentBody$>
<$BlogCommentDeleteIcon$>