Théorie des Automates Finis
Théorie des Automates Finis
L. Rieg
Année 2024-2025
Construction :
Construction :
ε ε
ε
A
ε
ε
A1
A2
A1
ε ε
ε ε
A2
A1
ε ε
ε ε
A2
Formellement :
Si A1 = (Q1 , V, δ1 , I1 , F1 ) et A2 = (Q2 , V, δ2 , I2 , F2 ), on a :
def
A1 ∪ A2 = (Q1 ⊎ Q2 ⊎ {i, f } , V, δ, {i} , {f })
avec
def
δ = δ1 ∪ δ2 ∪ {(i, ε, q) | q ∈ I1 ∪ I2 } ∪ {(q, ε, f ) | q ∈ F1 ∪ F2 }
L. Rieg (Ensimag 1A) Théorie des Langages 1 Année 2024-2025 3 / 21
Concaténation
Etant donnés deux automates A1 et A2 , construire un automate
reconnaissant L(A1 ).L(A2 ).
A1
A2
A1
ε
A2
A1
ε
A2
A1
ε
A2
ε A ε
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
On ne reconnaît pas ε.
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
ε
∗ ∗
Exemple : L(A) = {a} {b} {c}
ε
b
q0 q1
ε
a c
ε A ε
AFND−ε :
a
q0 q4
a, b a
AFND−ε : AFD :
b
a
q0 q4
p0 p1
a
a, b a
b a
Question
Peut-on toujours effectuer les transformations
AF (N D) ⇐⇒ AF (N D) − ε ⇐⇒ AFD ?
Question
Peut-on toujours effectuer les transformations
AF (N D) ⇐⇒ AF (N D) − ε ⇐⇒ AFD ?
Etape 1
Etape 1
Etape 1
Etape 1
B A A
B A A
F ′ = {p ∈ Q | Accε (p) ∩ F ̸= ∅}
B A A
F ′ = {p ∈ Q | Accε (p) ∩ F ̸= ∅}
Propositions
B est un automate sans ε-transition.
B A A
F ′ = {p ∈ Q | Accε (p) ∩ F ̸= ∅}
Propositions
B est un automate sans ε-transition.
B A A
F ′ = {p ∈ Q | Accε (p) ∩ F ̸= ∅}
Propositions
B est un automate sans ε-transition.
B est équivalent à A.
B A A
F ′ = {p ∈ Q | Accε (p) ∩ F ̸= ∅}
Propositions
B est un automate sans ε-transition.
B est équivalent à A. démo plus tard
0 1
q1 ε q2
ε
q0
ε
q3 ε q4
1 0
q3 ε q4
1 0
1
q1 q2
0
1
q0
0
1
q3 q4
0
1 0
Question
Peut-on toujours effectuer les transformations
OK
AF (N D) ⇐===⇒ AF (N D) − ε ⇐⇒ AFD ?
Conséquences
L’automate a un seul état initial
δ est une fonction totale : Q × V → Q
δ s’étend aux mots : δ ∗ : Q × V ∗ → Q
Donne directement un « programme » reconnaisseur
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
a
a
b
q0 q2 q4
b a
b b
q1 q3
a
OK : aab ∈ L(A)
L. Rieg (Ensimag 1A) Théorie des Langages 1 Année 2024-2025 17 / 21
Principe de la déterminisation
Idée : suivre tous les chemins en parallèle
a q1 , q2 , q3
a
b
q0 q2 q4
b a q1 , q2 , q4
b b
q1 q3
a
a q1 , q2 , q3
a
b
q0 q2 q4
b a q1 , q2 , q4
b b
q1 q3
a
a
a
b q0 , q1
q0 q2 q4
b a
b b
q1 , q2 , q3
q1 q3
a
a
q1 , q2 , q4
a
a
b q0 , q1
q0 q2 q4
a
b a
b b
q1 , q2 , q3
q1 q3
a
a
q1 , q2 , q4
a
a
b q0 , q1
q0 q2 q4
a
b a
b b
q1 , q2 , q3
q1 q3
a
a
q1 , q2 , q4
a
a
b q0 , q1
q0 q2 q4
a
b a
b b
q1 , q2 , q3
q1 q3
a
a
q1 , q2 , q4
a
a
b q0 , q1
q0 q2 q4
a
b a
b b
q1 , q2 , q3 a
q1 q3
a
a
q1 , q2 , q4
a
a
b q0 , q1
q0 q2 q4
a
b a
b b
q1 , q2 , q3 a
q1 q3
a
a
q1 , q2 , q4
a
a
b q0 , q1
q0 q2 q4
a
b a
b b
q1 , q2 , q3 a
q1 q3
a
b
a
q1 , q2 , q4
a
a
b q0 , q1
q0 q2 q4 ...
b
a
b a
b b
q1 , q2 , q3 a
q1 q3
a
b ...
a a, b
q1 , q2 , q4
Remarques
P ⊆ Q ⇐⇒ P ∈ P(Q) et ∅ ⊆ Q : un état puits de B
Certains P ⊆ Q peuvent ne pas être accessibles depuis I donc on
construit B de proche en proche à partir de I.
Remarques
P ⊆ Q ⇐⇒ P ∈ P(Q) et ∅ ⊆ Q : un état puits de B
Certains P ⊆ Q peuvent ne pas être accessibles depuis I donc on
construit B de proche en proche à partir de I.
Proposition
L’automate B est un automate fini déterministe complet équivalent à A.
L. Rieg (Ensimag 1A) Théorie des Langages 1 Année 2024-2025 18 / 21
Exemple
Construire un AFD (complet) équivalent à :
b
a q1 q2
a
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 }
b
a q1 q2
a
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 }
{q0 , q1 }
b
a q1 q2
a
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 }
{q0 , q3 }
b
a q1 q2
a
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 }
{q0 , q3 }
b
a q1 q2
a
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 }
b {q0 , q2 , q3 }
a q1 q2
a
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 }
b {q0 , q2 , q3 }
a q1 q2
a {q0 , q1 , q4 }
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 }
a q1 q2
a {q0 , q1 , q4 }
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 }
a q1 q2
a {q0 , q1 , q4 }
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 }
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 }
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 }
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 }
q0 b
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
q0 b {q0 , q3 , q4 }
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
q0 b {q0 , q3 , q4 } {q0 , q1 , q4 }
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
q0 b {q0 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
b
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
q0 b {q0 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
b Pas d’autre état accessible
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
q0 b {q0 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
b Pas d’autre état accessible
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
q0 b {q0 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
b Pas d’autre état accessible
a
b q3 q4
P(Q) a b
I {q0 , q2 } {q0 , q1 } {q0 , q3 }
{q0 , q1 } {q0 , q1 } {q0 , q2 , q3 }
{q0 , q3 } {q0 , q1 , q4 } {q0 , q3 }
b {q0 , q2 , q3 } {q0 , q1 , q4 } {q0 , q3 }
a q1 q2
a {q0 , q1 , q4 } {q0 , q1 } {q0 , q2 , q3 , q4 }
{q0 , q2 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
q0 b {q0 , q3 , q4 } {q0 , q1 , q4 } {q0 , q3 , q4 }
b Pas d’autre état accessible
a
b q3 q4
b a
q0 , q3 q0 , q2 q0 , q1
b a
b b
a q0 , q2 , q3 a
a b
a
q0 , q1 , q4 q0 , q3 , q4
b
b a
q0 , q2 , q3 , q4
Question
Peut-on toujours effectuer les transformations
OK OK
AF (N D) ⇐===⇒ AF (N D) − ε ⇐===⇒ AFD ?