Chapitre AF TLC
Chapitre AF TLC
Chapitre II
Automates à états finis
Yousra Hlaoui
Introduction 1/3
Introduction 2/3
Exécution d’un automate à états finis
Un automate à états finis s’exécute sur une machine qui se compose de :
1 Un ruban d’entrée divisé en cases dont chacune contient un seul symbole du
mot à reconnaı̂tre. Les autres cases contiennent des ϵ
2 Une tête de lecture qui se déplace de gauche vers la droite en pointant la case
du symbole à lire du mot d’entrée.
3 Un contrôleur d’états qui donne l’état qui suit létat courant en fonction du symble
lu.
Cette machine fonctionne comme suit :
Au départ l’état courant du controleur de la machine est l’état initial de
l’automate et le mot d’entrée est placé sur le ruban. La tête de lecture pointe la
première case contenant le premier symbole du mot d’entrée.
À chaque étape de l’exécution de l’automate, la machine lit un symbole du
ruban, détermine l’état suivant au moyen de la transition courante puis avance la
tête de lecture vers la case suivante du ruban.
La machine s’arrête lorsque tous les symboles ont été lus. Le mot est accepté si
la machine se trouve alors dans un état final de l’automate.
Yousra Hlaoui (FST-DSI) Automates à états finis 4/1
Introduction
Introduction 3/3
a
p q Contrôleur p
Automate
Contrôleur q
Exemple
Représentation graphique d’un automate fini Définition formelle
b b
a S = {s0 , s1 , s2 } ;
a Σ = {a, b} ;
s0 s1 s2 δ(s0 , a) = s1 , δ(s0 , b) = s0 ,
a
δ(s1 , a) = s2 , δ(s1 , b) = s1 ,
δ(s2 , a) = s1 , δ(s2 , b) = s0 ;
b s0 est l’état initial ;
SF = {s0 , s2 }.
Exemple 1
Un automate fini qui accepte le langage {a}∗ .
a
s0
Exemple 2
Un automate fini qui accepte le langage {a}+ .
a
a
s0 s1
s0 s1
a
Exemple 4
Un automate fini qui accepte le langage {aaa}∗ aa ou
{ω ∈ {a}∗ /|ω| = 3k + 2, k ≥ 0}
a a
s0 s1 s2
b b b
a a
s0 s1 s2
Exemple 6
Un automate fini acceptant {ω ∈ {a, b, c}∗ ayant aba comme facteur}
b, c a a, b, c
a b a
s0 s1 s2 s2
c
b, c
b b
a a
q0 q1 q2 (1) Les configurations pour le mot aa
(q0 , aa), (q1 , a), (q2 , ε)
b (2) Les configurations pour le mot bba
(q0 , bba), (q0 , ba), (q0 , a), (q1 , ε)
b b
a a
q0 q1 q2
(1) (q0 , aa) ⊢ (q1 , a) ⊢ (q 2 , ε)
b (2) (q0 , bba) ⊢ (q0 , ba) ⊢ (q0 , a) ⊢ (q1 , ε)
A b b
b b b
a a
q0 q1 q2
1 aa ∈ L(A) par ce que : (q0 , aa) ⊢2A (q2 , ε) puisque (q0 , aa) ⊢A (q1 , a) ⊢kA (q2 , ε),
avec q2 ∈ F .
2 bba ∈ / L(A) par ce que : ∄k /(q0 , bba) ⊢kA (q2 , ε). En effet :
(q0 , bba) ⊢A (q0 , ba) ⊢A (q0 , a) ⊢A (q1 , ε) avec q1 ∈
/ SF
Exercice
Soit l’automate A suivant :
b b b
a a
q0 q1 q2
Questions :
1 Quel est le langage reconnu par l’automate A ?
2 Est-ce que le mot ε est accepté par A ?
Exercice
Soit l’automate A suivant :
b b b
a a
q0 q1 q2
Réponse :
1 L(A) = {ω ∈ {a, b}∗ /|ω|a = 3k + 2, k ≥ 0} ∪ {ω ∈ {a, b}∗ /|ω|a = 3k , k ≥ 0}
2 ε ∈ L(A) car (q0 ∈ SF et (q0 , ε) est une configuration finale et initiale.
Automates Déterministes
Automate Complet
Définition
Un automate fini sur l’alphabet Σ est dit complet ssi pour chaque symbole a de Σ et
chaque état q, il existe au moins une transition étiquetée par a qui quitte q.
a
q0 q1
Remarque
On peut toujours compléter un automate en ajoutant un état puit dans lequel vont
aller toutes les transitions non prévues.
a, b a, b
b a
∅ q0 q1
a a, b
a
q0 q1
Remarque
Un automate complet et non ambiguë, il est déterministe
Ils sont plus faciles à construire. La construction d’un automate non déterministe
peut être automatisée à partir d’une expression régulière
Pour certains langages, on ne peut avoir que des machines non déterministes
pour les reconnaı̂tre.
Description
Les automates finis non déterministes sont des automates finis où l’on permet :
Plusieurs transitions étiquetées par la même lettre quittent certains états,
Des transitions sur le mot vide (c’est-à-dire sans avancer dans le mot d’entrée)
des transitions sur des mots de longueur supérieure à 1 (regroupement de
transitions)
Remarque
Dans un automate fini non déterministe, la relation de transition n’est pas
nécessairement totale : il n’est pas complet.
Définition
Un Automate Fini Non Déterministe (AFND) est défini par M = (S, Σ, ∆, s, SF ), avec :
S est un ensemble fini d’états,
Σ est un alphabet,
∆ ⊂ (S × Σ∗ × S) (sous-ensemble fini) est la relation de transitions,
s0 ∈ S est l’état initial,
SF ⊆ S est l’ensemble des états accepteurs.
Propriétés
Si M est non déterministe alors :
1 ∃ ω ∈ Σ∗ possédant au moins deux exécutions différentes ou,
2 ∃ ω ∈ Σ∗ pour lequel nous avons un blocage c.a.d : (s, ω) ⊢∗M (q, ω ′ ), avec
ω ′ ̸= ε et la configuration (q, ω) n’a pas de configuration successeur.
Définition
Deux automates M1 et M2 sont équivalents s’ils acceptent le même langage,
c’est à dire L(M1 ) = L(M2 ).
Théorème
Pour tout automate fini non déterministe, il est possible de construire un
automate fini déterministe équivalent
Principe de la construction
On peut toujours remplacer un automate non déterministe par un autre
déterministe équivalent en :
1 éliminant les transitions sur des mots de longueurs supérieure à 1,
2 éliminant les transitions sur le mot vide ainsi que les transitions non
exclusives qui causent le non-déterminisme.
aba a b a
q1 q2 ⇒ q0 q1 q2 q3
2. élimination du non-déterminisme
Correspondre chaque état de l’automate déterministe à un ensemble d’états
de l’automate non-déterministe.
q1 {q0 , q1 }
a a a
q0 ⇒ {q0 }
b b
q2 {q2 }
Formalisation de la construction
Soit un automate non déterministe M = (S, Σ, ∆, s, SF ), construisons un automate
déterministe M ′ = (S ′ , Σ, δ ′ , s′ , SF′ ) équivalent à M. Définissons les éléments de
l’automate M ′ .
1. élimination des transitions sur les mots de longueur > 1
M ′ = (S ′ , Σ, ∆′ , s′ , SF′ ) ne contient pas des transitions sur des mots de longueur > 1 :
∀ (q, u, q ′ ) ∈ ∆′ , |u| ≤ 1
Formalisation de la construction
2. élimination du non-déterminisme
L’idée est de regrouper toute suite de transitions sur le mot ε avec une transitions sur
un élément de Σ afin d’éliminer les transitions sur ε. Soit E(q) l’ensemble des états p
qui peuvent être atteints à partir d’un état q d’un automate M à travers des transitions
étiquetées par ε.
E(q) = {p ∈ S | (q, ω) ⊢∗M (p, ω)}.
Les éléments de l’automate M ′ déterministe sont :
1 L’ensemble des états S ′ = 2S de M ′ est l’ensemble des sous-ensembles des
états de M. Chaque état de l’automate déterministe correspond à un ensemble
d’états de l’automate non déterministe.
2 L’état initial s′ de M ′ est s′ = E(s), où s est l’état initial de M.
3 La fonction de transition δ ′ doit regrouper les transitions possibles de M. δ ′ (q, a)
sera l’ensemble des états qui, dans M, peuvent être atteints à partir d’un des
états qi ∈ q par une suite de transitions dont la première est étiquetée par
a ∈ Σ et les suivantes par le mot ε.
Ainsi δ ′ (q, a) = {E(p)/∃qi ∈ q : (qi , a, p) ∈ ∆}
S
1 Début
2 D états := ∅
3 Appliquer ε − fermeture(e) sur l’état initial, e = s0
4 T := ε − fermeture(s0 )
5 D états := D états ∪ T
6 PourChaque symbole a De Σ Faire
7 U := ε − fermeture(Transiter (T , a));
8 Si U n’appartient pas à D états Alors
9 ajouter U comme super-état à D états
10 TransD[T , a] := U
11 FinSi
12 FinPour
13 Fin
Calcul de ε − fermeture(T )
1 Début
2 PourChaque état e De T Faire
3 PourChaque état s avec ε-transition De e Faire
4 Si si s n’est pas dans ε − fermeture(e) Alors
5 ajouter s à ε − fermeture(e)
6 appliquer ε − fermeture(s)
7 FinSi
8 FinPour
9 FinPour
10 Fin
Application de la méthode
Rendre déterministe l’automate M 1. élimination des transitions de longueur > 1
a a
ab a b
1 2 1 2′ 2
M ε ε
0 0
ε ε
3 4 3 4
c c
a c a c
a, b, c
Théorème
L’automate optimal est unique à un renommage d’état près.
Application de la minimalisation
a b b
A B D E
a
a
a
Processus de Minimalisation de A :
G1 G2
Π0
(ABCD) (E)
Application de la minimalisation
a b b
A B D E
a
a
a
Processus de Minimalisation de A :
G1 G2
Π0
(ABCD) (E)
G1 G2
Π1 (E)
(ABC) (D)
Application de la minimalisation
Minimaliser le nombre d’états de l’automate M suivant :
b
M
C b
b
a
a b b
A B D E
a
a
a
Processus de Minimalisation de A :
G1 G2
Π0
(ABCD) (E)
G1 G2
Π1 (E)
(ABC) (D)
G1 G2
Π2 (D)(E)
(A, C) (B)
Application de la minimalisation
Minimaliser le nombre d’états de l’automate M suivant :
b
M
C b
b
a
a b b
A B D E
a
a
a
Processus de Minimalisation de A :
G1 G2
Π0
(ABCD) (E)
G1 G2
Π1 (E)
(ABC) (D)
G1 G2
Π2 (D)(E)
(A, C) (B)
G1 G2
Π3 (D)(E)
(AC) (B)
Application de la minimalisation
Minimaliser le nombre d’états de l’automate M suivant :
b
M
C b
b
a
a b b
A B D E
a
a
a
Processus de Minimalisation de A :
G1 G2
Π0
(ABCD) (E)
G1 G2
Π1 (E)
(ABC) (D)
G1 G2
Π2 (D)(E)
(A, C) (B)
A B D E
Application de la minimalisation
Minimaliser le nombre d’états de l’automate M suivant :
b
M
C b
b
a
a b b
A B D E
a
a
a
Processus de Minimalisation de A :
b a
G1 G2 ′
Π0 M
a
(ABCD) (E) A B
G1 G2 a
Π1 (E) a
(ABC) (D) b b
G1 G2
Π2 (D)(E) E D
(A, C) (B) b
A B D E
′
On obtient l’automate M minimal, avec :
Lemme 1
Si un langage est dénoté par une expression régulière, il est accepté par un automate
fini non déterministe.
Lemme 2
Si un langage est accepté par un automate fini non déterministe, il est régulier.
Yousra Hlaoui (FST-DSI) Automates à états finis 33 / 1
Automates finis et Langages Réguliers Propriétés des langages réguliers (LR)
Propriété 1
Si L1 et L2 sont des langages réguliers alors L1 + L2 est un langage régulier.
Preuve
Pour montrer que L1 + L2 est un langage régulier, il suffit de construire un automate fini
qui accepte L1 + L2 à partir des automates finis qui acceptent respectivement L1 et L2
Soient A1 = (S1 , Σ1 , ∆1 , s01 , SF1 )/L(A1 ) = L1 et A2 = (S2 , Σ2 , ∆2 , s02 , SF2 )/L(A2 ) = L2
On construit A = (S, Σ, ∆, s0 , SF )/L(A) = L1 + L2 comme suit :
S = S1 ∪ S2 ∪ {s0 }
Σ = Σ1 ∪ Σ2
∆ = ∆1 ∪ ∆2 ∪ {(s0 , x, q)/(s01 , x, q) ∈ ∆1 ou (s02 , x, q) ∈ ∆2 }
SF = SF1 ∪ SF2 ∪ {s0 } si s01 ∈ SF1 ou s02 ∈ SF2
SF1 ∪ SF2 sinon
.
Propriété 2
Si L1 et L2 sont des langages réguliers alors L1 .L2 est un langage régulier.
Preuve
Pour montrer que L1 .L2 est un langage régulier, il suffit de construire un automate fini
qui accepte L1 .L2 à partir des automates finis qui acceptent respectivement L1 et L2 .
Soient A1 = (S1 , Σ1 , ∆1 , s01 , SF1 )/L(A1 ) = L1 et A2 = (S2 , Σ2 , ∆2 , s02 , SF2 )/L(A2 ) = L2
On construit A = (S, Σ, ∆, s0 , SF )/L(A) = L1 .L2
S = S1 ∪ S2
Σ = Σ1 ∪ Σ2
s0 = s01
∆ = ∆1 ∪ ∆2 ∪ {(p, x, q)/p ∈ SF1 et (s02 , x, q) ∈ ∆2 }
SF = SF1 ∪ SF2 si q02 ∈ SF2
SF = SF2 sinon
a, b
b
a, b
a, b
b
a, b
Propriété 3
Si L est un langage régulier alors L∗ est un langage régulier.
Preuve
Pour prouver que L∗ est un langage régulier, il suffit de construction un automate
reconnaissant L∗ à partir de l’automate fini qui accepte L.
Soit A1 = (S1 , Σ1 , ∆1 , s01 , SF1 )/L(A1 ) = L1
On construit A = (S, Σ, ∆, s0 , SF )/L(A) = L∗1
S = S1 ∪ {s0 }
Σ = Σ1
∆ = ∆1 ∪ {(s0 , x, q)/(s01 , x, q) ∈ ∆1 } ∪ {(sf , x, q)/(s01 , x, q) ∈ ∆1 et sf ∈ SF1 }
SF = SF1 ∪ {s0 }
Propriété 4
Si L est un langage régulier alors L+ est un langage régulier.
Preuve
Pour prouver que L+ est un langage régulier, il suffit de construire un automate
reconnaissant L+ à partir de l’automate fini qui accepte L.
Soit A1 = (S1 , Σ1 , ∆1 , s01 , SF1 )/L(A1 ) = L1
On construit A = (S, Σ, ∆, s0 , SF )/L(A) = L+ 1
S = S1 ∪ {s0 }
Σ = Σ1
∆ = ∆1 ∪ {(s0 , x, q)/(s01 , x, q) ∈ ∆1 } ∪ {(sf , x, q)/(s01 , x, q) ∈ ∆1 et sf ∈ SF1 }
SF = SF1
Preuve
Pour prouver que LR est un langage régulier, il suffit de construire un automate
reconnaissant LR à partir de l’automate fini qui accepte L.
Soit A1 = (S1 , Σ1 , ∆1 , s01 , SF1 )/L(A1 ) = L1
On construit A = (S, Σ, ∆, s0 , SF )/L(A) = LR1
S = S1 ∪ {s0 }
Σ = Σ1
∆ = {(q, x, p)/(p, x, q) ∈ ∆1 } ∪ {(s0 , ε, q) | q ∈ SF1 } (les transitions sont celles
de A1 inversées plus une transition du nouvel état initial vers chaque état final de
A1 ).
SF = {s01 }
Automate reconnaissant L
a a
A
ε a b
q0 q2 q1 q01
Automate reconnaissant LR
Propriété 6
Si L est un langage régulier alors L (complément de L) est un langage régulier.
Preuve
Pour prouver que L est un langage régulier, il suffit de construire un automate
reconnaissant L à partir d’un automate fini déterministe qui accepte L.
Soit A1 = (S1 , Σ1 , ∆1 , s01 , SF1 )/L(A1 ) = L1
On construit A = (S, Σ, ∆, s0 , SF )/L(A) = L1
S = S1
Σ = Σ1
∆ = ∆1
SF = S − SF1 (on permute les états accepteurs et non accepteurs de A1 )
Automate reconnaissant L
a a
A
b a
q01 q1 q2
Automate reconnaissant L
Propriété 7
Si L1 et L2 sont deux langages réguliers alors L1 ∩ L2 est un langage régulier.
Preuve
Pour prouver que L1 ∩ L2 est un langage régulier, il suffit simplement de construire un
automate déterministe A = (S, Σ, ∆, s0 , SF ) reconnaissant L1 ∩ L2 à partir des
automates déterministes A1 = (S1 , Σ, δ1 , s01 , SF1 ) et A2 = (S2 , Σ, δ2 , s02 , SF2 )
acceptant respectivement L1 et L2 .
L’automate A simule, simultanément, l’exécution des automates A1 et A2 et accepte
quand ces deux automates acceptent.
On construit A = (S, Σ, δ, s0 , SF )/L(A) = L(A1 ) ∩ L(A2 ).
S = S1 × S2
δ((q1 , q2 ), x) = (p1 , p2 ), x ∈ Σ ssi δ1 (q1 , x) = p1 et δ2 (q2 , x) = p2
s0 = (s01 , s02 )
SF = SF1 × SF2 .
a b a, b
A1 A2
b a a
q01 q11 q21 q02 q12
a b
A
a b a
(q01 , q02 ) (q01 , q12 ) (q11 , q12 ) (q21 , q12 )
Algorithme de Thompson
Entrée : Expression régulière E,
Sortie : Automate non-déterministe A,
L’algorithme de Thompson est dirigé par la syntaxe de l’expression en entrée. Il
est récursif sur la structure syntaxique de l’expression régulière E en entrée.
L’automate A est construit avec des ε−transitions par induction sur la structure
de l’expression E.
Pour chaque motif de l’expression régulière, définir un AFN, en allant des
motifs de base vers les motifs inductifs plus complexes.
Motifs de base : ∅, ε, a ∈ Σ
Motifs inductifs : (α), α1 . α2 , α1 + α2 , α∗ , où α1 , α2 et α sont des
expressions régulières.
Pour chaque état ajouté, donner un nom différent des noms des états déjà
créés.
Cas Inductifs
Expression Régulière AFN correspondant
aaaαaaaaaaa
(α)
α1 aaaaaaa aaaaα2 aaaaa
α1 .α2 .
p q
ε ε
Baaaaa
α1 + α2
ε
p
ε ε
q
aaaaaaa
ε
α∗
Théoreme
Étant donnée une expression régulière E, il existe un unique automate d’états fini
optimal M (à un renommage d’état près) tel que L(M) = E.
r5 . 1
∗ r4
( r3 )
r1 + r2
1 0
l’AFN correspondant :
ε
M
1
ε C E ε
ε 1
A B G ε H I
ε 0 ε
D F
ε
0
{A, B, C, D, H} {F , G, H, B, C, D}
0 1
1
{E, G, B, C, D, H, I}
Lemme
Si un langage est accepté par un automate fini non déterministe, alors il est
régulier (dénoté par une expression régulière).
Définition d’un langage à partir d’un automate fini en utilisant le Lemme d’ARDEN
x qj
qi
Théorème d’Arden
Soient A et B deux langages, on définit l’équation E, d’inconnu L :
L = A L + B(E)
Exemple
Si L = {a} L + {b}, alors L = {a}∗ {b}.
Si L = {a} L + ε, alors L = {a}∗ .
Exercice illustratif 1
Soit A un automate fini sur un vocabulaire X = {a, b}. Chercher le langage L0
reconnu par l’automate A.
q0
a q1
a q2
A
Exercice illustratif 1
Soit A un automate fini sur un vocabulaire X = {a, b}. Chercher le langage L0
reconnu par l’automate A.
q0
a q1
a q2
A
Exercice illustratif 2
Chercher le langage reconnu par l’automate A.
b a
q1
a q2
A
Exercice illustratif 2
Chercher le langage reconnu par l’automate A.
b a
q1
a q2
A
Remarque
Certains langages ne sont pas réguliers en établissant qu’ils ne peuvent pas satisfaire
cette propriété.
Pour établir la démonstration, nous donnons les théorèmes qui formalisent ces
observations.
Théorème 1
Soit L ∈ LR un langage infini, alors il existe x, y , z ∈ Σ∗ , avec y ̸= ε tels que
∀n ≥ 0, xy n z ∈ L
Limites
Intuitivement, les limites des langages réguliers sont liées au fait que ces
langages sont acceptés par des machines à mémoire finie fixée.
Il existe, alors, une quantité de mémoire maximale qui ne peut être utilisée
indépendamment du mot à traiter
Par conséquent, si pour reconnaitre un langage, il faut, alors, une quantité de
mémoire qui n’est pas bornée a priori : ce langage n’est pas régulier !