Th´eorie des Langages Formels Chapitre 3 : Th´eor`eme de Kleene
Florence Lev´e
Florence.Leve@u-picardie.fr
Ann´ee 2014-2015
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 di↵´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},
= {(1, a, 2), (2, ", 3), (3, b, 4), (4, ", 3)}
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 (q0, a1, q1)(q1, a2, q2) . . .(qn 1, an, qn) avec q0 = p, qn = q (et (n 1)) (et ai lettre ou ")
Mot ´etiquette = a1 . . .an (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, di↵´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 a lettre, < 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 Aut0 =
< A, Q[{d, f }, {d}, {f }, [{(d, ", q) | q 2 D}[{(q, ", f ) | q 2 F} >
Aut0 est 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 :
Aut1 =< A1, Q1, {d1}, {f1}, 1 > un automate asynchrone normalis´e reconnaissant le langage L1,
Aut2 =< A2, Q2, {d2}, {f2}, 2 > un automate asynchrone normalis´e reconnaissant le langage L2,
d et f des ´etats n’appartenant ni `a Q1, ni `a Q2.
Supposons Q1 \ Q2 = ; et consid´erons l’automate Aut =
< A1 [ A2, Q1 [ Q2 [ {d, f }, {d}, {f },
1 [ 2 [ {(d, ", d1), (d, ", d2), (f1, ", f ), (f2, ", f )} >
Cet automate Aut est un automate asynchrone normalis´e
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 :
Aut1 =< A1, Q1, {d1}, {f1}, 1 > un automate asynchrone normalis´e reconnaissant le langage L1,
Aut2 =< A2, Q2, {d2}, {f2}, 2 > un automate asynchrone normalis´e reconnaissant le langage L2,
Supposons Q1 \ Q2 = ; et consid´erons l’automate
Aut =< A1 [ A2, Q1 [ Q2, {d1}, {f2}, 1 [ 2 [ {(f1, ", d2)} >
Cet automate Aut est un automate asynchrone normalis´e reconnaissant le langage L1L2.
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,
d0 et f 0 deux ´etats distincts n’appartenant pas `a Q. Consid´erons l’automate AutEt =
< A, Q [ {d0, f 0}, {d0}, {f 0},
[ {(d0, ", d), (f , ", f 0), (f , ", d), (d0, ", 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 de p `a r
• il existe une transition (r,↵,q),
Ajouter (p,↵,q)
Puis supprimer les "-transitions.
I Exemple :
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} 5
1 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} 5
1 a 2 3 4
b ε
ε
a ε
ε ε
"-C(3) = "-C(4) = "-C(5) = {3, 4, 5}
"-C(2) = {2, 3, 4, 5}
Fres = {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 : Aasync = (A, Q, D, F, ) asynchrone
R´esultat : un automate Ares = (A, Q, D, Fres, res) ´equivalent et sans "-transition
Calculer pour chaque ´etat p de Aasync son "-clˆoture :
"-C(p) = {q 2 Q | il existe un chemin de p vers q par "}
Calculer Fres = {p 2 Q | "-C(p) \ F 6= ;}
Calculer res = {(p, ↵, q) | p 2 Q, r 2 "-C(p), (r, ↵, q) 2 } : Pour chaque p 2 Q
Pour chaque r 2 "-C(p)
Pour chaque transition (r, ↵, q) 2 ajouter (p, ↵, q) dans
Suppression des "-transitions : algorithme g´en´eral
Donn´ees : Aasync = (A, Q, D, F, ) asynchrone
R´esultat : un automate Ares = (A, Q, D, Fres, res) ´equivalent et sans "-transition
Calculer pour chaque ´etat p de Aasync son "-clˆoture :
"-C(p) = {q 2 Q | il existe un chemin de p vers q par "}
Calculer Fres = {p 2 Q | "-C(p) \ F 6= ;}
Calculer res = {(p, ↵, q) | p 2 Q, r 2 "-C(p), (r, ↵, q) 2 } : Pour chaque p 2 Q
Pour chaque r 2 "-C(p)
Pour chaque transition (r, ↵, q) 2 ajouter (p, ↵, q) dans
Suppression des "-transitions : algorithme g´en´eral
Donn´ees : Aasync = (A, Q, D, F, ) asynchrone
R´esultat : un automate Ares = (A, Q, D, Fres, res) ´equivalent et sans "-transition
Calculer pour chaque ´etat p de Aasync son "-clˆoture :
"-C(p) = {q 2 Q | il existe un chemin de p vers q par "}
Calculer Fres = {p 2 Q | "-C(p) \ F 6= ;}
Calculer res = {(p, ↵, q) | p 2 Q, r 2 "-C(p), (r, ↵, q) 2 } : Pour chaque p 2 Q
Pour chaque r 2 "-C(p)
Pour chaque transition (r, ↵, q) 2 ajouter (p, ↵, q) dans
Suppression des "-transitions : algorithme g´en´eral
Donn´ees : Aasync = (A, Q, D, F, ) asynchrone
R´esultat : un automate Ares = (A, Q, D, Fres, res) ´equivalent et sans "-transition
Calculer pour chaque ´etat p de Aasync son "-clˆoture :
"-C(p) = {q 2 Q | il existe un chemin de p vers q par "}
Calculer Fres = {p 2 Q | "-C(p) \ F 6= ;}
Calculer res = {(p, ↵, q) | p 2 Q, r 2 "-C(p), (r, ↵, q) 2 } : Pour chaque p 2 Q
Pour chaque r 2 "-C(p)
Pour chaque transition (r, ↵, q) 2 ajouter (p, ↵, q) dans
Suppression des "-transitions : algorithme g´en´eral
Donn´ees : Aasync = (A, Q, D, F, ) asynchrone
R´esultat : un automate Ares = (A, Q, D, Fres, res) ´equivalent et sans "-transition
Calculer pour chaque ´etat p de Aasync son "-clˆoture :
"-C(p) = {q 2 Q | il existe un chemin de p vers q par "}
Calculer Fres = {p 2 Q | "-C(p) \ F 6= ;}
Calculer res = {(p, ↵, q) | p 2 Q, r 2 "-C(p), (r, ↵, q) 2 } : Pour chaque p 2 Q
Pour chaque r 2 "-C(p)
Pour chaque transition (r, ↵, q) 2 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}
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}
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 l’´emondage.
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
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) | 9a 2 A, (p, a, q) 2 }.
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) | 9a 2 A, (p, a, q) 2 }.
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) | 9a 2 A, (p, a, q) 2 }.
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) | 9a 2 A, (p, a, q) 2 }.
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) | 9a 2 A, (p, a, q) 2 }.
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) | 9a 2 A, (q, a, p) 2 }.
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) | 9a 2 A, (q, a, p) 2 }.
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) | 9a 2 A, (q, a, p) 2 }.
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) | 9a 2 A, (q, a, p) 2 }.
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) | 9a 2 A, (q, a, p) 2 }.
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)