Théorème de Kleene et Automates Finis
Théorème de Kleene et Automates Finis
Yliès Falcone
[email protected] — www.ylies.fr
1 Théorème de Kleene
5 Résumé
1 Théorème de Kleene
5 Résumé
Théorème de Kleene
Théorème de Kleene
Soit Σ un alphabet et L ⊆ Σ∗ .
L est à états finis ⇔ L est régulier.
De plus :
1 Il existe un algorithme qui transforme un automate fini en une expression régulière
équivalente.
2 Inversement, il existe un algorithme qui transforme une expression régulière en un
automate fini équivalent.
Remarque Il n’y a pas d’autre méthode connue pour montrer la décidabilité de ces deux
résultats (que d’utiliser le théorème de Kleene et de passer par les automates). □
1 Théorème de Kleene
5 Résumé
1 Théorème de Kleene
5 Résumé
b
1 2
c a,c
3
a b
b
1 2
c a,c
3
X1 = aX1 + bX2 + ϵ
X2 = bX2 + (a + c)X3
X3 = cX1
Question :
Comment résoudre un tel système d’équations ?
Lemme
Soient A, B ⊆ Σ∗ des langages. Considérons l’équation :
X = AX + B
Attention :
Pour résoudre un système d’équations correspondant à un automate, on applique le
lemme que dans le deuxième cas.
Remarquons que, comme l’automate d’entrée est soit un ADEF ou un ANDEF (et
pas un ϵ-ANDEF), le cas 2 s’applique toujours.
Théorème
Soit A = (Q, Σ, q0 , δ, F ) un automate fini.
Soit (Lq | q ∈ A) la plus petite solution de SE (A).
Alors,
L(A) = LXq0 .
a b
b
1 2
c a,c
3
X1 = aX1 + bX2 + ϵ
X2 = bX2 + (a + c)X3
X3 = cX1
a b
b
1 2
c a,c
3
X1 = aX1 + bX2 + ϵ
X2 = bX2 + (a + c)cX1
X3 = cX1
X1 = aX1 + bX2 + ϵ
X2 = b ∗ (a + c)cX1
X3 = cX1
a b
b
1 2
c a,c
3
X1 = (a + bb ∗ (a + c)c)X1 + ϵ
X2 = b ∗ (a + c)cX1
X3 = cX1
/ L(a + bb ∗ (a + c)c)) :
Et on applique le lemme d’Arden sur la première équation (ϵ ∈
X1 = (a + bb ∗ (a + c)c)∗
X2 = b ∗ (a + c)cX1
X3 = cX1
a b
b
1 2
c a,c
3
b b
a
42 52
a
b b
a
42 52
a
b b
a
42 52
a
X42 = (b + ab ∗ a)X42 + ab ∗
X52 = b ∗ (aX42 + ϵ)
/ (b + ab ∗ a)) :
On applique le lemme d’Arden sur la première équation (ϵ ∈
X42 = (b + ab ∗ a)∗ ab ∗
X52 = b ∗ (aX42 + ϵ)
b b
a
42 52
a
b b
a
42 52
a
X42 = b ∗ aX52
X52 = bX52 + aX42 + ϵ
X42 = b ∗ aX52
X52 = bX52 + ab ∗ aX52 + ϵ
b b
a
42 52
a
X42 = b ∗ aX52
X52 = (b + ab ∗ a)X52 + ϵ
/ (b + ab ∗ a)) :
On applique le lemme d’Arden sur la deuxième équation (ϵ ∈
X42 = b ∗ aX52
X52 = (b + ab ∗ a)∗ + ϵ = (b + ab ∗ a)∗
1 Théorème de Kleene
5 Résumé
Idée :
Étiqueter les transitions par des expressions régulières.
Supprimer les états (non initiaux et finaux) en mettant à jour les transitions sans
modifier le langage.
Phases de la méthode :
1 Normalisation
2 Élimination des états
Normalisation - définition
Normalisation - exemple 1
b b
Considérons l’automate ci-contre.
a
Cet automate n’est pas normalisé
1 2 ni pour l’initialisation ni pour la
a terminaison.
a
i i f
Normalisation - exemple 2
b b
a b Considérons l’automate ci-contre.
Cet automate n’est pas normalisé
1 2 3 4
ni pour l’initialisation ni pour la
a a terminaison.
a
Remarque L’ordre d’élimination des états influe sur la taille de l’expression finale
générée. Des heuristiques existent pour le choix (étape EE2). □
Suppression de l’état 1
b b + a · b∗ · a
a
i 1 2 f
a
b∗ · a
b + a · b∗ · a
b∗ · a
i 2 f
Suppression de l’état 2
b + a · b∗ · a
b∗ · a
i 2 f
(b∗ · a) · ( b + a · b∗ · a )∗
(b∗ · a) · ( b + a · b∗ · a )∗
i f
Suppression de l’état 1
b
b b
a b
+ ab
i 1 a 2 3 a 4
a a
aa
f
b b
b
a + ab
i 2 3 a 4
a
aa
f
Suppression de l’état 2
b + a (aa)∗ ( + ab) b
b
a + ab
i 2 3 4
a + a (aa)∗ ( + ab)
aa a
f
b
b
b + a (aa)∗ ( + ab)
i 3 4
a + a (aa)∗ ( + ab)
f
Suppression de l’état 3
(b + a (aa)∗ (! + ab)) · b∗ · b
b (a + a (aa)∗ (! + ab)) · b∗ · b
b
b + a (aa)∗ (! + ab)
i 3 4
a + a (aa)∗ (! + ab)
!
(b + a (aa)∗ (! + ab)) · b∗ ! + (a + a (aa)∗ ! + ab) · b∗
f
(a (aa)∗ ( + ab)) b+
(b + a (aa)∗ ( + ab)) b∗
Suppression de l’état 4
(a (aa)∗ ( + ab)) b+
(b + a (aa)∗ ( + ab)) b∗
+
( (b + a (aa)∗ ( + ab)) b+ ) · ( (a (aa)∗ ( + ab)) b+ )∗ · ( + (a (aa)∗ ( + ab)) b∗ )
i f
(b + a (aa)∗ (! + ab)) b∗
+
( (b + a (aa)∗ (! + ab)) b+ ) · ( (a (aa)∗ (! + ab)) b+ )∗ · ( ! + (a (aa)∗ (! + ab)) b∗ )
1 Théorème de Kleene
5 Résumé
L’idée intuitive
Théorème
Soit A un ADEF, alors :
il existe une expression régulière e telle que L(e) = L(A),
il existe un algorithme de construction de e.
1. Robert McNaughton et Hisao Yamada, « Regular expressions and state graphs for automata », IRE Trans.
Electronic Computers, 1960.
Y. Falcone (UGA - Inria) INF 302 : Langages & Automates 31 / 71
Univ. Grenoble Alpes, Département Licence Sciences et Technologies, Licence deuxième année
Preuve
L’idée
Construire une collection d’expressions régulières qui décrivent progressivement des
chemins de moins en moins contraints dans l’automate, par induction.
Début de la démonstration
Supposons, quitte à utiliser une fonction de renommage, que les états sont
numérotés de 1 à n (ce qui est possible car il y a un nombre fini d’états).
k
Soit Ri,j l’expression régulière des mots étiquettes d’un chemin entre l’état i et l’état
j qui passe uniquement par des états intermédiaires plus petits que k.
Il n’y a aucune contrainte sur i et j.
L’expression régulière de l’automate est :
X n
R1,f
f ∈F
k
Nous allons calculer les Ri,j pour k = 0, . . . , n.
0
Calcul de Ri,j
0
Ri,j est l’expression régulière des chemins entre l’état i et l’état j dont tous les états
intermédiaires ont un numéro plus petit que 0 ;
,→ c’est-à-dire qui n’ont aucun état intermédiaire.
Intéressons nous aux chemins directs entre un état i et un état j : il y a deux cas
possibles.
k
Illustration de Ri,j
Première possibilité concernant le positionnement de i et j par rapport à k
k k
1 1
états
0 0
chemins
k
Illustration de Ri,j
Seconde possibilité concernant le positionnement de i et j par rapport à k
k k
1 1
états
0 0
chemins
k
Illustration de Ri,j
Un chemin ne passe pas obligatoirement par l’état k (quelque soit le positionnement de i et j par rapport à k)
k k
1 1
états
0 0
chemins
k
Calcul de Ri,j
Résumons :
Le positionnement de i et j peut être quelconque par rapport à k : la contrainte
k
reliée à Ri,j ne porte que sur les états intermédiaires.
k
Un chemin dans Ri,j peut passer par l’état k, ou non.
k k−1
Exprimons maintenant Ri,j en fonction de Ri,j .
k
Considérons un chemin de Ri,j :
k−1
Soit il ne passe pas par l’état k, alors c’est un chemin de Ri,j .
Soit il passe par l’état k (au moins une fois). On peut décomposer le chemin en
chemins qui ne passent pas par un état intermédiaire plus grand que k − 1.
k−1 k−1 ∗ k−1
Ri,k Rk,k Rk,j (un chemin qui passe 2
i k k j fois par k)
Application de la méthode
|Q|−1 |Q|
Remarque En pratique, on arrêtera le calcul à Ri,j et calculera les R1,f , pour f ∈ F
au besoin. □
b b
a
42 52
a
1 0 0 0 ∗ 0
0
Calcul des Ri,j Calcul des Ri,j = Ri,j + Ri,1 · (R1,1 ) · R1,j
0
R1,1 =b+ϵ 0
R2,1 =a 1
R1,1 = b∗
1
R2,1 = a · b∗
1
0
R1,2 =a 0
R2,2 =b+ϵ 1
R1,2 = b∗ · a R2,2 =
b + a · b∗ · a
2 1 1 1 ∗ 1
Calcul de R1,2 = R1,2 + R1,2 · (R2,2 ) · R2,2
2
R1,2 = (b ∗ · a) + (b ∗ · a) · (b + a · b ∗ · a)∗ · (b + a · b ∗ · a)
= (b ∗ · a) + (b ∗ · a) · (b + a · b ∗ · a)+
= (b ∗ · a) · (b + a · b ∗ · a)∗
b
1 2
c a,c
3
0
Calcul des Ri,j
0 0 0
R1,1 =a+ϵ R2,1 =∅ R3,1 =c
0 0 0
R1,2 =b R2,2 =b+ϵ R3,2 =∅
0 0 0
R1,3 =∅ R2,3 =a+c R3,3 =ϵ
0
Ri,j
0 0 0
R1,1 =a+ϵ R2,1 =∅ R3,1 =c
0 0 0
R1,2 =b R2,2 =b+ϵ R3,2 =∅
0 0 0
R1,3 =∅ R2,3 =a+c R3,3 =ϵ
1 0 0 0 0 ∗
Calcul des Ri,j = Ri,j + Ri,1 · R1,1 · R1,j
1
R1,1 = a∗ 1
R2,1 =∅ 1
R3,1 = c · a∗
1
R1,2 = a∗ b 1
R2,2 =b+ϵ 1
R3,2 = c · a∗ · b
1 1 1
R1,3 =∅ R2,3 =a+c R3,3 =ϵ
2 1 1 1 1 ∗
Calcul des Ri,j = Ri,j + Ri,2 · R2,2 · R2,j
2
R1,1 = a∗ 2
R2,1 =∅ 2
R3,1 = c · a∗
2
R1,2 = a∗ · b + 2
R2,2 = b∗ 2
R3,2 = c · a∗ · b +
∗ ∗
2
R1,3 +
= a · b · (a + c) 2
R2,3 = b · (a + c) 2
R3,3 = ϵ + c · a∗ · b + · (a + c)
b
1 2
c a,c
3
Expression régulière de A
3
R1,1 = a∗ + (a∗ · b + · (a + c)) · (ϵ + c · a∗ · b + · (a + c))∗ · c · a∗
3
R1,1 = a∗ + (a∗ · b + · (a + c)) · (c · a∗ · b + · (a + c))∗ · c · a∗
Cette expression régulière est équivalente à :
a∗ · (b + · (a + c) · c · a∗ )∗
1 Théorème de Kleene
5 Résumé
1 Théorème de Kleene
5 Résumé
1 Théorème de Kleene
5 Résumé
L’idée
Objectif :
Montrer que tout langage décrit par une expression régulière peut être reconnu par un
automate
,→ pour chaque expression régulière e, on peut trouver un automate A tel que
L(e) = L(A)
Automates construits
Les automates que nous allons construire sont des ϵ-ANDEF tels que :
un seul état accepteur,
pas de transition depuis l’état acepteur,
pas de transition vers l’état initial.
Symboles seuls (a ∈ Σ)
e1 + e2
ϵ
ϵ
ϵ ϵ
e1 · e2
e∗
ϵ
ϵ
ϵ
1 Théorème de Kleene
5 Résumé
Introduction de la méthode
Méthode fonctionne par calcul de la dérivée d’une expression régulière pour laquelle on
veut construire un automate.
Intuitivement, la dérivée d’une expression régulière e sur un symbole a est une expression
régulière décrivant ce qu’il manque après avoir lu a pour former un mot de e.
Avantage de la méthode :
travaille uniquement sur la syntaxe des expressions régulières
peut se faire “à la volée"
Soit Σ un alphabet (utilisé dans la suite pour construire des expressions régulières).
Opérateur qui indique si ϵ appartient au langage dénoté par une expression régulière.
Rappel : intuitivement, la dérivée d’une expression régulière e sur un symbole a est une
expression régulière décrivant ce qu’il manque après avoir lu a pour former un mot de e.
Nous donnons la précédence à l’opérateur de dérivation par rapport aux autres opérateurs.
∂ ∂ ∂ ∂
∂ϵ e =e ∂a·u e = ∂u dea, avec dea = ∂a e
∂
Donc ∂
∂a·b (a · b)∗ = ∂
∂b b · (a · b)∗ = b ·(a · b)∗ + c(b) · ∂b
∂
(a · b)∗ = (a · b)∗
∂b
|{z} |{z}
ϵ ∅
∂r
∂a
a
init r
b
∂r
∂b
Démonstration.
Admis.
1 Théorème de Kleene
5 Résumé
Analyse lexicale
Analyse lexicale
Lexique
opérateurs : {+, ∗}
séparateurs : ( )
une constante entière NUM
un identificateur ID
+ [a-z][a-zA-Z0-9]*
+
a-z,A-Z
* a-z
*
( 0-9
(
[1-9][0-9]*
0-9
)
) 1-9
Spécifications en LeX
déclarations
%%
règles
%%
procédures
Règles
modele1 {action1}
...
modele2 {action2}
Exemple (Règles)
1 Suppression des espaces redondants
%%
[ \t]+ printf(" ");
%%
yywrap(){return(1);}
2 Reconnaissance d’un entier
integer {digit}+
%%
{integer} {attribut=atoi(yytext);return(Integer);}
1 Théorème de Kleene
5 Résumé
Résumé I
Résumé II
Id
/≈ ADEF ANDEF
Det
Id Id
Det ◦ ` `
-ANDEF
équations équations
constr.
+ Arden + Arden
compo.
ER
ADEF : automate déterministe /≈ : minimisation
ANDEF : automate non-déterministe Id : identité
-ANDEF : automate non-déterministe Det : déterminisation
avec -transitions ` : élimination des -transitions
ER : expressions régulières constr. compo : construction compositionnelle