Skip to content

Cours : Langages réguliers et automates

Soit Σ\Sigma un alphabet fini, c’est-à-dire un ensemble non vide de symboles.

  • Un mot sur Σ\Sigma est une suite finie de symboles de Σ\Sigma. L’ensemble de tous les mots sur Σ\Sigma est noté Σ∗\Sigma^*. Le mot vide est noté ε\varepsilon.
  • Un langage sur Σ\Sigma est une partie de Σ∗\Sigma^*.

Soient L,L1,L2⊂Σ∗L, L_1, L_2 \subset \Sigma^* des langages :

  • Concaténation : L1L2={u1u2∣u1∈L1 et u2∈L2}L_1 L_2 = \{u_1 u_2 \mid u_1 \in L_1 \text{ et } u_2 \in L_2\}.
  • Puissances : L0={ε}L^0 = \{\varepsilon\}, Ln+1=LnLL^{n+1} = L^n L.
  • Étoile de Kleene : L∗=⋃n∈NLnL^* = \bigcup_{n \in \mathbb{N}} L^n.

L’ensemble des langages réguliers sur Σ\Sigma est le plus petit ensemble de langages contenant les langages finis et stable par union, concaténation et étoile de Kleene.

Un AFD est un quintuplé A=(Q,Σ,δ,q0,F)\mathcal{A} = (Q, \Sigma, \delta, q_0, F) où :

  • QQ est un ensemble fini d’états.
  • Σ\Sigma est l’alphabet d’entrée.
  • δ:Q×Σ→Q\delta : Q \times \Sigma \to Q est la fonction de transition.
  • q0∈Qq_0 \in Q est l’état initial.
  • F⊂QF \subset Q est l’ensemble des états acceptants (ou finis).

La fonction de transition s’étend naturellement en δ∗:Q×Σ∗→Q\delta^* : Q \times \Sigma^* \to Q par :

  • δ∗(q,ε)=q\delta^*(q, \varepsilon) = q
  • δ∗(q,ua)=δ(δ∗(q,u),a)\delta^*(q, ua) = \delta(\delta^*(q, u), a) pour tout u∈Σ∗u \in \Sigma^* et a∈Σa \in \Sigma.

Un mot u∈Σ∗u \in \Sigma^* est accepté par A\mathcal{A} si δ∗(q0,u)∈F\delta^*(q_0, u) \in F. Le langage reconnu par A\mathcal{A}, noté L(A)L(\mathcal{A}), est l’ensemble des mots acceptés par A\mathcal{A}.

D. Automates finis non déterministes (AFN et AFN-ε\varepsilon)

Section titled “D. Automates finis non déterministes (AFN et AFN-ε\varepsilonε)”

Un AFN est défini de la même manière, mais sa fonction de transition est δ:Q×Σ→P(Q)\delta : Q \times \Sigma \to \mathcal{P}(Q). Dans le cas d’un AFN-ε\varepsilon, les transitions spontanées sont autorisées : δ:Q×(Σ∪{ε})→P(Q)\delta : Q \times (\Sigma \cup \{\varepsilon\}) \to \mathcal{P}(Q).


📐 2. Théorèmes fondamentaux & Démonstrations clés

Section titled “📐 2. Théorèmes fondamentaux & Démonstrations clés”

A. Théorème de Kleene (Équivalence automates / expressions régulières)

Section titled “A. Théorème de Kleene (Équivalence automates / expressions régulières)”

Énoncé : Un langage est reconnu par un automate fini si et seulement s’il est décrit par une expression régulière.

Démonstration (Sens ⇐\Leftarrow : Expression   ⟹  \implies Automate via Thompson)

Section titled “Démonstration (Sens ⇐\Leftarrow⇐ : Expression   ⟹  \implies⟹ Automate via Thompson)”

Par induction structurelle sur la construction de l’expression régulière :

  1. Cas de base (∅\emptyset, ε\varepsilon, a∈Σa \in \Sigma) : Construction immédiate d’un AFN-ε\varepsilon avec un état initial et un état acceptant.
  2. Union (E1+E2E_1 + E_2) : Soient A1\mathcal{A}_1 et A2\mathcal{A}_2 deux AFN-ε\varepsilon reconnaissant respectivement L(E1)L(E_1) et L(E2)L(E_2). On crée un nouvel état initial q0q_0 avec des ε\varepsilon-transitions vers les états initiaux de A1\mathcal{A}_1 et A2\mathcal{A}_2.
  3. Concaténation (E1E2E_1 E_2) : On relie les états acceptants de A1\mathcal{A}_1 aux états initiaux de A2\mathcal{A}_2 par des ε\varepsilon-transitions.
  4. Étoile (E∗E^*) : On ajoute un nouvel état initial acceptant (par ε\varepsilon-transition) et des boucles ε\varepsilon des états acceptants vers l’état initial.

Démonstration (Sens ⇒\Rightarrow : Automate   ⟹  \implies Expression via le lemme d’Arden)

Section titled “Démonstration (Sens ⇒\Rightarrow⇒ : Automate   ⟹  \implies⟹ Expression via le lemme d’Arden)”

Soit A=(Q,Σ,δ,q1,F)\mathcal{A} = (Q, \Sigma, \delta, q_1, F) avec Q={q1,…,qn}Q = \{q_1, \dots, q_n\}. Pour tout ii, on associe le langage LiL_i reconnu en partant de l’état qiq_i. On obtient un système d’équations langagières de la forme : Li=∑a∈Σ,δ(qi,a)=qjaLj+(ε si qi∈F sinon ∅)L_i = \sum_{a \in \Sigma, \delta(q_i, a) = q_j} a L_j + (\varepsilon \text{ si } q_i \in F \text{ sinon } \emptyset) Lemme d’Arden : Soit A,BA, B deux langages tels que ε∉A\varepsilon \notin A. L’équation X=AX+BX = AX + B admet une unique solution qui est X=A∗BX = A^* B. Par substitution et application successive du lemme d’Arden, on isole L1L_1, qui correspond à l’expression régulière cherchée. ■\blacksquare

