Définition
Un automate fini déterministe (AFD) $\mathcal{A}$ est défini comme un quintuplet $(\Sigma, Q, \delta, q_0, F)$ où :
- $\Sigma$ est un alphabet fini de symboles ;
- $Q$ est un ensemble fini d'états ;
- $\delta : Q \times \Sigma \to Q$ est une fonction de transition ;
- $q_0 \in Q$ est l'état initial ;
- $F \subseteq Q$ est un ensemble d'états finaux ou acceptants.
La reconnaissance d'un mot $w = a_1a_2\ldots a_n \in \Sigma^*$ par l'automate se fait en déterminant si une suite d'applications de $\delta$ depuis $q_0$ aboutit à un état de $F$.
Notions associées
État initial : L'état $q_0$ à partir duquel commence toute exécution de l'automate.
État final : Un état $q \in F$ où l'automate accepte un mot.
Transition : Une relation définie par $\delta(q, a) = q'$, représentant un passage de l'état $q$ à $q'$ par la lecture du symbole $a$.
Chemin : Une séquence d'états $q_0, q_1, \ldots, q_n$ telle que pour chaque $i$, il existe une transition $\delta(q_i, a_{i+1}) = q_{i+1}$.
État accessible : Un état $q \in Q$ tel qu'il existe un chemin de $q_0$ à $q$.
État co-accessible : Un état $q \in Q$ tel qu'il existe un chemin de $q$ à un état final.
État puits : État dans lequel l'automate peut entrer, mais une fois qu'il y est, il ne peut pas en sortir. Aucun mot reconnu par l'automate ne peut y être validé.
Graphe émondé : Le graphe obtenu en retirant tous les états qui ne sont ni accessibles ni co-accessibles.
Langage reconnu : L'ensemble des mots $L \subseteq \Sigma^*$ tels que $\hat{\delta}(q_0, w) \in F$.
Exemple
Soit un automate $\mathcal{A}$ défini par :
- un alphabet $\Sigma = \{a, b\}$ ;
- un ensemble d'état $Q = \{q_0, q_1, q_2, q_3\}$ ;
- une fonction de transition $\delta : Q \times \Sigma \to Q$, définie par :
$$ \begin{aligned} \delta(q_0, a) &= q_1, \\ \delta(q_0, b) &= q_1, \\ \delta(q_1, b) &= q_2, \\ \delta(q_1, a) &= q_3, \\ \delta(q_2, a) &= q_2. \end{aligned} $$
- un état initial $q_0 \in Q$, représenté par la flèche d'entrée dans l'automate ;
- un état final $q_2 \in Q$, représenté par l'état avec une bordure double.
Voici sa représentation graphique :
Cet automate reconnaît par exemple les mots :
- ab en passant de l'état $q_0$ à $q_1$ avec la transition a, et de $q_1$ à $q_2$ avec la transition b ;
- bbaa en passant de l'état $q_0$ à $q_1$ avec la transition b, de $q_1$ à $q_2$ avec la transition b, puis en bouclant deux fois sur $q_2$ avec la transition a.
Les mots aa ou abba ne sont en revanche pas reconnus par cet automate et ne font pas partie de son langage.
Automate complet et incomplet
Un automate fini peut être complet, avec pour chaque état et chaque symbole de l'alphabet, une transition qui est définie, ou incomplet, avec certains états pour lesquels aucune transition n'est spécifiée pour certains symboles de l'alphabet.