Sabe-se que minimizar o tamanho de uma expressão regular é completo no PSPACE, mesmo que tenhamos um DFA como especificação da linguagem .
Quais são os resultados se o idioma for finito?
Pode-se considerar esse problema em dois modelos:
- A entrada é todas as strings do idioma e medimos o tamanho da entrada pela soma do comprimento de todas as strings.
- A entrada é um DFA e medimos o tamanho da entrada pelo número de estados do DFA.
A estrela Kleene não é útil no caso finito; portanto, somente , | e ⋅ (concatenação) são usados na expressão. Obviamente, o tamanho de uma expressão regular parece arbitrário. Em vez disso, pode-se dar peso a cada operação (incluindo adicionar parênteses) e pedir para minimizar o peso da expressão regular.
Edit: Como adrianN observou, está relacionado a códigos baseados em gramática. É NP-completo produzir a gramática livre de contexto de comprimento mínimo para descrever um conjunto finito. Não está claro por que a gramática livre de contexto de tamanho mínimo pode implicar muito na expressão regular de tamanho mínimo. Talvez uma regra inteligente de reescrita possa relacionar esses dois e provar que, no primeiro modelo, o problema está no NP.