Lecture 08
Lecture 08
Construction
Sohail Aslam
Lecture 8
NFA → DFA Construction
The algorithm is called subset
construction.
In the transition table of an
NFA, each entry is a set of
states.
In DFA, each entry is a single
state
2
NFA → DFA Construction
The general idea behind
NFA-to-DFA construction is
that each DFA state
corresponds to a set of
NFA states.
3
NFA → DFA Construction
The DFA uses its state to
keep track of all possible
states the NFA can be in
after reading each input
symbol.
4
NFA → DFA Construction
We will use the following
operations.
-closure(T):
set of NFA states reachable
from some NFA state s in T
on -transitions alone.
5
NFA DFA Construction
move(T,a):
set of NFA states to which
there is a transition on input
a from some NFA state s in
set of states T.
6
NFA → DFA Construction
Before it sees the first input
symbol, NFA can be in
any of the state in the set
-closure(s0), where s0 is the
start state of the NFA.
7
NFA → DFA Construction
Suppose that exactly the
states in set T are
reachable from s0 on a
given sequence of input
symbols.
8
NFA → DFA Construction
Let a be the next input
symbol.
On seeing a, the NFA can
move to any of the states in
the set move(T,a).
9
NFA → DFA Construction
Let a be the next input
symbol.
On seeing a, the NFA can
move to any of the states in
the set move(T,a).
10
NFA → DFA Construction
When we allow for
-transitions, NFA can be in
any of the states in
-closure(move(T,a))
after seeing a.
11
Subset Construction
Algorithm:
Input:
NFA N with state set S,
alphabet , start state
s0, final states F
12
Subset Construction
Output:
DFA D with state set S’,
alphabet , start states
s0’ = -closure(s0), final
states F’, transition
table: S’ x → S’
13
Algorithm
// initially, e-closure(s0) is the only
// state in D states S’ and it is
// unmarked
s0’ = -closure(s0)
S’ = {s0’ } (unmarked)
14
while there is some unmarked state T
in S’
mark state T
for all a in do
U = -closure( move(T,a) );
if U not already in S’
add U as an unmarked state to S’
Dtran(T,a) = U;
end for
end while
15
Algorithm
F’:
for each DFA state S
if S contains an NFA final state
mark S as DFA final state
16
Subset Construction Example
a
2 3
a b b
0 1 6 7 8 9 10
b
4 5
NFA for (a | b )*abb
17
a
2 3
a b b
0 1 6 7 8 9 10
b
4 5
The start state of equivalent
DFA is -closure(0), which is
A = {0,1,2,4,7}
18
2 a
3
a b b
0 1 6 7 8 9 10
b
4 5
A = {0,1,2,4,7}, these are
exactly the states reachable
from state 0 via -transition.
19
2 a 3
a b b
0 1 6 7 8 9 10
b
4 5
The input symbol alphabet
here is {a,b}.
20
2 a 3
a b b
0 1 6 7 8 9 10
b
4 5
The algorithm tells us to mark
A and then compute
-closure(move(A,a))
21
2 a
3
a b b
0 1 6 7 8 9 10
b
4 5
move(A,a)), is the set of states
of NFA that have transition on
‘a’ from members of A.
22
2 a
3
a b b
0 1 6 7 8 9 10
b
4 5
b
DFA for (a | b )*abb
37
Resulting DFA
a a
a b b
A B D E
a
b a
b
C
b a a a a b b
38
Final Transition Table
Input symbol
State a b
A B C
B B D
C B C
D B E
E B C 39