We have a NFA w/epsilon, M = (Q,å ,d ,q0,F). We build a NFA w/o epsilon, M' = (Q,å ,d ',q0,F') where
We need to prove that the two machines accept the same input strings, or equivalently, that a given string x is accepted by M' exactly whenever it is accepted by M. By the definitions of acceptance, we want to prove
d'(q0,x) intersect F' nonempty if d^(q0,x)
intersect F nonempty.
d'(q0,wa)
= d'(d'(q0,w),a)
= d'(d^ (q0,w),a)
d'(d^ (q0,w),a)
=
Uq in d
^(q0 w) d'(q,a) =
Uq in d
^(q0 w) d^(q,a).
Uq in d
^(q0 w) d^(q,a) = d^(q0,wa).
F' = F U{q0}
e *(q0) intersect F is nonempty.
q0 Î d^ (q0,x).
d^ (q0,x)
Ée*(q0).
Exercises:
Q) Construct a NFA without epsilon moves to accept all strings which consist of any number of 0's
followed by any number of 1's followed by any number of 2's
Q) Construct NFA without epsilon moves for
States |
a |
b |
c |
e |
-->P |
f |
Q |
R |
{Q,R} |
Q |
P |
R |
{P,Q} |
f |
*R |
f |
f |
f |
f |
Q) For the given transition table, Construct the equivalent NFA without epsilon moves
States |
a |
b |
c |
e |
-->P |
P |
Q |
R |
f |
Q |
Q |
R |
f |
P |
*R |
R |
f |
P |
Q |