Venti anni fa, ho creato un pacchetto di espressioni regolari che includeva le conversioni da espressioni regolari a una macchina a stati finiti (DFA) e supportava una serie di operazioni di espressione regolare chiuse (stella di Kleene, concatenazione, retromarcia, operazioni impostate, ecc.). Non ero sicuro delle peggiori prestazioni del mio pacchetto.
Un DFA ha la stessa potenza espressiva di un NDFA, poiché un NDFA n-state può essere banalmente convertito in un DFA con 2 ^ n stati. Tuttavia, ci sono garanzie di limite superiore inferiore per tale conversione che non richiedono un'esplosione esponenziale nello stato?
Non sono stato in grado di trovare esempi di espressioni regolari o NDFA che si comportano male, ma non ho trascorso molto tempo a pensarci. Sto indovinando un'espressione regolare come (((((e | A | B | C) * (e | D | E | F)) * (e | G | H | I)) * (e | J | K | L | M)) * che mescola molte alternanze e le stelle di Kleene avrebbero un NDFA di dimensioni lineari ma un DFA espansivo.