The language accepted by a NFA A = (Q,Σ, δ, q0, F) is
NFAs correspond to a kind of parallelism in the automata. We can think of the same basic model of automaton: an input tape, a single read head and an internal state, but when the transition function allows more than one next state for a given state and input we keep an independent internal state for each of the alternatives. In a sense we have a constantly growing and shrinking set of automata all processing the same input synchronously. For example, a computation of the NFA given above on ‘abaab' could be interpreted as:
This string is accepted, since there is at least one computation from 0 to 0 or 2 on ‘abaab'. Similarly, each of ‘ε', ‘ab', ‘aba' and ‘abaa' are accepted, but ‘a' alone is not. Note that if the input continues with ‘b' as shown there will be no states left; the automaton will crash. Clearly, it can accept no string starting with ‘abaabb' since the computations from 0 or ‘abaabb' end either in h0, bi or in h2, bi and, consequentially, so will all computations from 0 on any string extending it. The fact that in this model there is not necessarily a (non-crashing) computation from q0 for each string complicates the proof of the language accepted by the automaton-we can no longer assume that if there is no (non-crashing) computation from q0 to a ?nal state on w then there must be a (non-crashing) computation from q0 to a non-?nal state on w. As we shall see, however, we will never need to do such proofs for NFAs directly.