Th´ eorie des Langages Formels Chapitre 3 : Th´ eor` eme de Kleene
Florence Lev´ e
Florence.Leve@u-picardie.fr
Ann´ ee 2017-2018
Th´ eor` eme de Kleene
Un ensemble est rationnel si et seulement s’il est reconnaissable.
Rationnel ⇒ Reconnaissable
Pour montrer que tout langage rationnel est reconnaissable,
nous donnons un algorithme (r´ ecursif) permettant d’associer ` a
tout langage rationnel (au moins) un automate asynchrone
normalis´ e.
Automates asynchrones
Une g´ en´ eralisation des automates
I
Un ”automate asynchrone” peut ne pas ˆ etre un ”automate”.
I
Un ”automate” est un ”automate asynchrone”.
LA diff´ erence = dans un automate asynchrone, possibilit´ e d’ajouter des transitions par le mot vide.
Exemple :
ε
1 a 2 3 4
b ε
ε = mot vide ; pas une lettre de l’alphabet !
Utilit´ e : plus faciles ` a manipuler.
D´ efinition automate asynchrone
5-uplet < A, Q, D, F , δ > o` u A : alphabet d’entr´ ee ;
Q : ensemble d’´ etats de l’automate ; D ⊆ Q : ensemble des ´ etats de d´ epart ; F ⊆ Q ensemble des ´ etats terminaux ;
δ ⊆ Q × A ∪{ε} × Q ensemble de transitions.
(ε-transition = transition ´ etiquet´ ee par ε) Exemple :
ε
1 a 2 3 4
b ε
A = {a, b}, Q = {1, 2, 3, 4}, D = {1}, F = {4},
Chemins et mots reconnus
Mˆ emes d´ efinitions dans un automate asynchrone que dans un automate (sans ε-transition)
Chemin (non vide) d’un ´ etat p ` a un ´ etat q
= suite de transitions (q
0, a
1, q
1)(q
1, a
2, q
2) . . . (q
n−1, a
n, q
n) avec q
0= p, q
n= q (et (n ≥ 1)) (et a
ilettre ou ε)
Mot ´ etiquette = a
1. . . a
n(enlever les ε) Chemin vide.
Exemple :
ε
1 a 2 3 4
b ε
(1, a, 2), (2, ε, 3)(3, b, 4), (4, ε, 3) chemin d’´ etiquette
aεbε = ab
Automate normalis´ e
Un automate Aut (asynchrone ou sans ε-transition) est normalis´ e s’il v´ erifie :
I
il a un et un seul ´ etat initial.
I
il n’a pas de transitions aboutissant dans l’´ etat initial.
I
il a un et un seul ´ etat terminal,
diff´erent de l’´etat initial.I
il ne poss` ede pas de transitions issues de l’´ etat terminal.
Exemples
I <A,{1,
2},
{1},{2},∅>reconnaissant
∅.1 2
I <A,{1,
2},
{1},{2},{(1, ε,2)}
>reconnaissant
{ε}.1 ɛ 2
I
Si
alettre,
<A,{1,2},
{1},{2},{(1,a,2)}
>reconnaˆıt
{a}.1 a 2
Normalisation d’un automate asynchrone
Lemme Pour tout automate asynchrone, il existe un automate asynchrone normalis´ e ´ equivalent.
Plus pr´ ecis´ ement, ´ etant donn´ es :
un automate asynchrone Aut =< A, Q, D, F , δ >
deux ´ etats d et f n’appartenant pas ` a Q Consid´ erons l’automate Aut
0=
< A, Q∪{d , f }, {d }, {f }, δ∪{(d , ε, q) | q ∈ D}∪{(q, ε, f ) | q ∈ F } >
Aut
0est un automate asynchrone normalis´ e ´ equivalent ` a Aut.
Exemple
1 a 2
3 b
1 a 2
3 0 b
ɛ ɛ
4 ɛ
ɛ
Union de deux automates
L’union de deux langages reconnaissables est encore un langage reconnaissable :
Proposition Soit A un alphabet. La famille Rec (A
∗) est ferm´ ee (close) par union.
Lemme Soient :
Aut
1=< A
1, Q
1, {d
1}, {f
1}, δ
1> un automate asynchrone normalis´ e reconnaissant le langage L
1,
Aut
2=< A
2, Q
2, {d
2}, {f
2}, δ
2> un automate asynchrone normalis´ e reconnaissant le langage L
2,
d et f des ´ etats n’appartenant ni ` a Q
1, ni ` a Q
2. Supposons Q
1∩ Q
2= ∅ et consid´ erons l’automate Aut =
< A
1∪ A
2, Q
1∪ Q
2∪ {d , f }, {d }, {f },
δ
1∪ δ
2∪ {(d , ε, d
1), (d , ε, d
2), (f
1, ε, f ), (f
2, ε, f )} >
Cet automate Aut est un automate asynchrone normalis´ e
reconnaissant le langage L ∪ L .
Exemple : automates ` a unir
Aut1 :
1 c 2
a,b
Aut2 :
1 b 2
a
b 3 a
ɛ
3
Etape 1 : normalisation ´
Aut1 :
1 c 2
a,b
d ɛ f
ɛ
Aut2 :
1 b 2
a
b 3 a
ɛ
4
d ɛ ɛ f
ɛ
Etape 2 : renum´ ´ erotation des ´ etats
Aut1 :
2 c 3
a,b
1 ɛ 4
ɛ
Aut2 :
6 b 7
a
b 8 a
ɛ
9
5 ɛ ɛ 10
ɛ
Etape 3 : union ´
Aut :
6 b 7
a
b 8 a
ɛ
9
2 c 3
a,b
1 ɛ 4
ɛ
5 ɛ ɛ 10
ɛ
d f
ɛ
ɛ ɛ
ɛ
Produit de deux automates
Le produit de deux langages reconnaissables est encore un langage reconnaissable :
Proposition Soit A un alphabet. La famille Rec (A
∗) est ferm´ ee par produit.
Lemme Soient :
Aut
1=< A
1, Q
1, {d
1}, {f
1}, δ
1> un automate asynchrone normalis´ e reconnaissant le langage L
1,
Aut
2=< A
2, Q
2, {d
2}, {f
2}, δ
2> un automate asynchrone normalis´ e reconnaissant le langage L
2,
Supposons Q
1∩ Q
2= ∅ et consid´ erons l’automate
Aut =< A
1∪ A
2, Q
1∪ Q
2, {d
1}, {f
2}, δ
1∪ δ
2∪ {(f
1, ε, d
2)} >
Cet automate Aut est un automate asynchrone normalis´ e
Exemple : automates ` a concat´ ener (normalis´ es et renum´ erot´ es)
Aut1 :
2 c 3
a,b
1 ɛ 4
ɛ
Aut2 :
6 b 7
a
b 8 a
ɛ
9
5 ɛ ɛ 10
ɛ
Etape 3 : produit ´
Aut :
6 b 7
a
b 8 a
ɛ
9
2 c 3
a,b
1 ɛ ɛ 4
5 ɛ ɛ 10
ɛ ɛ
Etoile d’un automate ´
L’´ etoile d’un langage reconnaissable est encore un langage reconnaissable :
Proposition Soit A un alphabet. La famille Rec (A
∗) est ferm´ ee par
´ etoile.
Lemme Soient :
Aut =< A, Q , {d }, {f }, δ > un automate asynchrone normalis´ e reconnaissant L,
d
0et f
0deux ´ etats distincts n’appartenant pas ` a Q.
Consid´ erons l’automate AutEt =
< A, Q ∪ {d
0, f
0}, {d
0}, {f
0},
δ ∪ {(d
0, ε, d ), (f , ε, f
0), (f , ε, d ), (d
0, ε, f
0)} >
Cet automate AutEt est un automate asynchrone normalis´ e
reconnaissant L
∗.
Exemple : ´ etoile de Aut1 (normalis´ e)
Aut1 :
2 c 3
a,b
1 ɛ 4
ɛ
Etoile de Aut1 : ´
2 c 3
a,b
1 ɛ ɛ 4
d' ɛ
ɛ f '
ɛ ɛ
Algorithme de Thompson
Donn´ ee : une expression rationnelle E
R´ esultat : un automate Aut asynchrone normalis´ e reconnaissant L(E)
Si E est ∅, {ε} ou {a} pour une lettre a, alors le r´ esultat Aut est l’automate correspondant d´ ecrit dans les premiers exemples de ce chapitre.
Sinon E = F + G , E = FG ou E = F
∗:
construire un automate normalis´ e asynchrone reconnaissant L(F ) par l’algorithme de Thomson,
(si n´ ecessaire) construire un automate normalis´ e asynchrone reconnaissant L(G ) par l’algorithme de Thomson,
utiliser selon le cas un des trois lemmes pr´ ec´ edents pour
calculer Aut .
Rationnel ⇒ Reconnaissable
On a montr´ e que pour tout langage rationnel, on peut construire un automate asynchrone normalis´ e reconnaissant ce langage.
Il nous reste ` a montrer que pour tout automate asynchrone
normalis´ e, il existe un automate fini ´ equivalent (c’est-` a-dire
reconnaissant le mˆ eme langage).
Suppression des ε-transitions
Tout automate fini est un automate asynchrone.
La r´ eciproque est fausse.
Mais ´ etant donn´ e un automate asynchrone, peut-on construire un automate (sans ε-transition) ´ equivalent ?
I
Oui !
I
Id´ ee de base = ` a chaque fois qu’il y a trois ´ etats p, r, q et une lettre
αtels que
• il existe un chemin d’´etiquette vide dep`ar
• il existe une transition (r, α,q),
Ajouter (p, α,
q)Puis supprimer les
ε-transitions.I
Exemple :
5
1 a 2 3 4
b ε
ε
a ε
ε ε
Suppression des ε-transitions
Besoin = savoir calculer l’ensemble des ´ etats accessibles par un chemin d’´ etiquette vide ` a partir de p = ε-clˆ oture de p = ε-C (p)
Un probl` eme de graphe orient´ e ! Exemple :
I ε-C(1) ={1}
I ε-C(3) =ε-C(4) =ε-C(5) ={3,4,5}
I ε-C(2) ={2,3,4,5}
Suppression des ε-transitions
Besoin = savoir calculer l’ensemble des ´ etats accessibles par un chemin d’´ etiquette vide ` a partir de p = ε-clˆ oture de p = ε-C (p)
Un probl` eme de graphe orient´ e ! Exemple :
5
1 a 2 3 4
b ε
ε
a ε
ε ε
5
1 2 3 4
I ε-C(1) ={1}
I ε-C(3) =ε-C(4) =ε-C(5) ={3,4,5}
I ε-C(2) ={2,3,4,5}
Suppression des ε-transitions
Besoin = savoir calculer l’ensemble des ´ etats accessibles par un chemin d’´ etiquette vide ` a partir de p = ε-clˆ oture de p = ε-C (p)
Un probl` eme de graphe orient´ e ! Exemple :
5
1 2 3 4
I ε-C(1) ={1}
I ε-C(3) =ε-C
(4) =
ε-C(5) ={3,4, 5}
I ε-C(2) ={2,
3, 4, 5}
Suppression des ε-transitions
ε-C (1) = {1}
51 a 2 3 4
b ε
ε
a ε
ε ε
ε-C (3) = ε-C (4) = ε-C (5) = {3, 4, 5}
ε-C (2) = {2, 3, 4, 5}
b
1 a 2 3 4
a 5
b
a
a a
b
b
PROBLEME ! a n’est plus reconnu !
Suppression des ε-transitions
Il faut aussi ajouter en ´ etat terminal, les ´ etats pour lesquels il existe un chemin d’´ etiquette ε qui m` ene dans un ´ etat terminal !
ε−C (p) ∩ F 6= ∅
ε-C (1) = {1}
51 a 2 3 4
b ε
ε
a ε
ε ε
ε-C (3) = ε-C (4) = ε-C (5) = {3, 4, 5}
ε-C (2) = {2, 3, 4, 5}
F
res= {2, 3, 4, 5}
Suppression des ε-transitions
5
1 a 2 3 4
b ε
ε
a ε
ε ε
b
1 a 2 3 4
a 5
b
a
a a
b
b
Suppression des ε-transitions : algorithme g´ en´ eral
Donn´ ees : A
async= (A, Q, D , F , δ) asynchrone
R´ esultat : un automate A
res= (A, Q , D, F
res, δ
res) ´ equivalent et sans ε-transition
Calculer pour chaque ´ etat p de A
asyncson ε-clˆ oture :
ε-C (p) = {q ∈ Q | il existe un chemin de p vers q par ε}
Calculer F
res= {p ∈ Q | ε-C (p) ∩ F 6= ∅}
Calculer δ
res= {(p, α, q) | p ∈ Q, r ∈ ε-C (p), (r, α, q) ∈ δ} : Pour chaque p ∈ Q
Pour chaque r ∈ ε-C (p)
Pour chaque transition (r , α, q) ∈ δ
ajouter (p, α, q) dans δ
Suppression des ε-transitions : algorithme g´ en´ eral
Donn´ ees : A
async= (A, Q, D , F , δ) asynchrone
R´ esultat : un automate A
res= (A, Q , D, F
res, δ
res) ´ equivalent et sans ε-transition
Calculer pour chaque ´ etat p de A
asyncson ε-clˆ oture : ε-C (p) = {q ∈ Q | il existe un chemin de p vers q par ε}
Calculer F
res= {p ∈ Q | ε-C (p) ∩ F 6= ∅}
Calculer δ
res= {(p, α, q) | p ∈ Q, r ∈ ε-C (p), (r, α, q) ∈ δ} : Pour chaque p ∈ Q
Pour chaque r ∈ ε-C (p)
Pour chaque transition (r , α, q) ∈ δ
ajouter (p, α, q) dans δ
Suppression des ε-transitions : algorithme g´ en´ eral
Donn´ ees : A
async= (A, Q, D , F , δ) asynchrone
R´ esultat : un automate A
res= (A, Q , D, F
res, δ
res) ´ equivalent et sans ε-transition
Calculer pour chaque ´ etat p de A
asyncson ε-clˆ oture : ε-C (p) = {q ∈ Q | il existe un chemin de p vers q par ε}
Calculer F
res= {p ∈ Q | ε-C (p) ∩ F 6= ∅}
Calculer δ
res= {(p, α, q) | p ∈ Q, r ∈ ε-C (p), (r, α, q) ∈ δ} : Pour chaque p ∈ Q
Pour chaque r ∈ ε-C (p)
Pour chaque transition (r , α, q) ∈ δ
ajouter (p, α, q) dans δ
Suppression des ε-transitions : algorithme g´ en´ eral
Donn´ ees : A
async= (A, Q, D , F , δ) asynchrone
R´ esultat : un automate A
res= (A, Q , D, F
res, δ
res) ´ equivalent et sans ε-transition
Calculer pour chaque ´ etat p de A
asyncson ε-clˆ oture : ε-C (p) = {q ∈ Q | il existe un chemin de p vers q par ε}
Calculer F
res= {p ∈ Q | ε-C (p) ∩ F 6= ∅}
Calculer δ
res= {(p, α, q) | p ∈ Q, r ∈ ε-C (p), (r, α, q) ∈ δ} : Pour chaque p ∈ Q
Pour chaque r ∈ ε-C (p)
Pour chaque transition (r , α, q) ∈ δ
ajouter (p, α, q) dans δ
Suppression des ε-transitions : algorithme g´ en´ eral
Donn´ ees : A
async= (A, Q, D , F , δ) asynchrone
R´ esultat : un automate A
res= (A, Q , D, F
res, δ
res) ´ equivalent et sans ε-transition
Calculer pour chaque ´ etat p de A
asyncson ε-clˆ oture : ε-C (p) = {q ∈ Q | il existe un chemin de p vers q par ε}
Calculer F
res= {p ∈ Q | ε-C (p) ∩ F 6= ∅}
Calculer δ
res= {(p, α, q) | p ∈ Q, r ∈ ε-C (p), (r, α, q) ∈ δ} : Pour chaque p ∈ Q
Pour chaque r ∈ ε-C (p)
Pour chaque transition (r , α, q) ∈ δ
ajouter (p, α, q) dans δ
Algorithme de calcul des ε-clˆ otures
Donn´ ees : un graphe (S, Arcs), et un ensemble de sommets I R´ esultat : l’ensemble R des sommets accessibles ` a partir de I
Initialiser R ` a I . R´ ep´ eter
ajouter ` a R les sommets y tels qu’il existe un sommet x dans R et un arc (x, y) dans le graphe TantQue le cardinal de R augmente
5
1 a 2 3 4
b ε
ε
a ε
ε ε
ε-C (1) = {1}
ε-C (3) = ε-C (4) = ε-C (5) = {3, 4, 5}
ε-C (2) = {2, 3, 4, 5}
Algorithme de calcul des ε-clˆ otures
Donn´ ees : un graphe (S, Arcs), et un ensemble de sommets I R´ esultat : l’ensemble R des sommets accessibles ` a partir de I
Initialiser R ` a I . R´ ep´ eter
ajouter ` a R les sommets y tels qu’il existe un sommet x dans R et un arc (x, y) dans le graphe TantQue le cardinal de R augmente
5
1 a 2 3 4
b ε
ε
a ε
ε ε
ε-C (1) = {1}
ε-C (3) = ε-C (4) = ε-C (5) = {3, 4, 5}
Calcul des ε-clˆ oture : nombre d’´ etapes
Proposition 2.4 :
Quand on part de I , ` a chaque ´ etape on ajoute au moins un sommet.
A chaque ´ etape, on ajoute des ´ etats. . .
accessibles ` a partir d’´ etats accessibles ` a partir de I ,
donc on ajoute des ´ etats accessibles ` a partir de I .
Le nombre d’´ etapes est born´ e par le nombre d’´ etats-1.
Calcul des ε-clˆ oture : nombre d’´ etapes
Proposition 2.4 :
Quand on part de I , ` a chaque ´ etape on ajoute au moins un sommet.
A chaque ´ etape, on ajoute des ´ etats. . .
accessibles ` a partir d’´ etats accessibles ` a partir de I ,
donc on ajoute des ´ etats accessibles ` a partir de I .
Le nombre d’´ etapes est born´ e par le nombre d’´ etats-1.
Calcul des ε-clˆ oture : nombre d’´ etapes
Proposition 2.4 :
Quand on part de I , ` a chaque ´ etape on ajoute au moins un sommet.
A chaque ´ etape, on ajoute des ´ etats. . .
accessibles ` a partir d’´ etats accessibles ` a partir de I ,
donc on ajoute des ´ etats accessibles ` a partir de I .
Le nombre d’´ etapes est born´ e par le nombre d’´ etats-1.
Calcul des ε-clˆ oture : nombre d’´ etapes
Proposition 2.4 :
Quand on part de I , ` a chaque ´ etape on ajoute au moins un sommet.
A chaque ´ etape, on ajoute des ´ etats. . .
accessibles ` a partir d’´ etats accessibles ` a partir de I ,
donc on ajoute des ´ etats accessibles ` a partir de I .
Le nombre d’´ etapes est born´ e par le nombre d’´ etats-1.
Calcul des ε-clˆ oture : nombre d’´ etapes
Proposition 2.4 :
Quand on part de I , ` a chaque ´ etape on ajoute au moins un sommet.
A chaque ´ etape, on ajoute des ´ etats. . .
accessibles ` a partir d’´ etats accessibles ` a partir de I ,
donc on ajoute des ´ etats accessibles ` a partir de I .
Le nombre d’´ etapes est born´ e par le nombre d’´ etats-1.
Exemple
ε
1 a 2 3 4
b ε
ε-C (1) = {1}
ε-C (2) = {2, 3}
ε-C (3) = {3}
ε-C (4) = {3, 4}
b
1 a 2 3 4
b b
Un ´ etat ne sert ` a rien ! On peut enlever l’´ etat 3 : cela s’appelle
Exemple
ε
1 a 2 3 4
b ε
ε-C (1) = {1}
ε-C (2) = {2, 3}
ε-C (3) = {3}
ε-C (4) = {3, 4}
b
1 a 2 3 4
b b
Un ´ etat ne sert ` a rien ! On peut enlever l’´ etat 3 : cela s’appelle
l’´ emondage.
Autre ´ emondage
b
1 a 2 3 4
a 5
b
a
a a
b
b
b
1 a 2 4
a a b
Reconnaˆıt a(a + b)
∗Autre ´ emondage
b
1 a 2 3 4
a 5
b
a
a a
b
b
b
1 a 2 4
a a b
Reconnaˆıt a(a + b)
∗Automate accessible
Soit Aut = < A, Q, D, F , δ > un automate.
accessible = dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (p, a, q) ∈ δ}.
Etat ´ accessible dans Aut = accessible ` a partir d’un ´ etat de d´ epart de Aut.
Automate accessible = automate pour lequel tous les ´ etats sont accessibles.
L’automate accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles et toutes les
transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate accessible
Soit Aut = < A, Q, D, F , δ > un automate.
accessible = dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (p, a, q) ∈ δ}.
Etat ´ accessible dans Aut = accessible ` a partir d’un ´ etat de d´ epart de Aut.
Automate accessible = automate pour lequel tous les ´ etats sont accessibles.
L’automate accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles et toutes les
transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate accessible
Soit Aut = < A, Q, D, F , δ > un automate.
accessible = dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (p, a, q) ∈ δ}.
Etat ´ accessible dans Aut = accessible ` a partir d’un ´ etat de d´ epart de Aut.
Automate accessible = automate pour lequel tous les ´ etats sont accessibles.
L’automate accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles et toutes les
transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate accessible
Soit Aut = < A, Q, D, F , δ > un automate.
accessible = dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (p, a, q) ∈ δ}.
Etat ´ accessible dans Aut = accessible ` a partir d’un ´ etat de d´ epart de Aut.
Automate accessible = automate pour lequel tous les ´ etats sont accessibles.
L’automate accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles et toutes les
transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate accessible
Soit Aut = < A, Q, D, F , δ > un automate.
accessible = dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (p, a, q) ∈ δ}.
Etat ´ accessible dans Aut = accessible ` a partir d’un ´ etat de d´ epart de Aut.
Automate accessible = automate pour lequel tous les ´ etats sont accessibles.
L’automate accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles et toutes les
transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate co-accessible
co-accessible ` a partir d’un sommet x dans Aut = accessible
`
a partir de x dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (q, a, p) ∈ δ}.
Etat ´ co-accessible dans Aut = co-accessible ` a partir d’un
´
etat d’arriv´ ee de Aut.
Automate co-accessible = automate pour lequel tous les
´
etats sont co-accessibles.
L’automate co-accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate co-accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate co-accessible
co-accessible ` a partir d’un sommet x dans Aut = accessible
`
a partir de x dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (q, a, p) ∈ δ}.
Etat ´ co-accessible dans Aut = co-accessible ` a partir d’un
´
etat d’arriv´ ee de Aut.
Automate co-accessible = automate pour lequel tous les
´
etats sont co-accessibles.
L’automate co-accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate co-accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate co-accessible
co-accessible ` a partir d’un sommet x dans Aut = accessible
`
a partir de x dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (q, a, p) ∈ δ}.
Etat ´ co-accessible dans Aut = co-accessible ` a partir d’un
´
etat d’arriv´ ee de Aut.
Automate co-accessible = automate pour lequel tous les
´
etats sont co-accessibles.
L’automate co-accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate co-accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate co-accessible
co-accessible ` a partir d’un sommet x dans Aut = accessible
`
a partir de x dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (q, a, p) ∈ δ}.
Etat ´ co-accessible dans Aut = co-accessible ` a partir d’un
´
etat d’arriv´ ee de Aut.
Automate co-accessible = automate pour lequel tous les
´
etats sont co-accessibles.
L’automate co-accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate co-accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate co-accessible
co-accessible ` a partir d’un sommet x dans Aut = accessible
`
a partir de x dans le graphe (Q , E ) o` u E = {(p, q) | ∃a ∈ A, (q, a, p) ∈ δ}.
Etat ´ co-accessible dans Aut = co-accessible ` a partir d’un
´
etat d’arriv´ ee de Aut.
Automate co-accessible = automate pour lequel tous les
´
etats sont co-accessibles.
L’automate co-accessible associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate co-accessible associ´ e ` a Aut est ´ equivalent ` a Aut.
Automate ´ emond´ e
´
emond´ e = accessible + co-accessible
Automate ´ emond´ e = automate pour lequel tous les ´ etats sont accessibles et co-accessibles.
L’automate ´ emond´ e associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles ou non
co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate ´ emond´ e ` a Aut est ´ equivalent ` a Aut.
Penser ` a ´ emonder les automates !
Automate ´ emond´ e
´
emond´ e = accessible + co-accessible
Automate ´ emond´ e = automate pour lequel tous les ´ etats sont accessibles et co-accessibles.
L’automate ´ emond´ e associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles ou non
co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate ´ emond´ e ` a Aut est ´ equivalent ` a Aut.
Penser ` a ´ emonder les automates !
Automate ´ emond´ e
´
emond´ e = accessible + co-accessible
Automate ´ emond´ e = automate pour lequel tous les ´ etats sont accessibles et co-accessibles.
L’automate ´ emond´ e associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles ou non
co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate ´ emond´ e ` a Aut est ´ equivalent ` a Aut.
Penser ` a ´ emonder les automates !
Automate ´ emond´ e
´
emond´ e = accessible + co-accessible
Automate ´ emond´ e = automate pour lequel tous les ´ etats sont accessibles et co-accessibles.
L’automate ´ emond´ e associ´ e ` a Aut = automate obtenu en supprimant tous les ´ etats non accessibles ou non
co-accessibles et toutes les transitions aboutissant en, ou, partant d’un de ces ´ etats.
L’automate ´ emond´ e ` a Aut est ´ equivalent ` a Aut.
Penser ` a ´ emonder les automates !
Temps de calcul ?
Donn´ ees : un graphe (S, A), et un ensemble de sommets I R´ esultat : l’ensemble R des sommets accessibles ` a partir de I
Initialiser R ` a I .
R´ ep´ eter (au plus Card(S) − 1 fois) ajouter ` a R les sommets y tels
qu’il existe un sommet x dans R et un arc (x, y) dans le graphe TantQue le cardinal de R augmente
Calcul en temps O (Card(S)
4)
Th´ eor` eme de Kleene
Un ensemble est rationnel si et seulement s’il est reconnaissable.
Reconnaissable ⇒ rationnel
Nous voulons montrer que pour tout automate, on peut calculer une expression rationnelle d´ ecrivant le langage reconnu. Plusieurs algorithmes existent pour cela :
Algorithme de Mc Naughton et Yamada (algorithme historique),
Algorithme d’´ elimination d’´ etats,
Lemme d’Arden.
L’algorithme par ´ elimination d’´ etats
Dans cette partie (et uniquement cette partie), nous utilisons des automates g´ en´ eralis´ es pour lesquels les ´ etiquettes des transitions sont des langages (et non des lettres).
Si (p, q ) est un couple d’´ etats d’un automate g´ en´ eralis´ e, nous
noterons L
pqle langage de l’´ etiquette de la transition (directe)
entre p et q .
Algorithme par ´ elimination d’´ etats
Soit Aut = < A, Q
0= Q ∪ {d } ∪ {f }, {d }, {f }, δ > un automate asynchrone normalis´ e.
Tant que Q est non vide, appliquer l’op´ eration suivante d’´ elimination d’´ etat :
I
choisir un ´ etat
qdans
Q(donc ni
dni
f)
I pour tous les couples (p,r)
d’´ etats de
Q0\ {q}tels qu’il existe une transition directe (p,
Lpq,q) entre pet
qd’une part et une transition directe (q,
Lqr,r) entre qet
rd’autre part,
• Ajouter une transition (p,Lpqr,r) entrepetr avec Lpqr =Lpr∪Lpq.L∗qq.Lqr.PuisLpqr devientLpr.
I
Supprimer l’´ etat
qet toutes les transitions dont
q´ etait une extr´ emit´ e.
Quand l’op´ eration pr´ ec´ edente est achev´ ee, Q est vide donc
l’automate ne contient plus que les deux ´ etats d et f , qui sont
reli´ es par une transition dont l’´ etiquette est le langage reconnu
par l’automate de d´ epart Aut .
Exemple : calcul du langage de Aut
Aut :
1 a,b 2 a 3
b
Etape 1 : normalisation de Aut ´
Aut normalis´ e :
1 a,b 2 a 3
b
ɛ f
d ɛ
Etape 2 : ´ ´ elimination successive des ´ etats
On peut ´ eliminer les ´ etats dans l’ordre que l’on souhaite.
1 a,b 2 a 3
b
ɛ f
d ɛ
Suppression de l’´ etat 2 : il faut calculer L
123et L
323.
Etape 2 : ´ ´ elimination successive des ´ etats
On peut ´ eliminer les ´ etats dans l’ordre que l’on souhaite.
1 a,b 2 a 3
b
ɛ f
d ɛ
Suppression de l’´ etat 2 : il faut calculer L
123et L
323. L
123= L
13∪ L
12.L
∗22.L
23= ∅ ∪ (a + b).ε.a
= (a + b)a
Etape 2 : ´ ´ elimination successive des ´ etats
On peut ´ eliminer les ´ etats dans l’ordre que l’on souhaite.
1 a,b 2 a 3
b
ɛ f
d ɛ
Suppression de l’´ etat 2 : il faut calculer L
123et L
323. L
123= L
13∪ L
12.L
∗22.L
23= ∅ ∪ (a + b).ε.a
= (a + b)a
L
323= L
33∪ L
32.L
∗22.L
23= ∅ ∪ b.ε
∗.a
= ba
Etape 2 : ´ ´ elimination successive des ´ etats
On peut ´ eliminer les ´ etats dans l’ordre que l’on souhaite.
1 a,b 2 a 3
b
ɛ f
d ɛ
Suppression de l’´ etat 2 : il faut calculer L
123et L
323. L
123= L
13∪ L
12.L
∗22.L
23= ∅ ∪ (a + b).ε.a
= (a + b)a
L
323= L
33∪ L
32.L
∗22.L
23= ∅ ∪ b.ε
∗.a
= ba
1 a,b 2 a 3
b
ɛ f
d ɛ
(a+b)a
Etape 2 : ´ ´ elimination successive des ´ etats
On peut ´ eliminer les ´ etats dans l’ordre que l’on souhaite.
1 a,b 2 a 3
b
ɛ f
d ɛ
Suppression de l’´ etat 2 : il faut calculer L
123et L
323. L
123= L
13∪ L
12.L
∗22.L
23= ∅ ∪ (a + b).ε.a
= (a + b)a
L
323= L
33∪ L
32.L
∗22.L
23= ∅ ∪ b.ε
∗.a
= ba
1 a,b 2 a 3
b
ɛ f
d ɛ
(a+b)a
ba
Etape 2 : ´ ´ elimination successive des ´ etats
On peut ´ eliminer les ´ etats dans l’ordre que l’on souhaite.
1 a,b 2 a 3
b
ɛ f
d ɛ
Suppression de l’´ etat 2 : il faut calculer L
123et L
323. L
123= L
13∪ L
12.L
∗22.L
23= ∅ ∪ (a + b).ε.a
= (a + b)a
L
323= L
33∪ L
32.L
∗22.L
23= ∅ ∪ b.ε
∗.a
= ba
1 3 f
d ɛ ɛ
(a+b)a
ba
Etape 2 : ´ ´ elimination successive des ´ etats
1 3 f
d ɛ
ɛ (a+b)a
ba
Suppression de l’´ etat 1 : il faut calculer L
d13.
Etape 2 : ´ ´ elimination successive des ´ etats
1 3 f
d ɛ
ɛ (a+b)a
ba
Suppression de l’´ etat 1 : il faut calculer L
d13. L
d13= L
d3∪ L
d1.L
∗11.L
13= ∅ ∪ ε.ε
∗.(a + b)a
= (a + b)a
Etape 2 : ´ ´ elimination successive des ´ etats
1 3 f
d ɛ
ɛ (a+b)a
ba
Suppression de l’´ etat 1 : il faut calculer L
d13. L
d13= L
d3∪ L
d1.L
∗11.L
13= ∅ ∪ ε.ε
∗.(a + b)a
= (a + b)a
1 3 f
d ɛ
ɛ (a+b)a
ba
(a+b)a
Etape 2 : ´ ´ elimination successive des ´ etats
1 3 f
d ɛ
ɛ (a+b)a
ba
Suppression de l’´ etat 1 : il faut calculer L
d13. L
d13= L
d3∪ L
d1.L
∗11.L
13= ∅ ∪ ε.ε
∗.(a + b)a
= (a + b)a
3 f
d ɛ
ba
(a+b)a
Etape 2 : ´ ´ elimination successive des ´ etats
3 f
d ɛ
ba
(a+b)a
Suppression de l’´ etat 3 : il faut calculer L
d3f.
Etape 2 : ´ ´ elimination successive des ´ etats
3 f
d ɛ
ba
(a+b)a
Suppression de l’´ etat 3 : il faut calculer L
d3f. L
d3f= L
df∪ L
d3.L
∗33.L
3f= ∅ ∪ (a + b)a.(ba)
∗.ε
= (a + b)a(ba)
∗Etape 2 : ´ ´ elimination successive des ´ etats
3 f
d ɛ
ba
(a+b)a
Suppression de l’´ etat 3 : il faut calculer L
d3f. L
d3f= L
df∪ L
d3.L
∗33.L
3f= ∅ ∪ (a + b)a.(ba)
∗.ε
= (a + b)a(ba)
∗3 f
d ɛ
ba
(a+b)a (a+b)a(ba)*
Etape 2 : ´ ´ elimination successive des ´ etats
3 f
d ɛ
ba
(a+b)a
Suppression de l’´ etat 3 : il faut calculer L
d3f. L
d3f= L
df∪ L
d3.L
∗33.L
3f= ∅ ∪ (a + b)a.(ba)
∗.ε
= (a + b)a(ba)
∗d f
(a+b)a(ba)*
Le langage reconnu par l’automate Aut est (a + b)a(ba)
∗.
Lemme d’Arden
Lemme d’Arden Soient K , L, X trois langages tels que ε 6∈ K . Si X = KX + L alors X = K
∗L.
(i.e. K
∗L est l’unique solution de l’´ equation X = KX + L.) Utilisation pour le calcul d’une expression rationnelle du langage reconnu par un automate.
1. Etant donn´ ´ e un automate L, on note L
il’ensemble des mots reconnus par l’automate obtenu en ne prenant que l’´ etat i comme ´ etat initial.
2. Ecriture d’un syst` ´ eme d’´ equations (sur les langages) :
I L
=
Si∈DLi I Li
=
S(i,a,j)∈δaLj
si
in’est pas terminal
I Li
=
{ε} ∪S(i,a,j)∈δaLj
si
iest terminal.
3. R´ esolution de l’´ equation en calculant ` a l’aide du lemme
d’Arden les expressions des langages L
i.
Exemple
1 a,b 2 a 3
b