nondeterminism as a design tool
Step back and the practical takeaway of this whole chapter is simple: treat nondeterminism as a TOOL for thinking and designing, not as a kind of hardware. When a language is naturally described as "somewhere there is a pattern X," or "this is built by gluing together these pieces," an NFA or epsilon-NFA lets you write that description down almost verbatim — guess where X is, or epsilon-glue the pieces — and trust that the machine's existential acceptance rule does the rest.
Used this way, nondeterminism is a clarity engine. You design the small, readable NFA; you reason about it with the guess-and-verify or parallel-paths picture; and only if you need a deterministic implementation do you run the subset construction to compile it down to a DFA — accepting that the DFA may be larger. Many real systems do exactly this internally: regular-expression engines, lexical analyzers (scanners), and protocol checkers are often specified as NFAs and then determinized or simulated. The convenience is real and used daily.
But the tool comes with a label, and the label is the honest theme that closes the chapter: this guessing can always be simulated away. For finite automata that is a theorem (the subset construction), the cost is at worst exponential in size but never in expressive power, and nondeterminism is never random and never free. Carry the habit of asking "can I just guess and verify?" forward — because at the level of NP, the very same question becomes the deepest open problem in the field, where we do NOT yet know whether the guessing can always be removed cheaply.
Specifying a scanner token like "a comment runs from /* to */": it is far easier to write a small NFA that guesses where the closing */ is than to hand-build the deterministic state machine. A regex tool compiles your pattern into an NFA, then determinizes or simulates it — you get the convenience of guessing and a deterministic machine to actually run.
Design with guessing, compile to determinism — the same convenience that, at the NP level, becomes a deep open question.
For finite automata the guessing is provably removable (subset construction). Do not assume the same elsewhere — at the NP level, whether guessing can be removed cheaply is unknown (P vs NP).