Rapid graph traversals gives us GC, eta-edge collapsing, & (via Fleischer's recursive algorithm) the strongly-connected subgraphs!
To merge redundant edges (converting NFAs to DFAs) we could ask our Parsing Unit "for these states & this input which states are next?" queueing non-duplicate results up to be merged & traversed.
We can optimize a DFA by converting its inverse-NFA into a DFA & inverting it back.
3/3 Fin! Or maybe I condensed too much?