Théorie des Langages et
Compilation
Leila Jemni Ben Ayed
Leila Jemni Ben Ayed
Maître de Conférences
Ecole Nationale des Sciences de l’Informatique
Janvier 2013
Théorie des langages
Objectif. Ce cours présente la théorie des langages en traitant trois aspects :
Objectif. Ce cours présente la théorie des langages en traitant trois aspects :
L’aspect reconnaissance par les automates finis, les automates à pile et les
machines de turing, L’aspect génération par les grammaires régulières, non
contextuelles et contextuelles, et L’aspect représentation par propriétés
contextuelles et contextuelles, et L’aspect représentation par propriétés
mesurables, définitions récursives et expressions régulières. L’objectif est
d’introduire des connaissances en théorie des langages et des automates afin
de pouvoir les étendre à la description des langages de programmation et leur
analyse syntaxique en vue de leur compilation.
Références. A. Aho, R. Sethi et J. Ullman, Compilateurs Principes,
Techniques et Outils, InterEditions, Paris, 1991.
- P. Walper, Introduction à la Calculabilité, Dunod, Paris, 2001.
-G. Dowek et J. Lévy, Introduction à la théorie des langages de programmation,
Éditions de l'École polytechnique, Paris, 2006.
Théorie des langages
I. Mots et langages
II.
Les automates finis et les langages
réguliers
réguliers
III. Les grammaires
IV. Les grammaires non contextuelles
V.
VI. Les machines de Turing
Les automates à piles
I. Mots et langages
Plan
Langage
Langage
I.1. Vocabulaire et Mot
I.2.
I.2.
I.3. Opérations sur les langages
I.4. Propriétés des langages
I.5. Définition des langages
Le lemme d’Arden
I.6.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
4
I.1. Vocabulaire et mot Exercices
Définition 1. Alphabet: Un alphabet (ou vocabulaire) est
un ensemble fini, non vide de symboles. On le note
généralement X.
Définition 2. Fermeture: Soit X, un alphabet. On note par
Définition 2. Fermeture: Soit X, un alphabet. On note par
X*, l’ensemble de toutes les séquences finies de symboles
de X.
Rq le symbole * est une fonction qui, appliquée à un
ensemble non vide X, donne un autre symbole infini X*. On
dit que X* est la fermeture de X.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
5
I.1. Vocabulaire et mot
Définition 3. Chaine vide: Une chaine vide est une chaine
qui ne contient aucun symbole du vocabulaire ( appelée
aussi mot vide). Une chaine vide est un élément de X*. On
la note : e
la note : e
Définition 4. Longueur d’une chaine: La longueur d’une
chaine finie w est le nombre de symboles qu’elle contient.
On la note |w |.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
6
e
e
e
e
e
e
I.1. Vocabulaire et mot
Définition 5. Mot : Un mot w est une application d’un
segment initial de longueur n vers le vocabulaire:
: [n] fi
X
i est l’image de i dans X; i est le rang de w
i est l’image de i dans X; i est le rang de w
i = a et a ˛ X alors w
i dans X;
i dans X;
i est une occurrence de a dans le
Où w
Où w
si w
mot w
.
Exercice :
Donner les w
1) abba sur le vocabulaire {a, b}
2)
i associés aux mots sivants :
(x1(x2+x1)) sur le vocabulaire {x1, x2, +, , (, )}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
7
w
w
˛
w
I.1. Vocabulaire et mot
Corrigé:
1) Si le vocabulaire X = {a, b} alors dans le mot abba,
1 = a
2 = b
3 = b
3 = b
4 = a
2) Si le vocabulaire est X = {x1, x2, +, , (, )} alors dans le mot (x1(x2+x1))
1 = (
4 = (
7 = x1
2 = x1
5 = x2
8 = )
3 = *
6 = +
9 = )
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
8
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
I.1. Vocabulaire et mot
Longueur d’un mot : La longueur d’un mot w est le
nombre de symboles qu’il contient , on le note
w |.
|w
Exercice :
Exercice :
Quelle est la longueur des mots abba et e
Vocabulaire {a,b}
Corrigé:
Le mot abba est de longueur 4, |abba| = 4
Le mot e est de longueur 0, | e | = 0
sur le
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
9
w
w
I.1. Vocabulaire et mot
w |x.
w | .
. On le note |w
. On le note |w
w |x
˛ X |w
x˛
Nombre d’occurrences d’un symbole dans un mot :
Le nombre d’occurrences d’un symbole x dans un mot
w est le nombre de fois où ce symbole apparaît dans
ce mot w
ce mot w
|w
w | = S
Exercice :
Quel est le nombre d’occurrences de b dans les mots
abba et e
Corrigé :
|abba|b=2
| e |b=0
Théorie des Langages et Compilation-2013
Leila Jemni Ben Ayed
10
w
w
w
w
w
w
S
S
S
˛
˛
w
w
I.2. Langage
Définition 6. Langage :
On définit un langage sur un alphabet X comme un sous
ensemble de X*
Exemple:
Exemple:
• Si le vocabulaire est X = {0, 1, 2, 3, …9}
L = { représentations décimales des nombres entiers
naturels}
L = |N
• Si le vocabulaire est X = {x1, x2, +, *, (, )}
L = {expressions arithmétiques parenthésées}
manipulant x1, x2, + et *
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
11
I.2. Langage
• Si X est la vocabulaire du langage de programmation C
X = {main, (, ), #, Include, <, >, ., ;, id, nb, …….}
L= {programmes C corrects syntaxiquement}
• Si X est le vocabulaire de la logique des propositions
X ={p, (, ), fi
L = {formules bien formées de la logique des
} où p désigne une proposition
, (cid:216)
, (cid:217)
propositions}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
12
fi
fi
fi
(cid:217)
(cid:217)
(cid:217)
(cid:216)
(cid:216)
(cid:216)
I.3. Opérations sur les langages
Concaténation de deux mots:
Si u et v deux mots / |u| = n et |v| = m alors:
u.v = w
/
i ˛
i = ui
= v "
n+j = vj
[n] et
[m]
[m]
j ˛
j ˛
Le mot vide e est un élément neutre de la
concaténation
u. e = e .u = u
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
13
w
"
w
w
"
I.3. Opérations sur les langages
Soient A et B deux langages alors on a les opérations suivantes:
Intersection
Union
Complémentation
Concaténation
A˙ B = {w / w
A+B = {w / w
A-B = {w / w
A et w
A ou w
A et w
B}
B}
B}
A.B = {w / $
A.B = {w / $
$ u ˛ A et $
$ u ˛ A et $
$ v ˛ B et w = u.v}
$ v ˛ B et w = u.v}
Propriétés
Soient A, B, C des langages, on a
A.(B+C) = A.B + A.C
(A+B).C = A.C+B.C
A ˝ B ⇒
AC ˝ BC
CA ˝
CB
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
14
˛
˛
˛
˛
˛
ˇ
$
Publicité
$
$
$
$
$
$
$
I.3. Opérations sur les langages
Notation:
ak = aaaaaaaaa……
<----------------->
k fois
k fois
a2 = aa
a0 = e
a* = {ai / i ‡ 0} = {a0, a1, a2, ….ai, …}
a+ = {ai / i >0} = {a1, a2, …., ai, …}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
15
I.3. Opérations sur les langages
L’opération *
A* = ¨ Ai avec A0 = {e }
i‡ 0
A1 = A
Ai = A.Ai-1 "
Ai = A.Ai-1 "
i‡ 1
i‡ 1
L’opération +
A+ = ¨ Ai
i‡ 1
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
16
I.3. Opérations sur les langages
Exercice :
Calculer A* pour chacun des ensembles A suivants:
1) A = {a}
2)
Corrigé :
1) Si A = {a} alors A = {a} = a*
X* / |w | = 2k+1 / k ‡ 0}
A = {w
Car A* = A0 + A1 + A2 +… Ai +…
Car A* = A0 + A1 + A2 +… Ai +…
A0 = {e } = {a0}
A1 = AA0 = {a} {e } = {a} = {a1}
A2 = AA1 = {a}{a} = {aa} = {a2}
Ai = {ai}
Ai+1 = A Ai = {a}{ai} = {ai+1}
….
A = {e , a, aa, aaa, …} = {a0, a1, a2, a3, …} = a
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
17
˛
I.3. Opérations sur les langages
X* / |w | = 2k+1 / k ‡ 0}
2) Si A = {w
A = X
Car A* = A0 + A1 + A2 +… Ai +…
A0 = {e }
A1 = AA0 = A{e } = {w
A2 = AA1
A2 = AA1
‡ 0}
X* / |w |= 2k+1/ k ‡ 0}
X* / |w |= 2k+1/ k ‡ 0}
w | = 2k+1 / k ‡
X* / |w
X* / |w | = 2k+1/ k‡ 0} {w
X* / |w | = 2k+1/ k‡ 0} {w
X* / |w | = 2k+2/ k‡ 0}
X* / |w | = 2k / k>0}
X* / |w | = 2k / k>0} = {w
X* / |w
w | = 2k/
= {w
= {w
= {w
= {w
A0 + A2 = {e } + {w
‡ 0}
k‡
A0 + A1 + A2 = X*
Donc A = X
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
18
˛
˛
w
w
‡
‡
˛
˛
˛
˛
˛
˛
˛
˛
w
w
‡
‡
I.4. Propriétés des langages
Exercice :
Calculer A.f et A.{e }
Montrer qu’on n’a pas A.(B+C) = A.B + A.C
Corrigé:
1- A.f = f
1- A.f = f
2- A.{e } = {e }.A= A
5- On n’a pas A.(B˙ C) = A.B ˙ A.C
.A = f
.A = f
Contre exemple : A = {e , x}, B = {xyzt}, C = {yzt}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
19
I.4. Propriétés des langages
Contre exemple : A = {e , x}, B = {xy}, C = {y}
Car A.(B˙ C) „ A.B ˙ A.C
En effet (B˙ C) = f donc A. (B˙ C) = f
Par contre A.B = {xy, xxy} et A.C = {y, xy} donc A.B ˙ A.C = {xy}
6- On n’a pas A+ = A* - {e
6- On n’a pas A+ = A* - {e
Pour A = {e , a}
A+ = A1 + A2 + … = {e
A* = A0 + A1 + A2 + … = {ai / i ‡ 0}
A* - {e } = {ai / i > 0} „ A+ car A ˚
A+ = A* - {e
e } est vraie lorsque A ne contient pas e
e } par contre on A* =A+ + {e }
e } par contre on A* =A+ + {e }
e , a} + {e , a, aa} + …
{e }
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
20
e
e
e
e
e
e
e
e
I.5. Définition de langages (propriété
mesurable ou définition récursive)
• Définition par propriété mesurable
– L est l’ensemble des mots sur {a, b} de longueur paire
w | = 2k, K ‡ 0}
{a, b}*/ |w
L = { w
– L est l’ensemble des mots sur {a, b} ayant un nombre
– L est l’ensemble des mots sur {a, b} ayant un nombre
impaire de b
L = { w
{a, b}*/ |w
w |b = 2k+1, K ‡ 0}
– L est l’ensemble des mots sur {a, b} où tous les a précèdent
les b et sont de même nombre
L = { anbn, n ‡ 0}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
21
˛
w
w
˛
w
w
I.5. Définition de langages (propriétés
mesurables ou récursive)
• Définition récursive
– L est l’ensemble des mots sur {a, b} où tous les a précèdent
les b et sont de même nombre
La définition par propriété mesurable est la suivante :
La définition par propriété mesurable est la suivante :
L = { anbn, n ‡ 0}
La définition récursive du même langage est :
L = { w
{a, b}*/ w
w = e
e ou w
w = aw
1b et w
1
L}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
22
‡
w
w
w
˛
˛
˛
˛
w
w
e
e
w
w
w
w
w
w
w
w
˛
˛
˛
˛
I.5. Définition de langages (propriétés
mesurables ou récursive)
• Définition récursive
– L est l’ensemble des mots palindromes sur le
vocabulaire {a, b}, de longueur paire.
L = { w
w = bw
{a, b}*/ w
1b et w
1
w = aa ou w
L}
w = bb ou w
w = aw
1a ou
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
23
w
w
w
˛
˛
˛
˛
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
˛
˛
˛
˛
I.5. Définition de langages (propriétés
mesurables ou récursive)
• Définition récursive
– L est l’ensemble des mots palindromes sur le
vocabulaire {a, b}, de longueur impaire.
L = { w
w = bw
{a, b}*/ w
1b et w
1
w = a ou w
L}
w = b ou w
w = aw
1a ou
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
24
w
w
w
˛
˛
˛
˛
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
˛
˛
˛
˛
I.5. Définition de langages (propriétés
mesurables ou récursive)
• Définition récursive
– L est l’ensemble des mots palindromes sur le
vocabulaire {a, b}.
L = { w
ou w
{a, b}*/ w
1a ou w
w = a ou w
w = bw
w = b ou w
1b et w
1
w = aa ou w
L}
w = aw
Publicité
w = bb
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
25
w
w
w
˛
˛
˛
˛
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
˛
˛
˛
˛
I.6. Le lemme d’Arden
Pour deux langages A et B d’un vocabulaire X*,
Les équations L= AL+B et L = LA+B admettent
Les équations L= AL+B et L = LA+B admettent
respectivement comme solution minimale A*B
et BA*. Cette solution est unique si e
ˇ A.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
26
II. Les automates finis et les
langages réguliers
Plan
II.1. Les automates finis déterministes
II.1. Les automates finis déterministes
II.2. Langage accepté par un automate fini
II.3. Rendre déterministe un automate fini non
déterministe
II.4. Les langages réguliers LR
II.5. Minimisation d’un automate fini déterministe
II.6. Expressions régulières et automates finis
II.7. Limites des automates finis
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
27
II.1. Les automates finis déterministes
Définition7. Automate fini
Un automate fini consiste en un quintuple de la
forme (Q, X, d , q0, F) avec
Q est un ensemble fini d’états
Q est un ensemble fini d’états
X est un alphabet
d est une fonction de transition
d : Q x X fi
q0 est l’état initial
F est l’ensemble des états finaux F ˝ Q
(Q) (l’ensemble de tous les sous ensembles de Q)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
28
d
d
d
d
d
d
R
II.1. Les automates finis déterministes
Exemple d’un automate fini
OFF
Presser
Presser
Q = {OFF, ON}
X = {presser}
q0 = OFF
F = {ON}
d (OFF, presser) = {ON}
d (ON, presser) = {OFF}
ON
Cet automate reconnaît les
séquences de presser qui
nous mènent toujours à
l’état final souhaité ON
(lampe allumée)
(lampe allumée)
En partant d’un état où la
lampe est éteinte (OFF)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
29
d
d
d
d
d
d
II.1. Les automates finis déterministes
Exemple d’un automate fini
OFF
Presser
Presser
Presser
ON
La séquence:
presser presser presser est acceptée
Par ce que
•en partant de l’état off, avec un presser on passe à l’état ON
•En lisant le deuxième presser à partir de l’état ON, on revient à l’état OFF
•Le dernier presser lu nous mène de l’état OFF à l’état ON
Donc à la fin de la lecture des trois presser, trois transitions sont effectuées et la
dernière nous mène à l’état ON donc la séquence est acceptée.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
30
II.1. Les automates finis déterministes
Exemple d’un automate fini
OFF
OFF
OFF
presser
presser
Presser
Presser
Presser
presser
presser
presser presser presser
presser
presser
presser
ONON
ONON
ON
Le mot est lu et l’état est final
donc le mot est accepté
donc le mot est accepté
La séquence:
presser presser presser est acceptée
Par ce que
•en partant de l’état off, avec un presser on passe à l’état ON
•En lisant le deuxième presser à partir de l’état ON, on revient à l’état OFF
•Le dernier presser lu nous mène de l’état OFF à l’état ON
Donc à la fin de la lecture des trois presser, trois transitions sont effectuées et la
dernière nous mène à l’état ON donc la séquence est acceptée.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
31
II.1. Les automates finis déterministes
Exemple d’un automate fini
OFF
Presser
Presser
ON
La séquence:
presser presser n’est pas acceptée par l’automate
Par ce que
•en partant de l’état off, avec un presser on passe à l’état ON
•En lisant le deuxième presser à partir de l’état ON, on revient à l’état OFF
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
32
II.1. Les automates finis déterministes
Exemple d’un automate fini
A
OFF
Presser
Presser
ON
Le langage accepté par cet automate est l’ensemble des séquences de presser qui,
partant de l’état initial OFF, après la lecture de tous les symboles de la séquence,
on se trouve à l’état ON.
Ce langage (le langage accepté par l’automate A, L(A)) est l’ensemble des
séquences de presser de longueur impaire.
‡ 0}
L(A) = {w
w | = 2k + 1, k ‡
{presser}*/ | w
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
33
w
w
w
˛
˛
˛
˛
w
w
‡
‡
II.1. Les automates finis déterministes
Exemple d’un automate fini qui accepte
{w
w | = 2k, k ‡
{a}*/ |w
‡ 0}
A
P
P
a
a
(aa)*
I
I
L’état initial devient un état final puisque le mot e est accepté (pour k = 0).
En étant à l’état initial de l’automate, on peut ne rien lire (c-a-d lire 0 symboles
donc lire e ) et on est déjà à un état final.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
34
w
w
w
˛
˛
˛
˛
w
w
‡
‡
II.1. Les automates finis déterministes
Exercices :
1) Construire un automate fini qui accepte le langage suivant:
{w
w | = 2k, k > 0}
{a}*/ |w
A
q0
a
q1
aa(aa)*
q2
a
a
Le plus petit mot accepté est aa (On atteint l’état final après la lecture de aa).
Après il faudra continuer à avoir un nombre paire de a. Donc quand on se trouve à
l’état d’acceptation ou l’état final, il faudra continuer à lire des séquences de 2a
pour revenir à l’état final.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
35
w
w
w
˛
˛
˛
˛
w
w
II.1. Les automates finis déterministes
{w
A
{a}*/ |w
w | = 2k, k > 0} (autre solution)
q0
a
q1
a
q2
a
a
a
q3
Le plus petit mot accepté est aa (On atteint l’état final après la lecture de aa).
Après il faudra continuer à avoir un nombre paire de a. Donc quand on se trouve à
l’état d’acceptation ou l’état final, il faudra continuer à lire des séquences de 2a
pour revenir à l’état final.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
36
w
w
w
˛
˛
˛
˛
w
w
II.1. Les automates finis déterministes
2) Construire un automate fini qui accepte le langage suivant:
{a,b}*/ |w
w |a = 3k+2, k ‡
‡ 0}
A
b
q0
q0
a
b
a
q2
q2
q1
q1
a
b
babab(ababab)*
Le plus petit mot accepté est aa (On atteint l’état final après la lecture de aa).
Après il faudra continuer à avoir un nombre paire de a. Donc quand on se trouve à
l’état d’acceptation ou l’état final, il faudra continuer à lire des séquences de 2a
pour revenir à l’état final. Les b on peut les lire à n’importe quel état et on reste
au même état puisqu’ils n’engendrent pas une transitions contrairement à un a lu
qui nous fait passer de q0 à q1 ou de q1 à q2 ou de q2 à q0 par ce qu’il faut les
comptabiliser.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
37
w
w
‡
‡
Publicité
II.1. Les automates finis déterministes
3) Construire un automate fini qui accepte le langage suivant:
{w
w | = 3k+1, k ‡
{a}*/ |w
‡ 0}
a(aaa)*
A
q0
a
q1
a
q2
q3
a
a
a
Le plus petit mot accepté est a (On atteint l’état final après la lecture de a). Après il
faudra continuer à avoir un nombre multiple de 3a. Donc quand on se trouve à
l’état d’acceptation ou l’état final, il faudra continuer à lire des séquences de 3a
pour revenir à l’état final.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
38
w
w
w
˛
˛
˛
˛
w
w
‡
‡
II.1. Les automates finis déterministes
{w
A
{a}*/ |w
w | = 3k+1, k ‡
‡ 0} (autre solution)
a(aaa)*
q0
a
a
a
q1
a
q2
Le plus petit mot accepté est a (On atteint l’état final après la lecture de a). Après il
faudra continuer à avoir un nombre multiple de 3a. Donc quand on se trouve à
l’état d’acceptation ou l’état final, il faudra continuer à lire des séquences de 3a
pour revenir à l’état final.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
39
w
w
w
˛
˛
˛
˛
w
w
‡
‡
II.1. Les automates finis déterministes
4) Construire un automate fini qui accepte le langage suivant:
{w
{a, b, c}*/ |w
‡ 0}
w |a = 3k+1, k ‡
A
b, c
q0
a
a
a
b, c
a
q1
q2
b, c
(b+c)a(b+c)(a(b+c)a(b+c)a(b+c))
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
40
w
w
w
˛
˛
˛
˛
w
w
‡
‡
II.1. Les automates finis déterministes
5) Construire un automate fini qui accepte l’ensemble des mots
sur {a, b, c} ayant aba comme facteur (ou sous chaine)
b
q2
a
q3
a, b, c
b, c
q0
a
c
a
q1
b, c
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
41
II.1. Les automates finis déterministes
6) Construire un automate fini qui accepte l’ensemble des
représentations décimales des nombres entiers ayant le chiffre 1
dans les dizaines (Exemple: 12316, 13, 210)
0,1,2,3,4,5,6,7,8,9
1
q0
0,1,2,3,4,5,6,7,8,9
q1
q2
c*1c
(0+1+2+…+9)*1(0+1+2+…9)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
42
II.1. Les automates finis déterministes
7) Construire un automate fini qui accepte l’ensemble des
représentations décimales des nombres entiers différents de
Zéro
0,1,2,3,4,5,6,7,8,9
0
q0
1,2,3,4,5,6,7,8,9
q1
0(1+2+…9)(0+1+2+…+9)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
43
II.1. Les automates finis déterministes
Définition 8. Automate fini complet
Définition 8. Automate fini complet
Un automate fini est dit complet sur un vocabulaire X ssi
pour chaque état q et chaque symbole s, il existe au moins
une transition qui quitte q avec le symbole s.
Définition 9. Automate fini non ambigu
Un automate fini est dit non ambigu sur un vocabulaire X
Un automate fini est dit non ambigu sur un vocabulaire X
ssi pour chaque état q et chaque symbole s, il existe au plus
une transition qui quitte q avec le symbole s.
Définition 10. Automate fini déterministe
Un automate fini est dit déterministe sur un vocabulaire X
ssi il est complet et non ambigu (pour chaque état q et
chaque symbole s, il existe une et une seule transition qui
quitte q avec le symbole s).
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
44
II.1. Les automates finis déterministes
a
q0
a,b
q1
Non complet sur {a, b} car
d (q0, b) = f
d (q0, b) = f
L(A) = a(a+b)*
a,b
q0
a
b
a
q1
Ambigu sur {a, b} car
Ambigu sur {a, b} car
d (q0, a) = {q0, q1}
L(A) = ((a+b)a+)
b
q0
a
b
a
q1
L(A) = (ba+)
Automate fini déterministe sur {a, b} car il est complet et non ambigu:
d (q0, a) = {q1} d (q0, b) = {q0} d (q1, a) = {q1} d (q1, b) = {q0}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
45
II.2. Langage accepté par un automate
fini
Définition 11. Configuration
Une configuration est un couple
(q, w
)
où q est l’état courant et w est le reste du mot à lire.
Pour l’automate suivant, des configurations possibles sont:
Pour l’automate suivant, des configurations possibles sont:
A
b
q0
q0
a
b
a
b
q2
q2
q1
q1
a
(q0, aa) (q1, a) (q2, e )
(q0, bba) (q0, ba) (q0, a) (q1, e )
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
46
II.2. Langage accepté par un automate
fini
Définition 12. Configuration successeur
Une configuration (p, y) est successeur d’une
configuration (q, x) qu’on note:
(q, x) |-- (p, y)
(q, x) |-- (p, y)
ssi
$ a / x = a y et d (q, a) = p
p
q
a
a
y
x
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
47
II.2. Langage accepté par un automate
fini
Pour l’automate suivant, des configurations possibles
sont:
A
A
b
q0
q0
a
q1
q1
a
b
a
b
q2
q2
(q0, aa) |-- (q1, a) |-- (q2, e )
(q0, bba) |-- (q0, ba) |-- (q0, a) |-- (q1, e )
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
48
II.2. Langage accepté par un automate
fini
Définition 13. Configuration kème successeur
Une configuration (p, y) est kème successeur d’une
configuration (q, x) qu’on note:
k
(q, x) |-- (p, y) ssi (q, x) |-- (q1, x1) |-- (q2, x2) |--…(qk, xk) = (p, y)
(q, x) |-- (p, y) ssi (q, x) |-- (q1, x1) |-- (q2, x2) |--…(qk, xk) = (p, y)
*
k
(q, x) |-- (p, y) ssi $ k ‡ 0 / (q, x) |-- (p, y)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
49
II.2. Langage accepté par un automate
fini
Pour l’automate suivant, nous avons :
b
A
q0
q0
a
q1
q1
a
a
b
a
b
q2
q2
*
k
(q0, aa) |-- (q2, e ) puisque: $ k ‡ 0 / (q0, aa) |-- (q2, e )
(q0, aa) |-- (q1, a) |-- (q2, e ) (k = 2)
3
(q0, bba) |-- (q1, e )
En effet, (q0, bba) |-- (q0, ba) |-- (q0, a) |-- (q1, e )
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
50
II.2. Langage accepté par un automate
fini
Définition 14. Langage reconnu par un
automate fini
Soit A = (Q, X, d , q0, F) un automate fini.
Le langage accepté (ou reconnu par A)
Le langage accepté (ou reconnu par A)
est noté L(A) /
est noté L(A) /
L(A) = {w / (q0, w
*
) |-- (qf, e ) , qf ˛
F}
w est accepté par A ssi w
L(A)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
51
˛
II.2. Langage accepté par un automate
fini
Exercice : Soit l’automate fini A suivant :
b
A
q0
q0
a
Publicité
q1
q1
a
a
b
a
b
q2
q2
Montrer que aa ˛
L(A) et que bba ˇ
L(A)
Corrigé:
aa ˛
L(A) par ce que : (q0, aa) |-- (q2, e ) puisque:
*
(q0, aa) |-- (q1, a) |-- (q2, e ) (k = 2)
bba ˇ
L(A) par ce que : (cid:216)
k / (q0, bba) |-- (q2, e )
k
En effet, (q0, bba) |-- (q0, ba) |-- (q0, a) |-- (q1, e )
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
52
$
II.2. Langage accepté par un automate
fini
Exercice: Considérons l’automate A suivant :
Quel est le langage reconnu par A
1)
b
A
q0
q0
a
q1
q1
a
a
b
a
b
q2
q2
Est-ce que le mot e est accepté par A Pour l’automate suivant, nous avons :
2)
Corrigé:
1) L(A) = {w
2) e
{a, b}*/ |w
w | = 3k+2, k ‡
F
L(A) par ce que : q0 ˛
‡ 0} + {e
e }
(q0, e ) est une configuration initiale et finale.
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
53
w
w
w
˛
˛
˛
˛
w
w
‡
‡
e
e
˛
II.2. Langage accepté par un automate
fini (Lemme d’Arden)
Soit A un automate fini sur un vocabulaire X
Avec x ˛
˛ X
A
qi
x
qj
On dénote par Li, le langage reconnu par l’automate A en considérant que qi
j
Lj (cid:219)
est l’état initial. Ainsi, L0 est le langage reconnu par A
i = x w
j en conséquence Li = xLj
Li / w
Si qi est un état final alors Li = x Lj + {e
et final alors le langage Li contient le mot e
i
e } par ce que si qi est un état initial
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
54
˛
˛
w
˛
˛
˛
˛
(cid:219)
(cid:219)
(cid:219)
$
$
$
$
w
˛
˛
˛
˛
e
e
e
e
e
II.2. Langage accepté par un automate
fini (Lemme d’arden)
Exercice : Soit A un automate fini sur un vocabulaire X= {a,b}, Chercher le
langage L0 reconnu par l’automate A
A
a
q0
a
q2
q1
a
Corrigé :
L0 = {a} L1(1)
L2 = {a} L0 + {e }
(1)
(4) + (3) ⇒ L0 = {aa} L2 = {aa}({a}L0 + {e }) ⇒ L0 = {aaa}L0 + {aa}
+ (2) ⇒ L0 = {a}{a}L2 = {aa}L2
L1 = {a} L2(2)
(3)
(4)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
55
⇒ L0 = {aaa}{aa} = (aaa)aa
D’après le lemme d’Arden
II.2. Langage accepté par un automate
fini (Lemme d’arden)
Exercice :
1) Construire un automate qui accepte le langage ab
2) Vérifier que l’automate construit reconnaît le langage ab
Corrigé :
1)
b
a
A
q0
b
b
q1
2) Calculons L0
L0 = {a} L0 + {b}L1 + {e }
L1 = {b} L1 + [e ]
(2) ⇒ L1 = {b}{e } d’après le lemme d’Arden ⇒ L1 = b
(1)
⇒ L0 = {a}L0 + {b} b* + {e }
(1)
(2)
+ (3)
(3)
⇒ L0 = {a}L0 + b+ + {e }
⇒ L0 = {a}L0 + b car b++{e } = b
⇒ L0 = {a}b = abd’après le lemme d’Arden
L(A) = L0 = ab donc l’automate A reconnaît le langage ab
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
56
II.2. Langage accepté par un automate
fini (Lemme d’arden)
Exercice :
1)
2)
Construire une automate qui accepte le langage (a+b)*
Vérifier que l’automate construit reconnaît le langage (a+b)* (L0 est le langage
accepté par l’automate puisque c’est le langage où q0 est l’état initial)
Corrigé:
1)
A
A
a,b
q0
2)
L0 = {a} L0 + {b}L0 + {e }
(1) ⇒ L0 = {a,b} L0 + {e }
(1)
⇒ L0 = {a,b}*{e } d’après le lemme d’Arden
⇒ L0 = {a,b} = (a+b)
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
57
II.3. Rendre déterministe un automate
fini non déterministe
II.3.1. Automate fini non complet
Si l’automate fini est non déterministe par ce qu’il est non complet, alors
pour le rendre déterministe, il suffit d’ajouter un état puit et ajouter
toutes les transitions manquantes vers cet état.
a,b
a,b
a
a
q0
q1
Non complet sur {a, b} car
d (q0, b) = f
L(A) = a(a+b)*
q0
b
a
a
p
q1
a,b
Complet sur {a, b}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
58
II.3. Rendre déterministe un automate
fini non déterministe
II.3.2. Automate fini ambigu
Si l’automate fini est non déterministe par ce qu’il est
ambigu alors on doit construire un automate en groupant
les états visités par un même symbole à partir d’un état,
ces états groupés forment les nouveaux états de l’automate
déterministe. La construction de l’automate déterministe
déterministe. La construction de l’automate déterministe
suit les étapes suivantes:
Etape 1. Définir les nouveaux groupes d’états
Etape 2. Renommer les nouveaux groupes et définir les états
finaux. Un nouvel état (Groupe d’état) est un état final ssi il
contient un ancien état final
Etape 3. Construire l’automate déterministe
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
59
II.3. Rendre déterministe un automate
fini non déterministe
Exemple1
Etape 1. Définir les nouveaux groupes d’états
a
q0
a,b
a,b
a,b
q1
L(A) = a*(a+b)+
a
a
{q0}
{q0, q1}
{q0, q1}
{q0, q1}
{q1}
{q1}
b
b
{q1}
{q1}
{q1}
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
60
II.3. Rendre déterministe un automate
fini non déterministe
Exemple1
Etape 2. Renommer les états et définir les états finaux
a
q0
a,b
a,b
a,b
q1
a
a
b
b
{q0} A
{q0, q1} B
{q1} C
{q0, q1} B
{q0, q1} B
{q1} C
{q1} C
{q1} C
{q1} C
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
61
II.3. Rendre déterministe un automate
fini non déterministe
Exemple1
Etape 3. Construire l’automate déterministe
A
a
B
b
a
a
b
a,b
C
a
a
b
b
{q0} A
{q0, q1} B
{q1} C
{q0, q1} B
{q0, q1} B
{q1} C
{q1} C
{q1} C
{q1} C
Leila Jemni Ben Ayed
Théorie des Langages et Compilation-2013
62
II.3. Rendre déterministe un automate
fini non déterministe<...