Utilisateur:ManiacParisien/Brouillons/Bio
En informatique théorique, et tout particulièrement en théorie des langages formels, le problème de l'équivalence d'automates est de déterminer si deux automates acceptent (ou reconnaissent) le même langage. Ce problème s'inscrit dans le cadre plus général qui consiste à déterminer si deux mécanismes de reconnaissance (comme les machines de Turing ou des automates à pile) acceptent le même langage ou si deux procédés de production (comme les grammaires formelles ou des règles de réécriture) engendrent le même langage.
Équivalence d'automates finis modifier
Deux automates finis sont équivalents s'ils acceptent le même langage. Plusieurs algorithmes existent pour décider si deux automates finis sont équivalents.
Un algorithme naïf modifier
Étant donnés deux automates finis déterministes et sur un alphabet commun reconnaissant respectivement les langages et , les constructions, sur les automates, des opérations booléennes sur les langages permettent de construire un automate qui reconnaît la différence symétrique . Ce ensemble est vide si et seulement si . Le test revient donc à tester si le langage reconnu par l'automate est vide.
Algorithme par minimisation et bijection modifier
Étant donnés deux automates finis déterministes et sur un alphabet commun , pour savoir s'ils reconnaissant le même langage, on minimise dans une première étape et et, dans une deuxième étape, on teste l'égalité des automates minimaux. En effet, il n'existe qu'un seul automates minimal, à isomorphisme près, pour une langage donné. Le test d'isomorphie se code comme suit[1]. On teste l'égalité par la tentative de construire deux bijections, l'une étant la réciproque de l'autre, entre les deux automates minimaux ; dans le code suivant essaie de construire les fonctions et :
Bij , si un seul de et est défini ou si et sont définis et f(q_1)\ne q_2 retourner faux si f(q1) et h(q2) ne sont pas définis f(q1) := q2; h(q2) := q1; pour toute lettre faire Bij retourner vrai
La procédure est appelée sur les états initiaux des deux automates
Algorithme de Hopcroft et Karp modifier
John Hopcroft et Richard Karp ont décrit[2], dans un rapport technique paru en 1971 un algorithme pour tester l'équivalence de deux automates finis déterministes basé sur la construction d'une partition des états de l'union des deux automates. Le rapport technique n'a pas donné lieu à publication, le titre « A linear time algorithm ... » est trompeur parce que l'algorithme, qui utilise la structure de données union-find, n'est en fait pas linéaire[3].
Soient donnés deux automates finis déterministes et sur un alphabet commun . On suppose que les ensembles d'états sont disjoints ( ) et on pose .
Code modifier
Le code de l'algorithme est le suivant[4] :
equiv , si un seul de et est terminal retourner faux = FIND ; = FIND = UNION pour toute lettre faire equiv retourner vrai
La fonction est appelée par
- equiv ,
Exemple modifier
La partition en classes évolue comme suit :
1|2|3|4|5|6|7 15|2|3|4|6|7 15|26|3|4|7 15|236|4|7 15|236|47
Les deux automates sont donc équivalents puisque chaque classe contient seulement des états terminaux ou seulement des états non-terminaux.
Notes et références modifier
- Kucherov 2011.
- Hopcroft et Karp 1971.
- Une discussion détaillée de ce point est donnée dans la thèse de maîtrise de Daphne A. NortonNorton 2009, p. 45-46.
- Kucherov 2011.
Bibliographie modifier
- John Hopcroft et Richard Karp, « A linear algorithm for testing equivalence of finite automata », Technical Report, Berkeley, Univeristy of California, no TR 71-114, .
- « Une contribution originale sur le problème classique de l'équivalence des langages », Actualité de l'ENS de Lyon,
- Filippo Bonchi et Damien Pous, « Hacking nondeterminism with induction and coinduction », Communications of the ACM, vol. 58, no 2, , p. 87–95 (ISSN 0001-0782, DOI 10.1145/2713167, présentation en ligne).
- Filippo Bonchi et Damien Pous, « Hopcroft and Karp’s algorithm for non-deterministic finite automata », prépublication, (HAL hal-00639716, lire en ligne, consulté le ).
- Gregory Kucherov, « Application de CLASS/UNION : Test d'équivalence de deux automates déterministes », Université de Marne-la-Vallée, , p. 509-512 (PowerPoint).
- Daphne A. Norton, « Algorithms for testing equivalence of finite automata, with a grading tool for JFLAP », M. S. Project Report, Department of Computer Science - Rochester Institute of Technology, (consulté le ).