CS154
Chris Pollett
Feb. 17, 2020
Theorem Any language recognized by an NFA is recognized by some DFA.
Proof: Given an NFA `N= (Q, Sigma, delta, q_0, F)` we want to simulate how it acts on a string `w` with a DFA, `M= (Q', Sigma, delta', q_0', F')`. The idea is we want to keep track of what possible states it could be in after reading the first `m` characters of `w`. Let `Q'= P(Q)`, the power set of `Q`. The alphabet is the same. For each `R in Q'` (i.e., `R subseteq Q`) and `a in Sigma`, let `delta'(R, a) = {q in Q | q in E(delta(r,a)) \ mbox{for some} \ r in R}`. Here `E(q')` is the set of states reachable from `q'` following 0 or more `epsilon` transitions, for a set of states `Q''`, `E(Q'')` is the union of `E(q'')` for `q'' in Q''`. Let the new start state be `q_0'=E(q_0)`. Let `F' = {R in Q'| R \ mbox{contains an accept state of} \ N}`.
This construction is from the original NFA paper of Rabin and Scott (1959).
Which of the following is true?
The first procedure for minimizing finite automata was given in Huffman 1954 (J. Franklin Institute. Vol 257. Iss. 3-4).
Our procedure above probably runs in quadratic time, the best known algorithm is `O(n log n)` due to Hopcroft 1971.