Aller au contenu principal

TD 6 : automate minimal

Merci à Aurélien et Fabien pour la prise de notes durant les séances de questions-réponses (initialement publiée sur l'instance de démonstration CodiMD, aujourd'hui supprimée).

Pour transformer un automate fini déterministe et complet en automate minimal équivalent :

  1. éliminer les états inaccessibles ;
  2. fusionner les états qui acceptent le même langage.

On obtient finalement le plus petit automate déterministe et complet qui accepte le même langage que l'automate de départ.

Exercice 1 : Calcul d'automate minimal​

(Schéma non disponible : l'image était hébergée sur l'instance de démonstration CodiMD, qui n'existe plus.)

Calcul de la partie accessible​

ItérationAcc
0{q0}\{q_0\}
1{q0,q1,q5}\{q_0, q_1, q_5\}
2{q0,q1,q5,q2,q6}\{q_0, q_1, q_5, q_2, q_6\}
3{q0,q1,q5,q2,q6,q4}\{q_0, q_1, q_5, q_2, q_6, q_4\}
4{q0,q1,q5,q2,q6,q4,q7}\{q_0, q_1, q_5, q_2, q_6, q_4, q_7\}

q3q_3 est un état inaccessible.

Calcul des classes d'équivalence ≡Q\equiv_Q​

On considère au départ que tous les états sont équivalents, puis on enlève ceux qui ne le sont pas. On commence par retirer les couples contenant un état final et un état non final.

q0q_0
q1q_1x
q2q_2
q4q_4x
q5q_5xxx
q6q_6xxxx
q7q_7xxxxx
q0q_0q1q_1q2q_2q4q_4q5q_5q6q_6q7q_7

On fait ensuite la deuxième étape (pour chaque couple, s'il existe une lettre qui le mène vers un couple non équivalent, ce couple est lui aussi non équivalent).

q0q_0
q1q_1
q2q_2
q4q_4x
q5q_5
q6q_6
q7q_7x
q0q_0q1q_1q2q_2q4q_4q5q_5q6q_6q7q_7

Autre présentation/méthode pour trouver les états équivalents :

Recherche des états équivalents

Dessin de l'automate minimal​

(Schéma non disponible : l'image était hébergée sur l'instance de démonstration CodiMD, qui n'existe plus.)

Exercice 2 : Calcul de l'automate minimal​

(Schéma non disponible : l'image était hébergée sur l'instance de démonstration CodiMD, qui n'existe plus.)

Calcul de la partie accessible​

ItérationAcc
0{q0}\{q_0\}
1{q0,q1,q4}\{q_0, q_1, q_4\}
2{q0,q1,q4,q5,q2}\{q_0, q_1, q_4, q_5, q_2\}
3{q0,q1,q4,q5,q2,q3,q6}\{q_0, q_1, q_4, q_5, q_2, q_3, q_6\}
4{q0,q1,q4,q5,q2,q3,q6,q7}\{q_0, q_1, q_4, q_5, q_2, q_3, q_6, q_7\}

Calcul des classes d'équivalence ≡Q\equiv_Q​

On commence par retirer les couples contenant un état final et un état non final.

q0q_0
q1q_1x
q2q_2
q3q_3xx
q4q_4xxx
q5q_5xxxx
q6q_6xxxxx
q7q_7x
q0q_0q1q_1q2q_2q3q_3q4q_4q5q_5q6q_6q7q_7

On fait ensuite la deuxième étape (pour chaque couple, s'il existe une lettre qui le mène vers un couple non équivalent, ce couple est lui aussi non équivalent).

q0q_0
q1q_1
q2q_2
q3q_3x
q4q_4xx
q5q_5xxx
q6q_6x
q7q_7x
q0q_0q1q_1q2q_2q3q_3q4q_4q5q_5q6q_6q7q_7