Skip to content

Exercice 1 : Automates finis

Problème Guidé : Analyse et manipulation d’automates finis

Section titled “Problème Guidé : Analyse et manipulation d’automates finis”

Matière : Informatique (Filière MPI)
Chapitre: ** Automates, langages et logique
Thème : Automates finis et opérations régulières


Ce problème aborde la théorie des automates finis, un classique des concours de la filière MPI. L’objectif est d’évaluer la rigueur dans la manipulation formelle des automates, la maîtrise des algorithmes fondamentaux (déterminisation, minéralisation/complémentarité) et la capacité à raisonner sur des structures de transition.

Il est attendu du candidat une rédaction soignée, utilisant un vocabulaire rigoureux et une notation mathématique irréprochable.


Soit Σ={a,b}\Sigma = \{a, b\} un alphabet. On considère l’automate fini non déterministe avec ε\varepsilon-transitions (AFN-ε\text{AFN-}\varepsilon) A=(Q,Σ,δ,q0,F)\mathcal{A} = (Q, \Sigma, \delta, q_0, F) défini par :

  • Q={1,2,3,4}Q = \{1, 2, 3, 4\}
  • q0=1q_0 = 1
  • F={4}F = \{4\}
  • La fonction de transition δ\delta est donnée par le tableau suivant :
QQaabbε\varepsilon
11{1,2}\{1, 2\}∅\emptyset{3}\{3\}
22∅\emptyset{4}\{4\}∅\emptyset
33{2}\{2\}{3}\{3\}∅\emptyset
44∅\emptyset∅\emptyset∅\emptyset

Donner la définition formelle de l’ensemble des ε\varepsilon-transitions et calculer ε-retour(1)\varepsilon\text{-retour}(1), l’ensemble des états accessibles depuis l’état 11 en empruntant uniquement des ε\varepsilon-transitions.

Corrigé : Soit A=(Q,Σ,δ,q0,F)\mathcal{A} = (Q, \Sigma, \delta, q_0, F) un AFN-ε\text{AFN-}\varepsilon. Pour tout sous-ensemble d’états S⊆QS \subseteq Q, la fermeture par ε\varepsilon-transitions, notée ε-retour(S)\varepsilon\text{-retour}(S), est le plus petit sous-ensemble de QQ tel que :

  1. S⊆ε-retour(S)S \subseteq \varepsilon\text{-retour}(S)
  2. Si q∈ε-retour(S)q \in \varepsilon\text{-retour}(S) et q′∈δ(q,ε)q' \in \delta(q, \varepsilon), alors q′∈ε-retour(S)q' \in \varepsilon\text{-retour}(S).

Pour l’état 11 :

  • L’état 11 est inclus trivialement : 1∈ε-retour({1})1 \in \varepsilon\text{-retour}(\{1\}).
  • D’après la table, δ(1,ε)={3}\delta(1, \varepsilon) = \{3\}, donc 3∈ε-retour({1})3 \in \varepsilon\text{-retour}(\{1\}).
  • Pour l’état 33, δ(3,ε)=∅\delta(3, \varepsilon) = \emptyset.

On obtient donc : ε-retour({1})={1,3}\varepsilon\text{-retour}(\{1\}) = \{1, 3\}


Partie II : Déterminisation de l’automate

Section titled “Partie II : Déterminisation de l’automate”

Appliquer l’algorithme de construction par sous-ensembles (algorithme de Rabin-Scott) pour éliminer les ε\varepsilon-transitions et déterminiser l’automate A\mathcal{A}. On notera les états de l’automate déterministe D\mathcal{D} sous forme d’ensembles d’états de A\mathcal{A}.

Corrigé : L’état initial de l’automate déterminisé D\mathcal{D} est I0=ε-retour({q0})=ε-retour({1})={1,3}I_0 = \varepsilon\text{-retour}(\{q_0\}) = \varepsilon\text{-retour}(\{1\}) = \{1, 3\}.

