Algorithme pour déterminer si deux expressions régulières sont équivalentes

11

Étant donné deux expressions régulières arbitraires, existe-t-il un algorithme "efficace" pour déterminer si elles correspondent au même ensemble de chaînes?

Plus généralement, peut-on calculer la taille de l'intersection des deux jeux de correspondance?

Quels algorithmes sont là pour le faire et dans quelle classe de complexité vivent-ils?

Si nous interdisons l'étoile Kleene, est-ce que cela modifie l'image?

MathematicalOrchid
la source
Qu'entendez-vous par «taille de l'intersection»? Dans les cas les plus intéressants, il sera infiniment grand; Êtes - vous intéressé dans les tailles wrt ? Σn
Raphael
@Raphael Ma compréhension est que l'élimination de l'étoile de Kleene force la taille de l'ensemble à être finie.
MathematicalOrchid
Dépend. Quels autres opérateurs sont autorisés? Si vous autorisez la complémentation, ce que vous dites n'est pas vrai. Vous demandez également la situation avec l'étoile Kleene, vous devez donc clarifier de toute façon.
Raphael

Réponses:

12

Hendrik Jan donne une bonne réponse pour la classe de complexité, mais pas un algorithme lui-même.

L'algorithme le plus simple que je connaisse consiste à convertir l'expression régulière en DFA. Il existe des techniques connues pour convertir une expression régulière en NFA et un NFA en DFA.

Une fois que vous avez deux DFA, le test d'équivalence est efficace et décidable, car la forme minimale d'un DFA est unique jusqu'à l'isomorphisme.

Cependant, la construction de ces DFA à partir de NFA pourrait prendre beaucoup de temps et produire des DFAS extrêmement importants, exponentiellement importants dans le pire des cas.

jmite
la source
10

L'équivalence des expressions régulières est connue pour être PSPACE-complete, ce qui est plutôt mauvais. L'article «Complexité des problèmes de décision pour les expressions régulières simples» énumère plusieurs sous-classes d'expressions régulières avec leurs complexités respectives. ( lien )

Hendrik Jan
la source
1
e2ee
@dkuper Merci pour l'explication supplémentaire. N'hésitez pas à modifier la réponse pour ajouter celle-ci ou des références appropriées. (Ou même commencez votre propre réponse.)
Hendrik Jan
Existe-t-il une référence pour que les expressions régulières générales soient complètes sur PSPACE?
Ryan
Votre lien est mort. Pouvez-vous en fournir une nouvelle ou au moins certaines des informations pertinentes du document?
D. Ben Knoble
@ D.BenKnoble Link fonctionne très bien pour moi.
Hendrik Jan