Définition mathématique des automates finis

Lorsque plusieurs personnes collaborent sur un même projet, elles sont régulièrement amenées à échanger des documents, par exemple des diagrammes représentant le fonctionnement du système à développer. Il est nécessaire que tous les acteurs du projet soient d’accord sur la façon d’interpréter ces diagrammes. S’il y a des ambiguïtés ou des malentendus, le projet peut aboutir à un système qui ne fonctionnera pas de la manière attendue.

Une manière de mettre tout le monde d’accord consiste à choisir des représentations qui s’appuient sur des modèles mathématiques. Ainsi, il devient possible de vérifier rigoureusement si un circuit réalise bien le comportement spécifié. Et cette vérification peut même être automatisée.

Dans ce chapitre, nous donnons un rapide aperçu de la théorie des automates finis tels qu’ils sont utilisés dans le domaine de la conception de circuits logiques. Cet exposé est illustré par l’exemple de la commande d’un robot autonome pour lequel nous avons proposé deux graphes d’états.

Définition générale

Un automate fini est défini par un sextuplet (S,I,Q,s0,fT,fQ)(S, I, Q, s_0, f_T, f_Q) où :

Dans un automate fini, l’ensemble SS contient un nombre fini d’éléments.

Progression de l’état et calcul des sorties

Le fonctionnement d’un automate fini est rythmé par l’arrivée de ses entrées. On notera i0,i1,iNi_0, i_1,\ldots i_N la séquence des entrées présentées à la machine dans l’ordre chronologique.

Initialement, l’automate est dans l’état s0s_0. Lorsque survient l’entrée i0i_0, l’automate produit une sortie q0=fQ(s0,i0)q_0 = f_Q(s_0, i_0) et passe dans l’état s1=fT(s0,i0)s_1 = f_T(s_0, i_0).

Ensuite, au cours du fonctionnement de l’automate, l’arrivée d’une nouvelle entrée iki_k produit une sortie qk=fQ(sk,ik)q_k = f_Q(s_k, i_k) et une mise à jour de l’état sk+1=fT(sk,ik)s_{k+1} = f_T(s_k, i_k).

Par la suite, pour alléger les notations, nous noterons simplement ss, ii et qq l’état, l’entrée et la sortie courants (au lieu de sks_k, iki_k et qkq_k). L’état suivant sera noté ss^* (au lieu de sk+1s_{k+1}).

Signature des fonctions de transition et de sortie

La fonction de transition aura la signature suivante :