Construisons la table de transition de D\mathcal{D} par exploration successive :

  1. État I0={1,3}I_0 = \{1, 3\} :

    • Trans(I0,a)=ε-retour(⋃q∈{1,3}δ(q,a))=ε-retour({1,2}∪{2})=ε-retour({1,2})=ε-retour({1})∪ε-retour({2})={1,3}∪{2}={1,2,3}\text{Trans}(I_0, a) = \varepsilon\text{-retour}\left(\bigcup_{q \in \{1, 3\}} \delta(q, a)\right) = \varepsilon\text{-retour}(\{1, 2\} \cup \{2\}) = \varepsilon\text{-retour}(\{1, 2\}) = \varepsilon\text{-retour}(\{1\}) \cup \varepsilon\text{-retour}(\{2\}) = \{1, 3\} \cup \{2\} = \{1, 2, 3\}.
    • Trans(I0,b)=ε-retour(⋃q∈{1,3}δ(q,b))=ε-retour(∅∪{3})=ε-retour({3})={3}\text{Trans}(I_0, b) = \varepsilon\text{-retour}\left(\bigcup_{q \in \{1, 3\}} \delta(q, b)\right) = \varepsilon\text{-retour}(\emptyset \cup \{3\}) = \varepsilon\text{-retour}(\{3\}) = \{3\}.
  2. État I1={1,2,3}I_1 = \{1, 2, 3\} :

    • Trans(I1,a)=ε-retour({1,2}∪{2})={1,2,3}\text{Trans}(I_1, a) = \varepsilon\text{-retour}(\{1, 2\} \cup \{2\}) = \{1, 2, 3\}.
    • Trans(I1,b)=ε-retour({4}∪{3})=ε-retour({3,4})=ε-retour({3})∪ε-retour({4})={3,4}\text{Trans}(I_1, b) = \varepsilon\text{-retour}(\{4\} \cup \{3\}) = \varepsilon\text{-retour}(\{3, 4\}) = \varepsilon\text{-retour}(\{3\}) \cup \varepsilon\text{-retour}(\{4\}) = \{3, 4\} (notons que 44 n’a pas de ε\varepsilon-transition).
  3. État I2={3}I_2 = \{3\} :

    • Trans(I2,a)=ε-retour({2})={2}\text{Trans}(I_2, a) = \varepsilon\text{-retour}(\{2\}) = \{2\}.
    • Trans(I2,b)=ε-retour({3})={3}\text{Trans}(I_2, b) = \varepsilon\text{-retour}(\{3\}) = \{3\}.
  4. État I3={2}I_3 = \{2\} :

    • Trans(I3,a)=ε-retour(∅)=∅\text{Trans}(I_3, a) = \varepsilon\text{-retour}(\emptyset) = \emptyset (état puits).
    • Trans(I3,b)=ε-retour({4})={4}\text{Trans}(I_3, b) = \varepsilon\text{-retour}(\{4\}) = \{4\}.
  5. État I4={3,4}I_4 = \{3, 4\} :

    • Trans(I4,a)=ε-retour({2})={2}\text{Trans}(I_4, a) = \varepsilon\text{-retour}(\{2\}) = \{2\}.
    • Trans(I4,b)=ε-retour({3})={3}\text{Trans}(I_4, b) = \varepsilon\text{-retour}(\{3\}) = \{3\}.
  6. État I5={4}I_5 = \{4\} :

    • Trans(I5,a)=∅\text{Trans}(I_5, a) = \emptyset, Trans(I5,b)=∅\text{Trans}(I_5, b) = \emptyset.
  7. État ∅\emptyset (puits) :

    • Trans(∅,a)=∅\text{Trans}(\emptyset, a) = \emptyset, Trans(∅,b)=∅\text{Trans}(\emptyset, b) = \emptyset.

Les états acceptants de D\mathcal{D} sont tous les sous-ensembles SS tels que S∩F≠∅S \cap F \neq \emptyset (avec F={4}F = \{4\}). Il s’agit de {3,4}\{3, 4\} et {4}\{4\}.


Partie III : Analyse critique et propriétés du langage

Section titled “Partie III : Analyse critique et propriétés du langage”

Caractériser le langage L(A)L(\mathcal{A}) reconnu par l’automate.

Corrigé : En observant l’automate initial ou déterminisé, traçons les chemins menant à l’état acceptant 44 :

  • Depuis l’état 11, on peut aller en 33 via ε\varepsilon, puis lire aa pour aller en 22, puis bb pour aller en 44. Cela donne le mot abab.
  • En bouclant sur 33 via bb (b∗b^*), ou en passant par 1→a{1,2}…1 \xrightarrow{a} \{1,2\} \dots Plus formellement, l’examen des transitions montre que le langage accepté est constitué des mots de la forme : L(A)=b∗a(ab)+∪…L(\mathcal{A}) = b^* a (ab)^+ \cup \dots Analyse critique : La déterminisation d’un AFN-ε\text{AFN-}\varepsilon à nn états peut théoriquement produire un automate à 2n2^n états. Ici, l’ensemble des parties de QQ est de cardinal 24=162^4 = 16, mais l’algorithme par sous-ensembles n’a généré que 77 états accessibles ({1,3},{1,2,3},{3},{2},{3,4},{4},∅\{1,3\}, \{1,2,3\}, \{3\}, \{2\}, \{3,4\}, \{4\}, \emptyset). C’est un phénomène classique : l’explosion combinatoire est rarement atteinte sur les cas pratiques issus de problèmes d’ingénierie.

  • Points de vigilance : Ne jamais oublier de calculer la fermeture par ε\varepsilon-transitions lors de l’initialisation et après chaque transition dans l’algorithme de Rabin-Scott.
  • Erreur fréquente : Oublier d’ajouter l’état puits ∅\emptyset lorsqu’un symbole n’a aucune transition sortante dans un automate que l’on souhaite rendre complet.