Slide
Slide
Automates
Jean-Pierre Becirspahic
Lycée Louis-Le-Grand
L’état initial q0 est désigné par une flèche entrante ; les états acceptants
(ici q2 ) sont représentés par une flèche sortante.
a
b
q3
a, b
1 0
1 0
1 0
1 0
1 0
1 0
1 0
• Σ = {a, b } ; δ a b
q0 q1 q0
• Q = {q0 , q1 , q2 } ; q1 q2 q0
• F = {q0 , q1 } ; q2 q2 q2
b a, b
a a
q0 q1 q2
• Σ = {a, b } ; δ a b
q0 q1 q0
• Q = {q0 , q1 , q2 } ; q1 q2 q0
• F = {q0 , q1 } ; q2 q2 q2
b a, b
a a
q0 q1 q2
Émondage
Deux automates sont dits équivalents lorsqu’ils reconnaissent le même
langage :
b a, b b
a a a
q0 q1 q2 q0 q1
b b
Émondage
Deux automates sont dits équivalents lorsqu’ils reconnaissent le même
langage :
b a, b b
a a a
q0 q1 q2 q0 q1
b b
Émondage
Deux automates sont dits équivalents lorsqu’ils reconnaissent le même
langage :
b a, b b
a a a
q0 q1 q2 q0 q1
b b
Émondage
Exemple a b
b
q0 a q1 q2
a
b
b
q3 q4
a
a, b
Émondage
Exemple a b
b
q0 a q1 q2
a
b
b
q3 q4
a
a, b
Mise en œuvre
On utilise le type char pour représenter l’alphabet Σ, le type int pour l’en-
semble des états et un dictionnaire pour énumérer la liste des transi-
tions possibles. Pour simplifier, ce dictionnaire sera représenté par le type
( int * char) * int list .
Mise en œuvre
On utilise le type char pour représenter l’alphabet Σ, le type int pour l’en-
semble des états et un dictionnaire pour énumérer la liste des transi-
tions possibles. Pour simplifier, ce dictionnaire sera représenté par le type
( int * char) * int list .
let chemin a m =
let rec aux q = function
| k when k = string_length m −> q
| k −> aux (assoc (q, m.[k]) a.Delta) (k+1)
in aux a.Start 0 ;;
let reconnu a m =
try mem (chemin a m) a.Accept
with Not_found −> false ;;
a(a + b )∗ b .
a, b
q0 a q1 b q2
Déterminisation
Considérons donc un automate non-déterministe A = (Σ, Q , I , F , δ) et po-
sons A 0 = (Σ, P (Q ), I , F 0 , δ0 ) avec :
n o [
F 0 = P ∈ P (Q ) P ∩F , ∅ et ∀(P , a) ∈ P (Q )×Σ, δ0 (P , a) = δ(q, a).
q∈P
Déterminisation
Considérons donc un automate non-déterministe A = (Σ, Q , I , F , δ) et po-
sons A 0 = (Σ, P (Q ), I , F 0 , δ0 ) avec :
n o [
F 0 = P ∈ P (Q ) P ∩F , ∅ et ∀(P , a) ∈ P (Q )×Σ, δ0 (P , a) = δ(q, a).
q∈P
a, b
q0 a q1 b q2
États et transitions de A 0 :
δ0 a b δ0 a b
∅ ∅ ∅ {q0 , q1 } {q1 } {q1 , q2 }
∗ {q0 } {q1 } ∅ ∗ {q1 , q2 } {q1 } {q1 , q2 }
{q1 } {q1 } {q1 , q2 } ∗ {q0 , q2 } {q1 } ∅
{q2 } ∅ ∅ ∗ {q0 , q1 , q2 } {q1 } {q1 , q2 }
Déterminisation
Considérons donc un automate non-déterministe A = (Σ, Q , I , F , δ) et po-
sons A 0 = (Σ, P (Q ), I , F 0 , δ0 ) avec :
n o [
F 0 = P ∈ P (Q ) P ∩F , ∅ et ∀(P , a) ∈ P (Q )×Σ, δ0 (P , a) = δ(q, a).
q∈P
a, b
q0 a q1 b q2
δ0 a b
∗ {q0 } {q1 } − → q00
{q1 } {q1 } {q1 , q2 } → q10
∗ {q1 , q2 } {q1 } {q1 , q2 } → q20
Déterminisation
Considérons donc un automate non-déterministe A = (Σ, Q , I , F , δ) et po-
sons A 0 = (Σ, P (Q ), I , F 0 , δ0 ) avec :
n o [
F 0 = P ∈ P (Q ) P ∩F , ∅ et ∀(P , a) ∈ P (Q )×Σ, δ0 (P , a) = δ(q, a).
q∈P
a, b
q0 a q1 b q2
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
• Si u , ε, supposons le résultat acquis pour tout mot de longueur strictement
inférieure, et posons u = a1 a2 · · · an .
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
• Si u , ε, supposons le résultat acquis pour tout mot de longueur strictement
inférieure, et posons u = a1 a2 · · · an .
a1 a2 an
Considérons un chemin q0 −→ q1 −→ · · · −→ qn dans A .
a1 a2 an−1
Il existe dans A 0 un chemin I −→ P1 −→ · · · −→ Pn−1 tel que qn−1 ∈ Pn−1 .
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
• Si u , ε, supposons le résultat acquis pour tout mot de longueur strictement
inférieure, et posons u = a1 a2 · · · an .
a1 a2 an
Considérons un chemin q0 −→ q1 −→ · · · −→ qn dans A .
a1 a2 an−1
Il existe dans A 0 un chemin I −→ P1 −→ · · · −→ Pn−1 tel que qn−1 ∈ Pn−1 .
qn ∈ δ(qn−1 , an ) donc qn ∈ δ0 (Pn−1 , an ). En posant Pn = δ0 (Pn−1 , an ) on établit un
a1 a2 an
chemin I −→ P1 −→ · · · −→ Pn tel que qn ∈ Pn .
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
• Si u , ε, supposons le résultat acquis pour tout mot de longueur strictement
inférieure, et posons u = a1 a2 · · · an .
a1 a2 an
Réciproquement, considérons un chemin I −→ P1 −→ · · · −→ Pn dans A , et consi-
dérons un élément qn ∈ Pn .
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
• Si u , ε, supposons le résultat acquis pour tout mot de longueur strictement
inférieure, et posons u = a1 a2 · · · an .
a1 a2 an
Réciproquement, considérons un chemin I −→ P1 −→ · · · −→ Pn dans A , et consi-
dérons un élément qn ∈ Pn .
Il existe un état qn−1 ∈ Pn−1 tel que qn ∈ δ(qn−1 , an ), et par hypothèse de récur-
a1 a2 an−1
rence il existe un chemin q0 −→ q1 −→ · · · −→ qn−1 dans A .
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
• Si u , ε, supposons le résultat acquis pour tout mot de longueur strictement
inférieure, et posons u = a1 a2 · · · an .
a1 a2 an
Réciproquement, considérons un chemin I −→ P1 −→ · · · −→ Pn dans A , et consi-
dérons un élément qn ∈ Pn .
Il existe un état qn−1 ∈ Pn−1 tel que qn ∈ δ(qn−1 , an ), et par hypothèse de récur-
a1 a2 an−1
rence il existe un chemin q0 −→ q1 −→ · · · −→ qn−1 dans A .
a1 a2 an
Ceci prouve l’existence d’un chemin q0 −→ q1 −→ · · · −→ qn .
Déterminisation
Les automates A et A 0 reconnaissent le même langage.
On montre par récurrence sur |u| que pour tout mot u ∈ Σ∗ , il existe dans A un
chemin étiqueté par u menant à un état q si et seulement s’il existe dans A 0 un
chemin étiqueté par u menant à un état P contenant q.
• Dans A tout chemin étiqueté par ε mène à un élément de I ; dans A 0 tout
chemin étiqueté par ε mène à l’état I .
• Si u , ε, supposons le résultat acquis pour tout mot de longueur strictement
inférieure, et posons u = a1 a2 · · · an .
a1 a2 an
Réciproquement, considérons un chemin I −→ P1 −→ · · · −→ Pn dans A , et consi-
dérons un élément qn ∈ Pn .
Il existe un état qn−1 ∈ Pn−1 tel que qn ∈ δ(qn−1 , an ), et par hypothèse de récur-
a1 a2 an−1
rence il existe un chemin q0 −→ q1 −→ · · · −→ qn−1 dans A .
a1 a2 an
Ceci prouve l’existence d’un chemin q0 −→ q1 −→ · · · −→ qn .
n o
Sachant que F 0 = P ∈ P (Q ) P ∩ F , ∅ ceci prouve qu’un mot est reconnu par A
si et seulement s’il est reconnu par A 0 .
JP Becirspahic — Automates — 2015-2016 — Page 7/18
lycée louis-le-grand option informatique
a a, b a, b a, b
q0 q1 q2 ··· qn
a a, b a, b a, b
q0 q1 q2 ··· qn
a a, b a, b a, b
q0 q1 q2 ··· qn
a a, b a, b a, b
q0 q1 q2 ··· qn
a a, b a, b a, b
q0 q1 q2 ··· qn
a a, b a, b a, b
q0 q1 q2 ··· qn
a1 a2 a3 an
q0 q1 q2 ··· qn
q0 a q1 b q2 a q3
q0 a q1 b q2 a q3
δ0 a b
∗ {q0 } {q0 , q1 } {q0 } → q00
{q0 , q1 } {q0 , q1 } {q0 , q2 } → q10
{q0 , q2 } {q0 , q1 , q3 } {q0 } → q20
∗ {q0 , q1 , q3 } {q0 , q1 , q3 } {q0 , q2 , q3 } → q30
∗ {q0 , q2 , q3 } {q0 , q1 , q3 } {q0 , q3 } → q40
∗ {q0 , q3 } {q0 , q1 , q3 } {q0 , q3 } → q50
a b
q00 q10 q20
b
a
b b
b a
a
b a a, b
a b a
q00 q10 q20 q30
b
b
JP Becirspahic — Automates — 2015-2016 — Page 10/18
lycée louis-le-grand option informatique
a
b a
a
a b
ε a ab aba
b
b
s(v) = u ⇐⇒ v ∈ Σ∗ u.
b a a, b
a b a
ε a ab aba
b
Un automate qui reconnait Σ∗ abaΣ∗ .
Algorithme de Berry-Sethi
Un automate déterministe A = (Σ, Q , q0 , F , δ) est local lorsque pour chaque
lettre x toutes les transitions étiquetées par x arrivent dans un même
état. Il est standard lorsqu’il n’existe pas de transition aboutissant à l’état
initial.
Algorithme de Berry-Sethi
Un automate déterministe A = (Σ, Q , q0 , F , δ) est local lorsque pour chaque
lettre x toutes les transitions étiquetées par x arrivent dans un même
état. Il est standard lorsqu’il n’existe pas de transition aboutissant à l’état
initial.
Si L est un langage local, le langage L \ {ε} est reconnaissable par un
automate local standard.
Algorithme de Berry-Sethi
Un automate déterministe A = (Σ, Q , q0 , F , δ) est local lorsque pour chaque
lettre x toutes les transitions étiquetées par x arrivent dans un même
état. Il est standard lorsqu’il n’existe pas de transition aboutissant à l’état
initial.
Si L est un langage local, le langage L \ {ε} est reconnaissable par un
automate local standard.
Considérons l’automate A = (Σ, Σ ∪ {ε}, ε, S , δ) avec :
Algorithme de Berry-Sethi
Un automate déterministe A = (Σ, Q , q0 , F , δ) est local lorsque pour chaque
lettre x toutes les transitions étiquetées par x arrivent dans un même
état. Il est standard lorsqu’il n’existe pas de transition aboutissant à l’état
initial.
Si L est un langage local, le langage L \ {ε} est reconnaissable par un
automate local standard.
Exemple : L = (a +b )∗ c, P = {a, b , c}, S = {c} et F = {aa, ab , ba, bb , ac, bc}.
b
a b
b
a c
ε a b c
c
JP Becirspahic — Automates — 2015-2016 — Page 13/18
lycée louis-le-grand option informatique
Algorithme de Berry-Sethi
Construction de l’automate de Glushkov
On considère une expression rationnelle sans ∅ ni ε : e = (ab + b )∗ ba.
Algorithme de Berry-Sethi
Construction de l’automate de Glushkov
On considère une expression rationnelle sans ∅ ni ε : e = (ab + b )∗ ba.
0 ∗
1 on linéarise e par marquage : e = (c1 c2 + c3 ) c4 c5 ;
Algorithme de Berry-Sethi
Construction de l’automate de Glushkov
On considère une expression rationnelle sans ∅ ni ε : e = (ab + b )∗ ba.
0
1 on linéarise e par marquage : e = (c1 c2 + c3 ) c4 c5 ;
∗
Algorithme de Berry-Sethi
Construction de l’automate de Glushkov
On considère une expression rationnelle sans ∅ ni ε : e = (ab + b )∗ ba.
0
1 on linéarise e par marquage : e = (c1 c2 + c3 ) c4 c5 ;
∗
c2
c1 c2
c1
c1
c1
c3
c3
c0 c3 c3
c4
c4
c4
c4 c5
c5
JP Becirspahic — Automates — 2015-2016 — Page 14/18
lycée louis-le-grand option informatique
Algorithme de Berry-Sethi
Construction de l’automate de Glushkov
On considère une expression rationnelle sans ∅ ni ε : e = (ab + b )∗ ba.
0
1 on linéarise e par marquage : e = (c1 c2 + c3 ) c4 c5 ;
∗
b
c1 c2
a
a
a
b
c0 b c3 b
b
b
b
c4 c5
a
JP Becirspahic — Automates — 2015-2016 — Page 14/18
lycée louis-le-grand option informatique
Algorithme de Berry-Sethi
Construction de l’automate de Glushkov
On considère une expression rationnelle sans ∅ ni ε : e = (ab + b )∗ ba.
0
1 on linéarise e par marquage : e = (c1 c2 + c3 ) c4 c5 ;
∗
q2 q4
a
JP Becirspahic — Automates — 2015-2016 — Page 14/18
lycée louis-le-grand option informatique
e2
e1 e2
e3 + e1 e4∗ e2
qi qj ⇐⇒ qi qj
e3
a b
q0 b q3
a
a
b
q2
a b
q0 b q3
a
q1
a b
ε q0 b q3 ε
i f
a
a
b
q2
a b
q0 b q3
a
On élimine l’état q2 : a
b
q2
a
q1
a b
ε b + a2 ε
i q0 q3 f
ba
a b
q0 b q3
a
On élimine l’état q1 : a
b
q2
ε b + a 2 + aa ∗ b ε
i q0 q3 f
ba
a b
q0 b q3
a
On élimine l’état q0 : a
b
q2
b + a 2 + aa ∗ b ε
i q3 f
ba
a b
q0 b q3
a
On élimine l’état q3 : a
b
q2
(b + a 2 + aa ∗ b )(ba )∗
i f
a b
q0 b q3
a
On élimine l’état q3 : a
b
q2
(b + a 2 + aa ∗ b )(ba )∗
i f
δ0 (q, x) = q 0 ⇐⇒ δ(x, q 0 ) = q
Alors le langage reconnu par A 0 est l’image miroir du langage reconnu par A .
Lemme de l’étoile
Si L est un langage rationnel il existe un entier k tel que tout mot m ∈ L
de longueur supérieure ou égale à k se factorise sous la forme m = uvw
avec : (i ) |v| > 1 (ii ) |uv| 6 k (iii ) ∀n ∈ N, uv n w ∈ L .
Lemme de l’étoile
Si L est un langage rationnel il existe un entier k tel que tout mot m ∈ L
de longueur supérieure ou égale à k se factorise sous la forme m = uvw
avec : (i ) |v| > 1 (ii ) |uv| 6 k (iii ) ∀n ∈ N, uv n w ∈ L .
Soit A = (Σ, Q , q0 , F , δ) et k = |Q |. Soit m un mot de L tel que |m| > k . Le chemin
a1 a2 ap
q0 −→ q1 −→ q2 · · · −→ qp reconnaissant m implique p + 1 états donc passe
nécessairement deux fois par le même état qi = qj avec 0 6 i < j 6 k :
a1 ai aj ap
q0 −→ · · · −→ qi · · · · · · −→ qj −→ · · · −→ qp
Posons u = a1 · · · ai , v = ai +1 · · · aj et w = aj +1 · · · ap . Alors pour tout n ∈ N le
chemin étiqueté par uv n w conduit à l’état acceptant qp donc uv n w ∈ L .
Lemme de l’étoile
Si L est un langage rationnel il existe un entier k tel que tout mot m ∈ L
de longueur supérieure ou égale à k se factorise sous la forme m = uvw
avec : (i ) |v| > 1 (ii ) |uv| 6 k (iii ) ∀n ∈ N, uv n w ∈ L .
Soit A = (Σ, Q , q0 , F , δ) et k = |Q |. Soit m un mot de L tel que |m| > k . Le chemin
a1 a2 ap
q0 −→ q1 −→ q2 · · · −→ qp reconnaissant m implique p + 1 états donc passe
nécessairement deux fois par le même état qi = qj avec 0 6 i < j 6 k :
a1 ai aj ap
q0 −→ · · · −→ qi · · · · · · −→ qj −→ · · · −→ qp
Posons u = a1 · · · ai , v = ai +1 · · · aj et w = aj +1 · · · ap . Alors pour tout n ∈ N le
chemin étiqueté par uv n w conduit à l’état acceptant qp donc uv n w ∈ L .
Lemme de l’étoile
Si L est un langage rationnel il existe un entier k tel que tout mot m ∈ L
de longueur supérieure ou égale à k se factorise sous la forme m = uvw
avec : (i ) |v| > 1 (ii ) |uv| 6 k (iii ) ∀n ∈ N, uv n w ∈ L .
Soit A = (Σ, Q , q0 , F , δ) et k = |Q |. Soit m un mot de L tel que |m| > k . Le chemin
a1 a2 ap
q0 −→ q1 −→ q2 · · · −→ qp reconnaissant m implique p + 1 états donc passe
nécessairement deux fois par le même état qi = qj avec 0 6 i < j 6 k :
a1 ai aj ap
q0 −→ · · · −→ qi · · · · · · −→ qj −→ · · · −→ qp
Posons u = a1 · · · ai , v = ai +1 · · · aj et w = aj +1 · · · ap . Alors pour tout n ∈ N le
chemin étiqueté par uv n w conduit à l’état acceptant qp donc uv n w ∈ L .
Lemme de l’étoile
Exemple
n o
• Le langage L = a n b n n ∈ N n’est pas rationnel.
Lemme de l’étoile
Exemple
n o
• Le langage L = a n b n n ∈ N n’est pas rationnel.
u = ak , v = bk, w = ε.
Lemme de l’étoile
Exemple
n o
• Le langage L = a n b n n ∈ N n’est pas rationnel.
u = ak , v = bk, w = ε.
Lemme de l’étoile
Exemple
n o
• Le langage L = a n b n n ∈ N n’est pas rationnel.
u = ak , v = bk, w = ε.
u = a, v = bk, w = ab k .
Alors il existe j > 1 tel que pour tout n ∈ N, ab k +nj ab k ∈ L , ce qui est
absurde.
JP Becirspahic — Automates — 2015-2016 — Page 18/18