Minimisation d’un automate
Minimiser un automate, c’est trouver un automate équivalent qui possède le plus petit nombre d’états possible. Même un automate sans état inutile peut encore être simplifié.
Exemple
Prenons cet automate :
Il n’accepte que les mots 01 et 11. Il est pourtant évident qu’il existe un automate plus simple, à trois états, qui accepte le même langage. Les états q1 et q2 peuvent être fusionnés en un nouvel état {q1 ; q2} ; les transitions qui menaient à q1 ou à q2 mèneront au nouvel état, et de même pour les transitions qui partaient de q1 et q2. On obtient cet automate :
Cet automate accepte manifestement le même langage que le précédent et il a moins d’états.
Équivalence d’états
Soit un automate A = (Q ; Σ ; δ ; q0 ; F). On définit le langage d’un état q ∈ Q, noté L(q), par
C’est-à-dire que l’on remplace l’état initial q0 de l’automate A par q et que l’on détermine le langage accepté par cet automate. Autrement dit, le langage L(q) contient tous les mots w tels que, dans l’automate A, on arrive de l’état q à un état final en lisant le mot w. Si l’on revient à l’automate précédent, on a L(q1) = {1}.
On dit que deux états distincts q1 et q2 sont équivalents si
Qu’est-ce que cela signifie ? Si les états q1, q2 sont équivalents, alors, quand on en fait des états initiaux de l’automate, ils engendrent le même langage. Autrement dit : si l’automate arrive dans la configuration (q1 ; w) et dans la configuration (q2 ; w), il doit, dans les deux cas, soit accepter, soit rejeter.
Revenons à l’automate précédent : les états q1 et q2 sont équivalents, car quand on est dans l’état q1, on ne peut accepter le mot d’entrée que si la partie non lue du mot est égale à 1. Il en va de même dans l’état q2.
Minimiser un automate consiste donc à trouver les états équivalents et à les supprimer en les fusionnant en un nouvel état, comme nous l’avons fait dans l’exemple ci-dessus.
Comment trouver les états équivalents
Quels états ne sont certainement pas équivalents ? Un état final et un état non final ne sont sûrement pas équivalents, car le langage d’un état final est différent de celui d’un état non final : un état final accepte à coup sûr le mot ε, un état non final ne l’accepte pas. Montrons la méthode directement sur un exemple. Prenons cet automate :
On commence par créer deux ensembles d’états
Nous créons maintenant la table de transition en gardant l’information sur les classes S1 et S2 :
Modifions maintenant la table : au lieu d’écrire directement dans quels états on arrive pour chaque lettre, on note seulement la classe dans laquelle on arrive. Par exemple, de l’état q3 avec 0, on arrive à l’état q5, qui est dans la classe S2. Au lieu de q5, on écrit donc S2 dans la table :
Nous subdivisons maintenant les deux classes. On met dans une même classe les états qui vont dans les mêmes classes pour toutes les lettres. Par exemple, les états q3 et q6 ne seront pas dans la même classe, car ni avec 0 ni avec 1 ils ne vont dans la même classe. En revanche, les états q1 et q2 seront dans la même classe, car aucun des deux n’a de transition pour 0 et tous deux vont dans la classe S1 pour 1. Nous créons ainsi de nouvelles classes :
Dans chaque classe, les transitions sont les mêmes. Nous nommons les classes ainsi obtenues et déterminons de nouveau dans laquelle de ces nouvelles classes les états arrivent :
On procède alors à un nouveau partage des classes. Mais on voit qu’on ne peut plus en faire d’autre, on obtiendrait les mêmes classes : en effet, les états q1 et q2 ont certes les mêmes transitions vers les classes, mais ils sont déjà dans la même classe et il n’y a pas d’autre état dans la classe S4. L’algorithme de recherche des états équivalents est terminé. Dans chaque classe, il suffit de choisir un état, on supprime les autres et toutes les transitions qui menaient aux états supprimés mèneront à l’état choisi.
On peut ainsi choisir que notre nouvel automate aura les états q3, q6, q0, q1, q4 et que l’on supprime les états q2 et q5. Toutes les transitions qui menaient à q2 mèneront maintenant à q1 et toutes celles qui menaient à q5 mèneront à q4 :
Méthode de minimisation d’un automate
- On supprime les états inaccessibles,
- on supprime les états inutiles,
- on supprime les états équivalents.
Sources
Chapitres: États inaccessibles, États inutiles, Minimisation d’un automate