fT:{S×IS(s,i)sf_T : \left\{ \begin{array}{ccc} S\times I & \rightarrow & S \\ (s, i) & \mapsto & s^* \end{array} \right.

Dans un machine de Moore, les sorties ne dépendent que de l’état courant. La signature de la fonction de sortie est alors :

fQ,Moore:{SQsqf_{Q,Moore} : \left\{ \begin{array}{ccc} S & \rightarrow & Q \\ s & \mapsto & q \end{array} \right.

Dans une machine de Mealy, les sorties dépendent de l’état courant et de la valeur courante des entrées. Voici la signature correspondante de la fonction de sortie :

fQ,Mealey:{S×IQ(s,i)qf_{Q,Mealey} : \left\{ \begin{array}{ccc} S\times I & \rightarrow & Q \\ (s, i) & \mapsto & q \end{array} \right.

Mise en application sur l’exemple du robot autonome

L’ensemble des états

Notre robot possède quatre états, que nous allons abréger en SRMS_{RM} (Recherche d’un Mur), SSMS_{SM} (Suivi d’un Mur), SRGS_{RG} (Rotation à Gauche) et SRDS_{RD} (Rotation à Droite). L’ensemble des états et l’état initial se définissent donc comme :

S={SRM,SSM,SRG,SRD}s0=SRM\begin{aligned} S &= \{S_{RM}, S_{SM}, S_{RG}, S_{RD}\} \\ s_0 &= S_{RM} \end{aligned}

L’ensemble d’entrées

Le robot se dirige dans le labyrinthe en se fiant aux informations fournies par ses capteurs. Lorsqu’il tourne à gauche ou à droite, il réagit également à un signal indiquant la fin d’une rotation de 90 degrés. L’ensemble des entrées possibles se définit ainsi comme l’ensemble de tous les triplets de booléens (CA,CG,FR)(CA, CG, FR) (Capteur Avant, Capteur Gauche, Fin de Rotation) :

I={0,1}3I = \{0,1\}^3

L’ensemble de sorties

Les actions du robot consistent à commander chaque moteur dans le sens avant ou arrière. Nous avons identifié trois actions (avancer, tourner à droite, tourner à gauche), correspondant à trois combinaisons des commandes des moteurs. Nous y ajoutons une combinaison correspondant à l’arrêt des deux moteurs (toutes les commandes à zéro). L’ensemble des sorties possibles est donc un ensemble de quadruplets de booléens (MGA,MGR,MDA,MDR)(MGA, MGR, MDA, MDR) (Moteur Gauche Avancer, Moteur Gauche Reculer, Moteur Droit Avancer, Moteur Droit Reculer) défini comme suit :

Q={(0,0,0,0),(1,0,1,0),(1,0,0,1),(0,1,1,0)}Q = \{(0,0,0,0), (1, 0, 1, 0), (1, 0, 0, 1), (0, 1, 1, 0)\}

La fonction de transition

La fonction de transition fTf_T est la traduction, en termes mathématiques, des transitions du graphe d’états. Elle est de la forme :

s=fT(s,CA,CG,FR)s^* = f_T(s, CA, CG, FR)

Dans le tableau ci-dessous, chaque ligne correspond à une flèche du graphe d’états :

ss CACA CGCG FRFR ss^*
SRMS_{RM} 0 0 SRMS_{RM}
SRMS_{RM} 0 1 SSMS_{SM}
SRMS_{RM} 1 SRDS_{RD}
SSMS_{SM} 0 1 SSMS_{SM}
SSMS_{SM} 0 SRGS_{RG}
SSMS_{SM} 1 1 SRDS_{RD}
SRGS_{RG} 0 SRGS_{RG}
SRGS_{RG} 1 SRMS_{RM}
SRDS_{RD} 0 SRDS_{RD}
SRDS_{RD} 1 SRMS_{RM}

La fonction de sortie

Dans la section précédente, nous avons proposé deux graphes d’états. Le premier décrivait une machine de Moore, où les sorties ne dépendent que de l’état courant. La fonction de sortie correspondante est de la forme :

(MGA,MGR,MDA,MDR)=fQ,Moore(s)(MGA, MGR, MDA, MDR) = f_{Q,Moore}(s)

Les valeurs des sorties associées à chacun des états sont détaillées dans ce tableau :

ss MGAMGA MGRMGR MDAMDA MDRMDR
SRMS_{RM} 1 0 1 0
SSMS_{SM} 1 0 1 0
SRGS_{RG} 0 1 1 0
SRDS_{RD} 1 0 0 1

Le second graphe d’états décrivait une machine de Mealy, où les sorties dépendent de l’état courant et des entrées. La fonction de sortie correspondante est de la forme :

(MGA,MGR,MDA,MDR)=fQ,Mealy(s,CA,CG,FR)(MGA, MGR, MDA, MDR) = f_{Q,Mealy}(s, CA, CG, FR)

Les valeurs des sorties associées à chacun des états sont détaillées dans ce tableau :

ss CACA CGCG FRFR MGAMGA MGRMGR MDAMDA MDRMDR
SRMS_{RM} 0 1 0 1 0
SRMS_{RM} 1 0 0 0 0
SSMS_{SM} 0 1 1 0 1 0
SSMS_{SM} 1 0 0 0 0
SSMS_{SM} 0 0 0 0 0
SRGS_{RG} 0 0 1 1 0
SRGS_{RG} 1 0 0 0 0
SRDS_{RD} 0 1 0 0 1
SRDS_{RD} 1 0 0 0 0

Résumé

Un automate fini est défini mathématiquement par un ensemble d’états, un ensemble d’entrées, un ensemble de sorties, un état initial, une fonction de transition et une fonction de sortie.

La fonction de transition détermine l’état suivant en fonction de l’état courant et de la valeur des entrées.

Pour une machine de Moore, la fonction de sortie détermine la valeur des sorties en fonction de l’état courant. Pour une machine de Mealy, la fonction de sortie détermine la valeur des sorties en fonction de l’état courant et de la valeur des entrées.