Algoritmo para determinar se dois regexes são equivalentes

11

Dadas duas expressões regulares arbitrárias, existe um algoritmo "eficiente" para determinar se elas correspondem ao mesmo conjunto de cadeias?

De maneira mais geral, podemos calcular o tamanho da interseção dos dois conjuntos de correspondências?

Quais algoritmos existem para fazer isso e em que classe de complexidade eles vivem?

Se recusarmos a estrela Kleene, isso altera a imagem?

MathematicsOrchid
fonte
O que você quer dizer com "tamanho do cruzamento"? Na maioria dos casos interessantes, será infinitamente grande; você está interessado em tamanhos wrt ? Σn
Raphael
@ Rafael Meu entendimento é que a eliminação da estrela Kleene força o tamanho do conjunto a ser finito.
MathematicsOrchid
Depende. Quais outros operadores são permitidos? Se você permitir a complementação, o que você diz não é verdade. Além disso, você também solicita a situação com a estrela Kleene, portanto precisa esclarecer de qualquer maneira.
Raphael

Respostas:

12

Hendrik Jan fornece uma boa resposta para a classe de complexidade, mas não um algoritmo em si.

O algoritmo mais simples de fazer isso que eu sei é converter a expressão regular em um DFA. Existem técnicas conhecidas para converter uma expressão regular em um NFA e um NFA em um DFA.

Depois de ter dois DFAs, o teste de equivalência é eficiente e decidível, pois a forma mínima de um DFA é exclusiva até o isomorfismo.

No entanto, a construção desses DFAs a partir de NFAs pode levar muito tempo e produzir DFAS extremamente grandes, exponencialmente grandes no pior caso.

jmite
fonte
10

Sabe-se que a equivalência de expressões regulares é completa no PSPACE, o que é bastante ruim. O artigo "Complexidade de problemas de decisão para expressões regulares simples" lista várias subclasses de expressões regulares com suas respectivas complexidades. ( link )

Hendrik Jan
fonte
11
e2ee
@dkuper Obrigado pela explicação adicional. Sinta-se livre para editar a resposta para adicionar esta ou referências adequadas. (Ou até mesmo iniciar a sua própria resposta.)
Hendrik Jan
Existe uma referência para expressões regulares gerais completas no PSPACE?
24715 Ryan
Seu link está morto. Você pode fornecer uma nova ou pelo menos algumas das informações relevantes do jornal?
D. Ben Knoble 19/03/19
@ D.BenKnoble O link funciona bem para mim.
Hendrik Jan