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 donné.
Comment comparer deux automates finis ? Par exemple, comment décider que les deux AFD de la figure suivante 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 aux chapitres 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éguliers. 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 (à renommage des états près) pour chaque langage régulier. Ceci va nous permettre de parler de représentation canonique des langages réguliers, 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 dits indistinguables pour . La relation est une relation d'équivalence, compatible avec la concaténation à droite ( implique ). 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 automate 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 lecture 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é, Myhill-Nerode)
Un langage est régulier si et seulement si la congruence est d'index fini (elle possède un nombre fini de classes d'équivalence).
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'une 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 . Il est unique à renommage des états près.
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-minimalité 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 et que . Alors, puisque , pour tout mot , est accepté par si et seulement si est accepté par . Il vient alors . L'équivalence entre et est prouvée plus loin. Un automate fini déterministe et complet 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.
Élimination 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 suppression 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 contenant les états initiaux de la fonction . On peut le calculer par itérations successives :
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' ∪ {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 au plus itérations de la boucle (chaque itération qui ne termine pas ajoute au moins un état), soit un temps pour cette version naïve. Un parcours en largeur depuis ramène ce coût à .
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étion 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, (à renommage des états près).
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 du 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 .
Entrée : A=(Q,Σ,δ,q_0,F) AFD complet sans états inaccessibles
Sortie : P tel que (q,q') ∈ P si et seulement si q ≡ 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 de P') faire
P' <- P
pour tout (q,q') dans P faire
pour tout s dans Σ 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.
Partitionfait 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 que puisque implique que et que est déterministe. De tels couples
sont détectés et éliminés de dans la boucle
tant que.
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édent calcule en temps : au plus itérations de la boucle tant que, chacune examinant couples pour symboles. L'algorithme de Hopcroft réalise la même minimisation en .