Il existe différents algorithmes pour convertir des expressions régulières en automates finis. Vous pouvez passer directement d'expressions régulières aux DFA sans construire d'autre automate en effectuant implicitement la construction du sous-ensemble lors de la génération de l'automate. Une autre option pour obtenir directement des automates déterministes est d'utiliser la méthode des dérivés.
Vérifier si une expression régulière représente la langue contenant toutes les chaînes est un problème complet de PSPACE (voir cette réponse pour une référence). Vérifier si un DFA accepte que le langage puisse être fait en temps polynomial, donc si vous passez directement d'une expression régulière à un DFA, il y aura une explosion quelque part.
Ma compréhension de la littérature est que nous pouvons choisir des traductions qui nous permettent de localiser l'explosion. Cela signifie qu'il existe différentes façons de passer d'une expression régulière à un automate fini, et les méthodes linéaires ou polynomiales sont préférées. Habituellement, les coûts exponentiels sont poussés dans la détermination des automates.
Il y a eu beaucoup de travail pour identifier les sous-familles d'expressions régulières à partir desquelles nous pouvons générer efficacement des DFA. Cette ligne de travail dépend de la traduction que vous utilisez. En d'autres termes, vous corrigez un mappage des expressions régulières vers les NFA et essayez de caractériser les expressions régulières mappées vers les DFA.
La construction standard d'automates à partir d'expressions régulières n'est pas la construction préférée dans un tel travail. Les constructions de choix produisent des automates qui ressemblent étroitement à la structure de l'expression régulière. Ces constructions utilisent la notion de dérivée d'une expression régulière.
Dérivés d'expressions régulières , JA Brzozowski. 1964.
srunera
Dérivés partiels d'expressions régulières et de constructions d'automates finis , V. Antimirov. 1995.
Si vous pensez à un état d'un automate comme une représentation de toutes les chaînes acceptées à partir de cet état, les dérivées (partielles) vous permettent de traiter les expressions régulières comme des états . Contraste avec la construction de manuel standard qui traite intuitivement les expressions régulières comme des automates, pas des états.
Des expressions régulières aux automates déterministes , G. Berry et R. Sethi, 1986.
La correspondance entre les expressions régulières et les états d'un automate et du déterminisme est explicitement discutée par Berry et Sethi, qui combinent la notion de dérivés de Brzozowski avec l'idée de distinguer les occurrences du même symbole pour donner une traduction syntaxique des expressions régulières en finies. automates.
One-Unambiguous Regular Languages , A. Brüggemann-Klein et Derick Wood, 1998.
Cet article s'appuie sur des travaux antérieurs de Brüggemann-Klein et étudie des cas dans lesquels vous pouvez utiliser des dérivés pour générer des DFA en temps polynomial. Il y a une grande quantité de travail suite à ce document. Il était important du point de vue des technologies Web, car les expressions régulières pouvant être manipulées efficacement (c'est-à-dire correspondant aux DFA) étaient importantes pour le traitement de SGML et XML.
De nombreux travaux ont été consacrés à l'étude d'autres cas particuliers d'expressions régulières déterministes. Un article très récent étudiant quand certains de ces problèmes peuvent être résolus en temps linéaire date de 2012.
Expressions régulières déterministes en temps linéaire , Benoit Groz, Sebastian Maneth, Slawomir Staworko. 2012.