Trying to simulate an NFA with a DFA is less straight-forward.
Warm-up: which of the following are equivalent to plain NFAs?
Example processing the string 010110:
010110
Begin in the state(s) \(\{a\}\).
Read 0 and transition to state(s) \(\{a\}\).
010110
Read 1 and transition to state(s) \(\{a, b, c\}\).
010110
Read 0 and transition to state(s) \(\{a, c\}\).
010110
Read 1 and transition to state(s) \(\{a, b, c, d\}\).
010110
Read 1 and transition to state(s) \(\{a, b, c, d\}\).
010110
Read 0 and transition to state(s) \(\{a, c, d\}\).
010110
Since an accept state is highlighted, the NFA accepts the string.
What would a DFA need to keep track of in order to simulate this NFA?
To simulate an NFA with \(|Q|\) states operating on a string \(w\), how many distinct sets of states must we keep track of in the worst case?
There are \(k\)-state NFAs for which the smallest equivalent DFA has \(2^k\) states!
Example near this bound:
\(k^\text{th}\)-to-last symbol NFA
Theorem: Every NFA-decidable language is DFA-decidable.
Proof (no \(\emptystring\) transitions)
For any \(R \subseteq Q_N\), define: \[ E(R) = \setbuild{q \in Q_N}{q \text{ is reachable from some $r \in R$ by a sequence of 0 or more $\emptystring$-transitions}} \]
Theorem: If a language is NFA-decidable, then it is also DFA-decidable.
Proof
This convention for handling \(\emptystring\)-transitions is not the only possible one!
Corollary: a language is DFA-decidable if and only if it is NFA-decidable.