Vinte anos atrás, criei um pacote de expressões regulares que incluía conversões de expressões regulares em uma máquina de estado finito (DFA) e oferecia suporte a uma série de operações fechadas de expressões regulares (estrela Kleene, concatenação, reversão, operações de conjunto etc.). Eu não tinha certeza do pior desempenho do meu pacote.
Um DFA tem o mesmo poder expressivo que um NDFA, porque um NDFA de estado n pode ser trivialmente convertido em um DFA com 2 ^ n estados. No entanto, existem garantias de limite superior inferior para essa conversão que não exijam uma explosão exponencial no estado?
Não pude apresentar exemplos de expressões regulares de mau comportamento ou NDFAs, mas não gastei muito tempo pensando nisso. Eu estou supondo uma expressão regular como ((((| | A | B | C) * (e | D | E | F)) * (e | G | H | I)) * (e | J | K | L | M)) *, que mistura muitas alternâncias e as estrelas Kleene teriam um NDFA de tamanho linear, mas um DFA expansivo.