B. Déterminisation (Construction par sous-ensembles)

Section titled “B. Déterminisation (Construction par sous-ensembles)”

Énoncé : Pour tout AFN (ou AFN-ε\varepsilon), il existe un AFD reconnaissant le même langage.

Démonstration : Soit A=(Q,Σ,δ,I,F)\mathcal{A} = (Q, \Sigma, \delta, I, F) un AFN. On construit l’AFD D=(P(Σ),Σ,δD,ID,FD)\mathcal{D} = (P(\Sigma), \Sigma, \delta_D, I_D, F_D) tel que :

  • ID=Clε(I)I_D = \text{Cl}_{\varepsilon}(I) (clôture par ε\varepsilon-transitions des états initiaux).
  • δD(S,a)=⋃s∈SClε(δ(s,a))\delta_D(S, a) = \bigcup_{s \in S} \text{Cl}_{\varepsilon}(\delta(s, a)) pour tout S∈P(Q)S \in P(Q) et a∈Σa \in \Sigma.
  • FD={S∈P(Q)∣S∩F≠∅}F_D = \{S \in \mathcal{P}(Q) \mid S \cap F \neq \emptyset\}.

La récurrence sur la longueur du mot montre que δD∗(ID,u)=Clε(δ∗(I,u))\delta_D^*(I_D, u) = \text{Cl}_{\varepsilon}(\delta^*(I, u)), ce qui garantit l’égalité des langages reconnus. ■\blacksquare

C. Le lemme de l’itération (Pumping Lemma)

Section titled “C. Le lemme de l’itération (Pumping Lemma)”

Énoncé : Soit LL un langage régulier. Il existe un entier n≥1n \ge 1 (la constante de pumping, souvent liée au nombre d’états de l’AFD minimal) tel que pour tout mot z∈Lz \in L tel que ∣z∣≥n|z| \ge n, il existe une décomposition z=uvwz = uvw vérifiant :

  1. ∣uv∣≤n|uv| \le n
  2. ∣v∣≥1|v| \ge 1
  3. ∀i∈N,uviw∈L\forall i \in \mathbb{N}, \quad u v^i w \in L

Démonstration : Soit A\mathcal{A} un AFD reconnaissant LL possédant nn états. Soit z=a1a2…amz = a_1 a_2 \dots a_m un mot de LL avec m≥nm \ge n. Considérons la suite des n+1n+1 états visités lors de la lecture des nn premiers symboles de zz : (q0,q1,…,qn)(q_0, q_1, \dots, q_n). Par le principe des tiroirs de Dirichlet, deux de ces états doivent être identiques : soit qi=qjq_i = q_j avec 0≤i<j≤n0 \le i < j \le n. On pose :

  • u=a1…aiu = a_1 \dots a_i
  • v=ai+1…ajv = a_{i+1} \dots a_j
  • w=aj+1…amw = a_{j+1} \dots a_m La boucle sur l’état qi=qjq_i = q_j peut être répétée ii fois sans modifier l’acceptation du mot, ce qui conclut. ■\blacksquare

💡 3. Méthodes classiques de résolution

Section titled “💡 3. Méthodes classiques de résolution”

A. Algorithme de Brzozowski (Minimisation par double inversion)

Section titled “A. Algorithme de Brzozowski (Minimisation par double inversion)”

Pour minimiser un AFD :

  1. Inverser le sens des transitions et échanger états initiaux et finaux (on obtient un AFN).
  2. Déterminiser cet AFN (on obtient un AFD).
  3. Répéter l’opération (inversion + déterminisation). Le résultat est l’AFD minimal et canonique (à isomorphisme près) reconnaissant le langage miroir du langage initial inversé.

B. Algorithme de Moore (Raffinement de partitions)

Section titled “B. Algorithme de Moore (Raffinement de partitions)”

Pour minimiser un AFD A=(Q,Σ,δ,q0,F)\mathcal{A} = (Q, \Sigma, \delta, q_0, F) :

  1. Initialiser une partition Π0={F,Q∖F}\Pi_0 = \{F, Q \setminus F\}.
  2. À l’étape k+1k+1, raffiner Πk\Pi_k en séparant les états pp et qq si pour un symbole a∈Σa \in \Sigma, δ(p,a)\delta(p, a) et δ(q,a)\delta(q, a) n’appartiennent pas au même bloc de Πk\Pi_k.
  3. Stopper lorsque Πk+1=Πk\Pi_{k+1} = \Pi_k. Les blocs de la partition finale constituent les états de l’automate minimal.

  1. Confusion entre AFN et AFD lors de la minoration : Appliquer l’algorithme de Moore ou de Hopcroft sur un automate non déterministe. La minimisation n’est définie et algorithmiquement correcte que pour les AFD émondés (sans états inaccessible).
  2. Mauvaise application du Lemme de l’itération : Le lemme est une condition nécessaire mais non suffisante. Prouver qu’un langage vérifie le Pumping Lemma ne garantit en rien qu’il est régulier.
  3. Oubli des ε\varepsilon-transitions dans la déterminisation : Ne pas calculer la clôture par ε\varepsilon-transitions (Clε\text{Cl}_{\varepsilon}) avant d’appliquer la fonction de transition globale conduit à des automates erronés.
  4. Non-unicité de l’expression régulière : Une expression régulière minimale n’est pas unique, contrairement à l’AFD minimal. Ne cherchez pas à démontrer l’unicité d’une expression par des méthodes automatiques sans passer par les automates.