Automate minimal et minimisation
Nous avons vu au chapitre précédent que tout langage régulier est accepté par un automate fini déterministe. Cependant, il n'y a pas un unique automate fini (déterministe) qui accepte un langage régulier
Comment comparer deux automates finis ? Par exemple, comment décider que les deux AFD de la figure suivantes acceptent le même langage ? Nous avons vu au chapitre 2 comment calculer une expression régulière pour le langage accepté par un automate fini. Mais il n'y a pas de représentation canonique d'un langage régulier par une expression régulière, et la comparaison d'expressions régulières est au moins aussi difficile que la comparaison d'automates finis.
"Deux AFD acceptant les encodages binaires des entiers naturels pairs"
Nous avons également vu au chapite 1 et 2 qu'un automate fini est un algorithme pour résoudre les problèmes de décision représentés par des langages réugliers. Pour un problème de décision régulier donné, il existe une infinité d'automates finis qui l'acceptent. D'un point de vue pratique, il est pourtant important de choisir un petit automate, c'est à dire un algorithme avec aussi peu d'instructions que possible.
Tout d'abord nous montrons qu'il existe un automate minimal unique pour chaque langage régulier. Ceci va nous permettre de parler de représentation canonique de langages réuliers ou encore d'algorithmes minimaux pour les problèmes de décision réguliers. Puis nous présentons un algorithme qui calcule, à partir d'un automate fini déterministe donné, l'automate minimal qui accepte .
Représentation canonique des langages réguliers
Congruence associée à un langage
Nous montrons maintenant que l'existence d'une représentation canonique pour les langages réguliers est une propriété intrinsèque à ces langages.
Soit un langage sur . Deux mots et sont congrus (à droite modulo , noté , si pour tout mot si et seulement si . et sont dit indistinguables pour . La congruence induit une relation d'équivalence. Nous notons la classe d'équivalence de pour .
Intuitivement, si deux mots et ne sont pas congrus modulo , alors il existe un mot tel que et (ou inversement). Ainsi, un automate fini qui accepte , doit, lorsqu'il lit mémoriser une information suffisante pour ne pas confondre et , et in fine accepter . A contrario, si et sont congrus modulo , un automete fini qui accepte n'est plus obligé de distinguer et puisque et conduisent au même verdict. Un automate fini mémorise l'information au moyen de ses états. Ainsi, dans le cas où et ne sont pas congrus modulo , afin de distinguer et , la lecture de ces mots doit conduire l'automate dans deux états distincts. Et inversement, lorsque et sont congrus modulo , leur lecteur peut conduire dans le même état puisqu'il n'est pas nécessaire de les distinguer. Sachant qu'un automate fini possède un nombre fini d'états, et que tout langage régulier est accepté par un automate fini, nous pouvons en déduire une nouvelle caractérisation des langages réguliers.
Soit un automate fini. Le langage de l'état est défini par
Le co-langage de l'état est défini par
Théorème (Congruence droite et régularité)
Un langage est régulier si et seulement si la congruence est d'index fini.
Automate minimal
Nous nous intéressons maintenant à une notion d'automate minimal reconnaissant un langage régulier donné. Nous montrons que chaque état de cet automate correspond à une des classes d'équivalence de . Ses transitions correspondent au passage d'un classe à l'autre : depuis la classe d'équivalence de , la lecture d'un symbole conduit à la classe d'équivalence de .
Soit un langage régulier sur un alphabet . L'automate fini minimal qui accepte est défini par
Notons que est un automate déterministe et complet
Théorème
Pour tout langage régulier , est le plus petit automate fini déterministe et complet tel que
Minimisation des automates finis
La définition d'un automate minimal nous permet de prouver l'existence et l'unicité de l'automate minimal qui accepte un langage donné. Cependant, elle ne permet pas de construire : il faudrait énumérer tous les mots de pour connaître l'ensemble de ses états. Nous présentons maintenant un algorithme qui permet de calculer à partir d'un automate connu qui accepte .
Soit un AFD supposé non minimal. nous pouvons maintenant caractériser la non mminimalité en considérant les langages acceptés depuis chacun des états de . Deux états sont dits équivalents si . On note la relation d'équivalence ainsi définie.
L'équivalence entre états doit être rapprochée de la congruence de . En effet, supposons que et pour deux mots . Alors, puisque , pour tout mot est accepté par si et seulement est accepté par . Il vient alors . L'équivalence entre et est prouvée plus tard. Un automate fini n'est donc pas minimal si et seulement si
- il possède (au moins) un état inaccessible : il existe tel que pour tout
- ou il possède deux états distincts qui sont équivalents :
L'algorithme de minimisation d'un automate procède donc en deux étapes : tout d'abord la suppression des états inaccessibles de , puis la fusion de ses états équivalents.
"Automate fini déterministe et sa partie accessible"
Elimination des états inaccessibles
L'ensemble des états accessibles d'un automate fini est défini par
Intuitivement, les états accessibles d'un automate fini sont les états pour lesquels il existe une séquence de transitions partant d'un état initial et menant jusqu'à .
La restriction d'un automate fini à sa partie accessible est l'automate fini défini par
- premièrement
- de plus
- et
Remarquons que si est déterministe (resp complet) alors est déterministe (resp complet)
La supression des états inaccessibles d'un automate fini ne modifie pas le langage accepté par celui-ci. Cela vient du fait que, par définition, aucun état inaccessible ne peut être rencontré sur une exécution (acceptante) de l'automate.
Théorème
Pour tout automate fini ,
Le calcul de correspond au plus petit point fixe de la fonction contenant les états initiaux . On peut calculer par itérations successives
\begin{align*} Acc(0) &= I \\ Acc(n+1) &= Acc(n) \cup \{q' \in Q | \exists q \in Acc(n). \exists s \in \Sigma. (q,s,q') \in \delta\} \end{align*}
Intuitivement, est l'ensemble des états pour lesquels il existe une
séquence d'au plus transitions menant d'un état initial jusqu'à eux. Nous
calculons donc successivement , puis en utilisant
, puis à partir de , et ainsi de suite jusqu'au
point fixe obtenu lorsque pour une valeur donnée de .
L'algorithme EtatsAccessibles
calcule le plus petit point fixe de .
Entrée : Un automate fini A=(Q,Σ,δ,I,F)
Sortie : access(A) l'ensemble des états accessibles de A
EtatsAccessibles(A):
debut
Acc <- I
Acc' <- ∅
tant que (Acc != Acc') faire
Acc' <- Acc
Acc <- Acc' u {q' ∈ Q | ∃ q ∈ Acc'.∃ s ∈ Σ .(q,s,q') ∈ δ}
fin tant que
retourner Acc
fin
Théorème
Pour tout automate , l'algorithme EtatsAccessibles
calcule en temps
Fusion des états équivalents
Nous considérons maintenant des automates finis déterministes et complets, sans états inaccessibles. Nous avons vu au chapitre 5 comment déterminiser tout AFN. Tout automate peut être rendu complet par la procédure de complétude vue au chapitre 1. Enfin, la section précédente décrit comment calculer l'ensemble des états accessibles d'un automate fini, puis comment le restreindre à sa partie accessible.
Il nous reste maintenant à fusionner les états équivalents de l'automate , c'est à dire les états et tels que . Pour cela, il faut donc calculer quels états de acceptent le même langage c'est à dire la relation .
Une fois connue la relation , nous pouvons définir l'automate fini minimal qui accepte le même langage que l'automate donné.
Soit un automate fini déterministe, complet et sans états inaccessibles. L'automate minimal équivalent à est défini par
Nous montrons maintenant que l'automate minimal équivalent à correspond à , l'automate minimal qui accepte le langage accepté par .
Théorème
Pour tout automate fini déterministe complet et sans états inaccessibles, .
Les relations et sont équivalentes pour
tel que . Mais en pratique,
pour calculer ou , il est nécessaire de travailler sur
une structure finie. est en général infini, mais nous pouvons travailler
soit sur une expression régulière de langage , soit sur un automate fini
qui accepte . Nous présentons donc l'algorithme Partition
de calcul de
pour un automate fini déterministe complet et sans états
inaccessibles . L'algorithme Partition
maintient
un ensemble de couples d'états tels que
- si , alors
- et si , on fait l'hypothèse que
Entree: A=(Q,Sigma,delta,q_0,F) AFD complet sans états inacssibles
Sortie: P telle que (q,q') dans P si et seulement si q equiv q'
Partition(A)
debut
P' <- Q . Q
P <- Q . Q
pour tout q dans F et q' pas dans F faire
retirer (q,q') et (q',q) de P
tant que (P différent P') faire
P' <- P
pour tout (q,q') dans P faire
pour tout s dans Sigma faire
si (succ(q,s),succ(q',s)) pas dans P' alors
retirer (q,q') et (q',q) de P
fin si
fin pour
fin pour
fin tant que
retourner P
fin
Le principe de l'algorithme est de faire tendre la relation vers par raffinements successifs en retirant les couples de dès que l'hypothèse est invalidée.
Partition
fait l'hypothèse initiale que tous les états sont équivalents pour- nous savons que pour tous états tels que et puisque alors que . La première boucle retire donc de toutes les paires d'états distinguables selon ce critère
- enfin, supposons que et qu'il existe un symbole et deux états tels que et avec . Alors nous avons la certitude puisque implique que et est déterministe. De tels couples sont détectés et éliminés de dans la boucle tant ue.
Le point fixe est atteint lorsque , conservant la valeur de au raffinement précédent, donc lorsque ne contient plus que des couples tels que
Théorème
Pour tout AFD complet sans états inaccessibles , l'algorithme précédant calcule en temps