Académique Documents
Professionnel Documents
Culture Documents
Cours Theorie de L'info
Cours Theorie de L'info
Licence dInformatique
Informatique Thorique :
Thorie des Langages,
Analyse Lexicale,
Analyse Syntaxique
Jean-Pierre Jouannaud
Professeur
Adresse de lauteur :
LIX
cole Polytechnique
F-91128 Palaiseau CEDEX
URL : http://www.lix.polytechnique.fr/
ii Table des matires
Table des matires
1 Introduction 2
2 Langages formels 3
3 Automates de mots nis 4
3.1 Automates dterministes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Automates non dterministes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Dterminisation dun automate non-dterministe . . . . . . . . . . . 6
3.3 Automates non dterministes avec transitions vides . . . . . . . . . . . . . . . . . . 7
limination des transitions vides dun automate . . . . . . . . . . . . 8
3.4 Minimisation dun automate dterministe . . . . . . . . . . . . . . . . . . . . . . . 9
3.4.1 Automate minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4.2 Calcul de lautomate minimal . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Nettoyage des automates 18
4.1 Dcision du vide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2 Dcision de la nitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Dcision du plein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5 Proprits de clture des langages reconnaissables 21
5.1 Clture Boolenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Clture par produits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.3 Clture par morphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.4 Pompage des langages reconnaissables . . . . . . . . . . . . . . . . . . . . . . . . . 23
6 Expressions rationnelles 25
6.1 Expressions rationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.2 Thorme de Kleene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.3 Identits remarquables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.4 Analyse lexicale avec loutil LEX . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.4.1 Notion de token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.4.2 Fichier de description LEX . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.4.3 Description des tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.4.4 Rgles de priorit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
J.-P. Jouannaud Universit Paris Sud
Table des matires iii
7 Grammaires formelles 32
7.1 Grammaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.2 Langage engendr par une grammaire . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.3 Classication de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.3.1 Grammaires contextuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.3.2 Grammaires hors-contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.3.3 Grammaires rgulires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.4 Forme normale de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.5 Drivations gauches et droites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.6 Arbres syntaxiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8 Automates pile 41
8.1 Langages reconnaissables par automates pile . . . . . . . . . . . . . . . . . . . . . 41
8.2 Automates pile et grammaires hors-contexte . . . . . . . . . . . . . . . . . . . . . 43
8.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9 Proprits de clture des langages algbriques 45
9.1 Vide et nitude des langages algbriques . . . . . . . . . . . . . . . . . . . . . . . . 45
9.2 Pompage des langage algbriques . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.2.1 Proprit de pompage des algbriques . . . . . . . . . . . . . . . . . . . . . 45
9.2.2 Un peu de logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
9.3 Proprits de clture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Union, produit et toile de Kleene. . . . . . . . . . . . . . . . . . . . 47
Intersection et complmentation. . . . . . . . . . . . . . . . . . . . . 48
9.3.1 Substitution et homomorphisme . . . . . . . . . . . . . . . . . . . . . . . . 48
9.3.2 Homomorphisme inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9.3.3 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
10 Analyse syntaxique 50
10.1 Analyse syntaxique descendante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
10.1.1 Analyse descendante non-dterministe . . . . . . . . . . . . . . . . . . . . . 51
10.1.2 Analyse descendante dterministe . . . . . . . . . . . . . . . . . . . . . . . 51
10.1.3 Automate danalyse prdictive descendante . . . . . . . . . . . . . . . . . . 53
10.1.4 Condition de dterminisme . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
10.1.5 Factorisation des membres droits . . . . . . . . . . . . . . . . . . . . . . . . 54
10.2 Analyse syntaxique ascendante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
10.2.1 Automate non-dterministe danalyse ascendante . . . . . . . . . . . . . . . 56
10.2.2 Dterminisation de lanalyse ascendante . . . . . . . . . . . . . . . . . . . . 57
10.2.3 Principes dune analyse ascendante prdictive . . . . . . . . . . . . . . . . . 57
Conditions de dterminisme . . . . . . . . . . . . . . . . . . . . . . 59
10.2.4 Automate SLR danalyse ascendante . . . . . . . . . . . . . . . . . . . . . . 60
Variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.2.5 Gnration danalyseurs syntaxiques avec YACC . . . . . . . . . . . . . . . 64
10.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
11 Syntaxe abstraite des langages 68
11.1 Grammaires abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
11.2 Arbres de syntaxe abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
11.3 Reprsentation des valeurs des tokens dans larbre . . . . . . . . . . . . . . . . . . . 70
11.4 Calcul des arbres de syntaxe abstraite . . . . . . . . . . . . . . . . . . . . . . . . . 70
J.-P. Jouannaud Universit Paris Sud
iv Table des matires
11.5 Codages des arbres de syntaxe abstraite . . . . . . . . . . . . . . . . . . . . . . . . 72
11.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
12 Machines de Turing 73
12.1 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
13 Complexit en temps et en espace 74
13.1 Classes de complexit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
13.2 Comparaisons entre mesures de complexit . . . . . . . . . . . . . . . . . . . . . . 75
13.3 Langages complets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
13.3.1 Rductions et compltude . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
13.3.2 NP-compltude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
13.3.3 PSPACE-compltude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
13.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
J.-P. Jouannaud Universit Paris Sud
TABLE DES MATIRES 1
Table des matires
J.-P. Jouannaud Universit Paris Sud
2 Introduction
Chapitre 1
Introduction
Ce cours se propose dtudier en dtail la notion de langage formel, initialement introduite par
Noam Chomsky et son quipe dans le but de formaliser les langues naturelles. Si lapplication aux
langues naturelles a rvolutionn leur tude, le but ultime consistant automatiser le traitement de
ces langues a largement chou, au jour daujourdhui en tout cas. Par contre, les travaux qui en
ont rsult ont trouv leur application naturelle dans le traitement automatis des langages infor-
matiques : la compilation, gnralement dcoupe en analyse lexicale, analyse syntaxique, analyse
smantique et gnration de code est une suite de traitements langagiers de complexit croissante :
lanalyse lexicale met en oeuvre les traitements les plus simples, qui relvent des langages dits r-
guliers ; lanalyse syntaxique a pour but danalyser la structure syntaxique des phrases, qui relve
des langages dits hors-contxte ; enn, les traitements dits smantiques, comme le typage, mettent
en jeu des structures langagires complexes, dites contextuelles. On retrouve galement la notion de
langage en thorie de la calculabilit, et en thorie de la complexit. On la retrouve enn au coeur
de lun des grands succs de la discipline, la vrication de programmes, qui a russi ces dernires
annes une perce industrielle remarque.
Le but de ce cours est de faire le tour de ces diffrentes notions dans le contexte informatique :
les automates nis et les expressions rationnelles, qui se sont rvls un outil de modlisation excep-
tionnel et ont, ce titre, envahi tout le paysage scientique, informatique, mathmatiques, physique,
biologie, etc ; leur application lanalyse lexicale ; les grammaires hors-contexte et les automates
pile, autres outils de modlisation trs commode dont les utilisations ont moins dbord la sphre
informatique ; leur application lanalyse syntaxique.
Comme tout cours, celui-ci fait de nombreux emprunts, en particulier [2], ouvrage remarquable
dont une lecture approfondie est recommande.
J.-P. Jouannaud Universit Paris Sud
3
Chapitre 2
Langages formels
On appellera vocabulaire un ensemble ni V
t
dont les lments sont appells lettres, et mot
toute suite nie de lettres, note u = u
1
. . . u
n
pour un mot u de longueur n. On notera par V T
lensemble des mots, et par le mot de longueur nulle, appell mot vide.
Lensemble des mots est muni dune opration interne, le produit de concatnation, telle que si
u = u
1
. . . u
n
et v = v
1
. . . v
p
, alors le produit uv est le mot w tel que w
i
= u
i
pour i [1..n] et
w
n+j
= v
j
pour j [1..p]. Il est ais de vrier que la concatnation des mots est associative et
possde pour lment neure. On notera parfois le produit sous la forme u v an dviter certaines
ambiguits.
Tout produit, par rptition, donne naissance une notion de puissance. La puissance nme dun
mot est dnie par rcurrence sur n comme suit : u
0
= et u
n+1
= u u
n
.
Muni du produit de concatnation et de son lment neutre, V
t
est appell le monode libre sur
V
t
. Cette dnomination fait rfrence au fait que tout mot u est soit le mot vide , soit commence par
une certaine lettre a auquel cas il scrit de manire unique sous la forme av pour un certain mot v
de taille diminue de une unit. Il sera donc possible de prouver une proprit P dun ensemble de
mots en montrant P(), puis en montrant P(av) en supposant P(v). Il sagit l dun raisonnement
par rcurrence classique li cette dcomposition des mots. Mais on peut aussi dcomposer un mot
u en exhibant sa dernire lettre : tout mot u est soit le mot vide soit scrit de manire unique sous
la forme va o a V
t
et v V
t
, ce qui fournit un autre principe de rcurrence. Nous utiliserons
lun ou lautre suivant les cas.
Toute partie de V
t
est appelle langage. On disnguera deux langages trs particuliers, le langage
vide not qui ne possde aucun mot, et le langage unit rduit au mot vide.
On dnit nouveau des oprations sur les langages, oprations ensemblistes classiques ou op-
rations qui font rfrence aux oprations correspondantes sur les mots :
L
1
L
2
dsigne lunion des langages L
1
et L
2
L
1
L
2
dsigne lintersection des langages L
1
et L
2
L dsigne le complmentaire dans V
t
du langage L
L
1
L
2
= uv [ u L
1
et v L
2
dsigne le produit des langages L
1
et L
2
L
n
tel que L
0
= et L
n+1
= L L
n
dsigne la puissance nme du langage L
L
iN
L
i
dsigne litr du langage L
L
+
=
i>0
L
i
dsigne litr strict du langage L
Le lecteur est invit montrer les proprits suivantes :
1. Pour tout mot u et tous entiers n, m, u
n+m
= u
m+n
= u
n
u
m
= u
m
u
n
.
2. Pour tout langage L et tous entiers n, m, L
n+m
= L
m+n
= L
n
L
m
= L
m
L
n
.
3. Si L, alors L
= L
+
.
J.-P. Jouannaud Universit Paris Sud
4 Automates de mots nis
Chapitre 3
Automates de mots nis
Les automates sont un outil de modlisation fondamental, qui servent reprsenter des disposi-
tifs automatiques, par exemples des systmes ractifs, tout autant que des objets mathmatiques ou
physiques. Dans ce capitre, nous nous intressons aux automates de mots nis, le cas important des
mots innis tant abord dans un chapitre ultrieur.
3.1 Automates dterministes
Dnition 3.1 Un automate ni dterministe / est un triplet (V
t
, Q, T) o
1. V
t
est le vocabulaire de lautomate ;
2. Q est lensemble ni des tats de lautomate ;
3. T : QV
t
Q, est une application partielle appelle fonction de transition de lautomate.
On notera q
a
q
pour T(q, a) = q
1
q
1
q
n1
n
q
n
, aussi note q
0
w
A
q
n
, ou encore sim-
plement q
0
w
q
n
en labsence dambiguits, issue dun tat q
0
et atteignant un tat q
n
en ayant lu le
mot w =
1
n
.
Notons que le calcul produit par la lecture dun mot w par un automate ni dterministe est au-
tomatique et se trouve donc exempte dambigut : la lecture des lettres composant le mot provoque
des transitions bien dnies jusqu tre bloqu en cas de transitions manquantes, ou bien jusqu
atteindre un certain tat aprs la lecture complte du mot. On en dduit la proprit fondamentale
des automates dterministes complets :
Lemme 3.3 Soit / = (V
t
, Q, T) un automate ni dterministe complet. Alors, pour tout mot u
V
t
et tout tat q Q, il existe un unique tat q
Q tel que q
u
A
q
.
En pratique, il peut tre utile de rendre un automate complet en ajoutant un nouvel tat appel
poubelle, tiquet par , vers lequel vont toutes les transitions manquantes. Les calculs bloquants
aboutissent alors dans la poubelle o ils restent capturs.
Dnition 3.4 Un automate dterministe vient avec la donne
dun tat initial i Q;
dun ensemble dtats acceptants F Q;
J.-P. Jouannaud Universit Paris Sud
3.2 Automates non dterministes 5
q
0
q
1
q
2
10 0, 1
FIG. 3.1 Automate dterministe reconnaissant les entiers naturels en numration binaire.
q
0
q
1
q
2
10 0, 1 0, 1 0, 1
FIG. 3.2 Automate dterministe complet reconnaissant les entiers naturels en numration binaire.
On notera par /
F
i
le quintuplet (V
t
, Q, i, F, T), ou plus simplement / si i et F sont donns sans
ambiguit dans le contexte.
Un mot w est reconnu par lautomate /
F
i
sil existe un calcul dit russi issu de ltat initial i
et terminant en tat acceptant aprs avoir lu le mot w. On note par Lang(/) le langage des mots
reconnus par lautomate /.
Un langage reconnu par un automate est dit reconnaissable. On note par ec lensemble des
langages reconnaissables.
Il est clair que lajout dune poubelle ne change pas les mots reconnus.
On a lhabitude de dessiner les automates, en gurant les tats par des cercles, en indiquant ltat
initial par une che entrante, les tats acceptants par un double cercle ou une che sortante, et la
transition de ltat q ltat q
et tiquete par
. La gure 3.1 reprsente un automate (incomplet) reconnaissant le langage des entiers naturels en
reprsentation binaire.
Lautomate obtenu reconnat exactement le mme langage si lon convient que le nouvel tat
poubelle nest pas acceptant. Ainsi, la gure 3.2 prsente un automate complet reconnaissant le
langage des entiers naturels en reprsentation binaire.
Si lautomate / est complet, on pourra donc tendre lapplication T aux mots, en posant
T(q, u) = q
Q tel que q
u
q
pour q
T(q, ) avec V
t
, et par T(q, u) lensemble
(peut-tre vide) des tats atteignables depuis q en lisant le mot u.
Notons quun automate dterministe est un cas particulier dautomate non-dterministe qui as-
socie tout lment de Q V
t
une partie de Q possdant zro ou un lment (exactement un si
cest un automate complet). On pourra dire dun automate dterministe quil est incomplet sil peut
se bloquer, cest--dire sil existe un tat q et une lettre a tels que T(q, a) = . Si lautomate est
complet, nous aurons une forme affaiblie du Lemme 3.3 :
Lemme 3.6 Soit / = (V
t
, Q, i, F, T) un automate ni non-dterministe complet. Alors, pour tout
mot u V
t
et tout tat q Q, il existe un (non ncessairement unique) tat q
Q tel que q
u
A
q
.
La notion de calcul est la mme pour cette nouvelle varit dautomates que pour les automates
dterministes, ainsi que la notion de reconnaissance, nous ne les rptons pas. Le non-dterministe
a toutefois une consquence essentielle : il peut y avoir plusieurs calculs issus de ltat initial i
qui lisent un mot w donn, dont certains peuvent se bloquer et dautres pas, et dans ce dernier cas
certains peuvent terminer en tat acceptant et dautres pas. Lacceptation a lieu sil existe au moins
un calcul russi. Si tous les calculs chouent, il ny aura pas dautre moyen de le savoir que de les
explorer tous avant de savoir que le mot w nest pas reconnu. La bonne notion nest donc pas celle
de calcul, mais darbre de calcul associ un mot lu par lautomate :
Dnition 3.7 tant donn un automate non dterministe /, larbre de calcul de racine q Q
engendr par la lecture du mot u est un arbre doublement tiquett dni par rcurrence sur u :
Si u = , alors larbre est rduit sa racine q ;
Si u = av, la racine q possde des transitions sortantes tiquettes par a V
t
vers diffrents
arbres de calcul engendrs par la lecture de v et dont les racines sont tiquettes par les tats de
T(q, a).
Un arbre de calcul est reprsent la gure 3.3.
On a la proprit vidente :
Lemme 3.8 Un mot u V
t
est reconnu par un automate non dterministe / ssi lune des feuilles
de son arbre de calcul est tiquette par un tat acceptant.
Dterminisation dun automate non-dterministe Nous allons maintenant dterminiser un au-
tomate non-dterministe (sans transitions vides) en ajoutant de nouveaux tats : si Q est lensemble
des tats dun automate non-dterministe, lensemble des tats de lautomate dterministe associ
sera T(Q), lensemble des parties de Q.
Dnition 3.9 Soit / = (V
t
, Q, T) un automate non-dterministe. On dnit Tet(/) comme lau-
tomate (V
t
, T(Q), T
det
) o T
det
(K, a) =
qK
T(q, a).
Thorme 3.10 Soit / un automate non-dterministe. Alors Tet(/)
{KP(Q) | KF=}
{i}
est dter-
ministe et reconnat le mme langage que /
F
i
.
J.-P. Jouannaud Universit Paris Sud
3.3 Automates non dterministes avec transitions vides 7
q
0
,q
2
,
q
12
q
2
,q
13
,
q
14
q
15
q
16
,
q
17
q
18
q
19
,
q
20
q
3
,q
4
,
q
12
q
5
q
6
,
q
7
q
8
q
9
,
q
10
0101011001100110
FIG. 3.4 Automate dterminis.
Si la construction peut sembler complexe au nophyte, la preuve est par contre trs simple, et
base sur lide que sil est possible dans lautomate non-dterministe datteindre les tats q
1
, . . . , q
n
depuis ltat q en lisant la lettre a, alors il sera possible dans lautomate dterminis datteindre un
tat contenant la partie q
1
, . . . , q
n
depuis tout tat contenant ltat q en lisant cette mme lettre
a. En fait, lide de la preuve est parfaitement dcrite par la gure 3.3.
Lautomate dterminis correspondant lautomate de la gure 3.6 est reprsent sur la -
gure 3.4, o seulement les tats accessibles sont montrs. Les tats sont tiquets par lensemble
des noms des tats de lautomate non-dterministe qui le constituent.
On conclue de ces dveloppements que les automates dterministes, les automates non dtermi-
nistes et les automates non dterministes avec transitions vides reconnaissent exactement les mme
langages. La diffrence est que les automates non dterministes sont exponentiellement plus co-
nomes, la borne tant atteinte comme le montre lun des exercices. Ils constituent pour cette raison
un outil prcieux pour lutilisateur. Ils sont par contre dune manipulation informatique plus com-
plexe cause par leur non-dterminisme.
3.3 Automates non dterministes avec transitions vides
Un automate avec transitions vides est un automate non-dterministe o certaines transitions
peuvent tre tiquetes par , qui dnotera labsence de lettre lue lors de la transition.
Dnition 3.11 Un automate non-dterministe / avec transitions vides est un triplet (V
t
, Q, T) o
1. V
t
est le vocabulaire de lautomate ;
2. Q est lensemble des tats de lautomate ;
3. T : Q(V
t
) T(Q) est la fonction de transition de lautomate.
On notera q
q
pour q
T(q, ), avec V
t
ou = .
Par exemple, la gure 3.5 reprsente un automate non-dterministe avec transitions vides recon-
naissant le langage sur lalphabet 0, 1 contenant exactement une occurrence de chacun des mots
00 et 11.
Notons que la notation q
q
101101001011
01001011010
FIG. 3.5 Un automate non-dterministe avec transitions vides.
. Les calculs dun automate avec transitions vides autorisent le passage par un nombre quelconque
de transitions vides au cours de lexcution. Le nombre dtats parcourus ne sera donc plus gal au
nombre de lettres du mot dentre mais pourra tre beaucoup plus grand. Larbre de calcul dun au-
tomate avec transitions vides savre du coup tre un outil moins intressant que pour les automates
non-dterministes sans transitions vides.
limination des transitions vides dun automate Nous voulons maintenant montrer que le lan-
gage reconnu par un automate avec transitions vides peut galement ltre par un automate non-
dterministe sans transitions vides. Cette opration va ncessiter laddition de nouvelles transitions
dans lautomate :
Dnition 3.12 Soit / = (V
t
, Q, i, F, T) un automate non-dterministe avec transitions vides. On
dnit ^Tet(/) comme lautomate (V
t
, Q, i, F
NDet(A)
, T
NDet(A)
) o
q
a
NDet(A)
q
ssi q
A
q
A
q
F
NDet(A)
= q [ q
A
f F
Dans la dnition ci-dessus, la lettre a est considre comme une lettre, alors que le symbole
est considr comme un mot de longueur nulle (aussi bien dans i
A
q
que dans q
A
f
F). Notons que cette construction naugmente pas la complexit de lautomate dnie comme son
nombre dtats.
Thorme 3.13 Soit / un automate non-dterministe avec transitions vides. Alors ^Tet(/)
F
i
est
un automate non-dterministe qui reconnat le mme langage que /
F
i
.
La preuve est simple, et procde par dcoupage dun calcul allant de i = q
0
q
n
= f F
dans lautomate / en tronons de la forme q
i
V
A
aV
t
A
q
i+1
suivis dun dernier tronon de la
forme q
n1
V
A
f F.
Applique lautomate de la gure 3.5, la construction prcdente nous donne lautomate non-
dterministe de la gure 3.6. Les tats q
1
et q
11
ont t supprims car non accessibles.
J.-P. Jouannaud Universit Paris Sud
3.4 Minimisation dun automate dterministe 9
q
0
q
2
q
3
q
4
q
5
q
6
q
7
q
8
q
9
q
10
q
12
q
13
q
14
q
15
q
16
q
17
q
18
q
19
q
20
0111001011010010101001011010
FIG. 3.6 Automate non-dterministe sans transitions vides.
3.4 Minimisation dun automate dterministe
Dans tout ce paragraphe, il est fondamental de supposer les automates dterministes complets,
mme si leur reprsentation en graphe correspond parfois un automate incomplet par souci de clart
des dessins. On supposera galement que tous les tats des automates manipuls sont accessibles.
La dterminisation dun automate non-dterministe fait exploser le nombre dtats, mais tous
les tats de T(Q) ne sont pas utiles la construction du dterminis dun automate dont Q est
lensemble des tats. De plus, il se trouve que lautomate construit est en fait souvent plus compliqu
que ncessaire. En particulier, il contient gnralement des tats inaccessibles. Llimination des
tats inaccessibles nest cependant pas toujours sufsante pour obtenir lautomate le plus simple
possible : si deux tats dun automate reconnaissent le mme langage, on peut rduire lautomate
en les confondant. Le problme, bien sr, va tre de dterminer si deux tats q et q
reconnaissent
le mme langage, de manire partitionner lensemble des tats an de confondre les tats dune
mme classe.
3.4.1 Automate minimal
La premire question, bien sr est celle de lexistence et de lunicit dun automate minimal pour
tout langage reconnaissable. Cest lobjet du dveloppement qui suit.
Dnition 3.14 On dit quune relation dquivalence sur les mots dun vocabulaire V est
dindex ni si elle partitionne lensemble des mots en un nombre ni de classes,
une congruence droite si u, v V
a V u v = ua va.
Lemme 3.15 Soient une congruence droite dindex ni sur V
t
, Q lensemble de ses classes
dquivalence, et F Q. Alors lautomate quotient / = (V
t
, Q, [], F, T) avec T([u], a) = [ua] est
un automate ni dterministe complet qui reconnait le langage des mots appartenant une classe
de F.
J.-P. Jouannaud Universit Paris Sud
10 Automates de mots nis
Preuve: Comme est dindex ni, Q est ni. Comme est une congruence droite, la dnition de
T ne dpend pas du choix de u dans [u], donc T est bien une fonction totale. Donc /est un automate
ni dterministe complet.
Reste montrer quil reconnait le langages des mots appartenant une classe de F. Pour cela,
nous montrons par rcurrence sur le mot v la proprit :
v V
t
[u] Q [u]
v
A
[uv]
Si v = , la proprit est trivialement vraie.
Si v = aw, alors [u]
a
A
[ua] par dniton de T, et [ua]
w
A
[uaw] par hypothse de rcurrence,
do la proprit.
Appliquant maintenant cette proprit pour u = , on obtient v V
t
[]
v
A
[v], et donc v est
reconnu ssi il appartient une classe de F.
Dnition 3.16 Soit L reconnaissable par un automate dterministe complet / = (V
t
, Q, i, F, T),
et
A
lquivalence de transition engendre sur les mots de V dnie par u
A
v ssi T(i, u) =
T(i, v).
Lemme 3.17 Lquivalence de transition
A
dun automate ni / est une congruence droite din-
dex ni dont les classes sont en correspondance biunivoque avec les tats de /. Lautomate quotient
associ aux classes de F satisfait /
A
= /.
Preuve: Soit u
A
v. Alors T(i, u) = T(i, v) et donc pour tout w V
, T(i, uw) =
T(T(i, u), w)) = T(T(i, v), w)) = T(i, vw), et par dnition, uw
A
vw. Comme les classes
sont en correspondance biunivoque avec les tats, la congruence est dindex ni et /
A
= /.
Dnition 3.18 tant donn un langage L sur V
t
et un mot u V
t
, on appelle :
contexte droite de u dans v lensemble D
L
(u) = v [ uv L ;
congruence syntaxique de L lquivalence u
L
v ssi D
L
(u) = D
L
(v).
Lemme 3.19 La congruence syntaxique dun langage quelconque est une congruence droite.
Preuve: Soit u
L
v, donc D
L
(u) = D
L
(v). Soit a V
t
. D
L
(ua) = w V
t
[ aw D
L
(u) =
w V
t
[ aw D
L
(v) = D
L
(va). Donc ua
L
va, prouvant que
L
est une congruence droite.
Thorme 3.20 (Myhill-Nerode) Tout langage reconnaissable L sur un alphabet V est reconnu
par lautomate /
L
qui est lautomate ni dterministe minimal (en nombre dtat) reconnaissant
L.
Preuve: On se donne un automate /quelconque reconnaissant L. Un tel automate existe, puisque L
est reconnaissable. On montre que
A
est un rafnement de
L
, cest--dire que u
A
v = u
L
v. Cela aura pour corrollaire que lautomate associ la congruence syntaxique par les Lemmes 3.19
et 3.15 reconnait L, que son nombre detats est au plus gal au nombre dtats de / et donc quil
est minimal puisque / est quelconque.
Soit u
A
v, et comme
A
est une congruence droite, pour tout w V
, uw
A
vw, et donc
uw L ssi vw L puisque L est une union de classes dquivalence de
A
. Par dnition, u
L
v.
Il nous reste maintenant calculer cet automate minimal unique ( renommage prs des tats).
J.-P. Jouannaud Universit Paris Sud
3.4 Minimisation dun automate dterministe 11
3.4.2 Calcul de lautomate minimal
Lide est de calculer lautomate minimal dun langage reconnaissable partir dun automate
arbitraire le reconnaissant. Pour cela, plutt que de raisonner en terme de congruence sur les mots
du langage, nous allons considrer la partition induite sur les tats de lautomate, qui satisfait la
proprit cl de compatibilit :
Dnition 3.21 tant donn un automate dterministe complet / = (V
t
, Q, i, F, T), une partition
T de Q est compatible ssi
1. elle est un ranement de la partition F, Q F :
C T C F or C (Q F)
2. toute classe de la partition est compatible :
C T q, q
C a V
t
C
T(q, a) C
ssi T(q
, a) C
Les partitions compatibles ont bien sr un lien troit avec les congruences droites.
Dnition 3.22 tant donne une partition T de Q, lquivalence de partition sur les mots associe
T est dnie par u
P
v ssi u et v appartiennent une mme classe de T.
On vrie aisment que lquivalence dune partition compatible est une congruence droite.
Lemme 3.23 Soit T une partition compatible des tats dun automate / = (V
t
, Q, i, F, T). Alors
P
est une congruence droite dindex ni et lautomate
/
P
= (V
t
, T, C
0
, C T [ C F, T
P
)
C
0
est la classe qui contient ltat i
T
P
(C, a) = C
ssi q C q
P
dont les tats acceptants sont les classes associes
la partition de F : il reconnait donc le langage L(/) daprs le Lemme 3.15.
Lautomate minimal est donc associ la partition compatible la plus grossire, dont le nombre
de classes est minimal, ce qui peut se faire classiquement par une construction itrative jusqu
lobtention en temps ni du point xe. On peut pour cela procder de deux manires diffrentes :
Partant dune partition compatible, celle dont les classes contiennent exactement un tat de lau-
tomate de dpart, on construit jusqu stabilisation une suite de partitions compatibles plus nes que
la partition minimale, ce qui nous fournit cette dernire comme rsultat. Pour cela, on confond
chaque tape plusieurs classes lorsque leur fusion conserve la compatibilit. La difcult est quon
ne peut procder par fusion de deux classes la fois : il faut en fait deviner les fusions ncessaires
chaque tape. Le processus est donc hautement non-dterministe et conduit un algorithme expo-
nentiel.
Partant de la partition potentiellement compatible la plus grossire, soit (F, Q F), on construit
jusqu stabilisation une suite de partitions plus grossires que la partition minimales jusqu obten-
tion de cette dernire, puisque le rsultat est ncessairement une partition compatible. Cet algorithme
nassure donc pas la compatibilit des partitions intermdiaires obtenues, mais il vrie la proprit
de compatibilit de chaque classe, et si elle savre fausse pour une classe, il la force en dcou-
pant cette classe en sous-classes compatibles. Cela peut bien sr affecter la compatibilit des classes
existantes, et il faut donc recommencer le processus sil y a eu un dcoupage. Au pire, on sarrtera
lorsque chaque classe contiendra un unique tat de lautomate de dpart, dans le cas o ce dernier
tait dj minimal. Lalgorithme obtenu est polynomial en le nombre dtats de lautomate.
J.-P. Jouannaud Universit Paris Sud
12 Automates de mots nis
tant donne une partition P des tats dun automate, la fonction suivante recherche une classe
de P qui nest pas compatible. Dans le cas o toutes les classes sont compatibles la fonction retourne
. Puisque tous les classes dans les partitions construites par lalgorithme sont non-vides, le rsultat
signale le cas dchec de la recherche.
type classe sur Q = ensemble sur Q
type partition sur Q = ensemble sur classe sur Q
fonction non_compatible(/ : automate sur (V
t
, Q),
P : partition sur Q) : classe sur Q
% Recherche dune classe non compatible de P
si il existe C P, p C, q C et a V
t
tels que
transition(/, p, a) C
et transition(/, q, a) C
avec C
,= C
retourner C
sinon
retourner
n si
n fonction
La fonction suivante calcule alors, partir dune partition P donne, le rafnement compatible le
plus grossier de P, cest--dire la sous-partition compatible de P ayant le plus petit nombre possible
de classes (on peut montrer quelle est unique) :
fonction partition(/ : automate sur (V
t
,Q),
P : partition sur Q) : partition sur Q
% Calcul dun rafnement compatible de la partition P
soit C = non_compatible(/, P)
si C =
retourner P
sinon
soit P
, pour tout C
P, pour tous p, q C
pour tout a V
t
:
transition(/, p, a) C
ssi transition(/, q, a) C
retourner partition(/, (P C) P
)
n si
n fonction
La fonction suivante calcule lautomate minimis.
fonction minimisation(/ : automate sur (V
t
, Q)) : automate sur (V
t
, classe sur Q)
% Calcul du minimis de A
% Calcul de la plus grossire partition compatible
soit F = q Q [ est_acceptant (/, q)
P = partition(/, QF, F)
% Calcul de ltat initial de lautomate minimal
soit I
min
la classe de P telle que etat_initial (/) I
min
% Calcul des tats acceptants de lautomate minimal
pour chaque C P :
soit F
min
(C) = true ssi C F ,=
n pour
% Calcul de la fonction de transition de lautomate minimal
pour chaque (C, a) P V
t
faire
soit q C (un reprsentant quelconque)
soit C
T
min
(C, a) = C
q ;
productif, sil existe un mot w tel que q
w
f F ;
utile, sil est la fois accessible et productif.
Un automate est dit rduit si tous ses tats sont utiles.
An dliminer les tats inutiles dun automate, il faut en liminer successivement les tats in-
accessibles et les tats improductifs, ce que lon appellera le nettoyage. Lautomate obtenu sera un
automate rduit quivalent lautomate de dpart, il aura pour transitions celles qui relient des tats
utiles de lautomate de dpart. Reste calculer les tats productifs, puis les tats accessibles. Pour
cela, on observe quun tat q est productif ssi q F ou bien il existe un tat productif q
et une
lettre a (V
t
) tels que q
et une
lettre a (V
t
) tels que q T(q
u
i
L
i
f(u
1
, . . . , u
n
) sur
lalphabet V
1
. . . V
n
On dit que les langages reconnaissables sont clos par une opration f si f(L
1
, . . . , L
n
) est re-
connaissable lorsque les langages L
1
, . . . , L
n
le sont.
Les langages reconnaissables possdent de trs nombreuses proprits de clture, en particulier
par les oprations Boolennes, par substitution (des lettres dans les mots dun langage par des mots
pris arbitrairement dans un langage rgulier associ chaque lettre, le cas particulier o chaque lettre
est remplace par un mot tant appell homomorphisme), par homomorphisme inverse, par quotient
droite, par shufe, par pompage, etc.
Ces proprits jouent deux rles essentiels : elles servent montrer que certains langages sont
bien reconnaissables, lorsquils sont obtenus partir de langages reconnaissables par une opration
de cture ; elles servent contrario montrer que certains langages ne sont pas reconnaissables,
lorsquils permettent dobtenir un langage non reconnaissable par une opration de cture. La clture
par pompage joue un rle cl pour cette dernire application.
5.1 Clture Boolenne
Nous nous intressons ici aux oprations Boolennes sur des langages dnis par des automates
les reconnaissant, de sorte que les oprations peuvent tre vues comme agissant directement sur les
automates.
On commence par la clture par complmentaire :
Thorme 5.1 Soit A = (V
t
, Q, q
0
, F, T) un automate dterministe complet. Alors A =
(V
t
, Q, q
0
, Q F, T) reconnait le langage complmentaire de Lang(A).
Ce rsultat est une consquence directe du Lemme 3.3 et de la reformulation de la notion dac-
ceptation qui sen est ensuivie. Il est donc fondamental dans cet nonc que lautomate de dpart
soit complet. Passons maintenant lunion et lintersection :
Dnition 5.2 tant donns deux automates dterministes A
1
= (V
t
, Q
1
, T
1
) et A
2
=
(V
t
, Q
2
, T
2
) sur le mme alphabet V
t
, lautomate A = (V
t
, Q
1
Q
2
, T) o T((q
1
, q
2
), a) =
(T(q
1
, a), T(q
2
, a) est appell produit synchronis de A
1
par A
2
.
Notons que lautomate produit a pour effet de synchroniser les transitions, donc les calculs des
automates de dpart.
J.-P. Jouannaud Universit Paris Sud
22 Proprits de clture des langages reconnaissables
Thorme 5.3 Soient A = (V
t
, Q, T) et A
= (V
t
, Q
, T
(q
0
,q
0
)
reconnait le langage
Lang(A
F
q
0
) Lang(A
F
0
), et si les automates de dpart sont complets, lautomate B
(FQ
)(F
Q)
(q
0
,q
0
)
reconnait le langage Lang(A
F
q
0
) Lang(A
F
0
).
La construction ci-dessus se gnralise sans difcult pour reconnaitre lintersection des lan-
gages reconnus par deux automates non-dterministes sans transitions vides Aet A
ne possdant pas
le mme alphabet : il suft pour cela de dnir T sous la forme plus gnrale (mais quivalente pour
les automates dterministes complets) T((q
1
, q
2
), a) = (q
1
, q
2
) [ q
1
T(q
1
, a) et q
2
T(q
2
, a)
qui fournit un automate incomplet sur lalphabet union (mais complet sur lalphabet intersection)
qui rpond la question.
Par contre, il faut faire attention en ce qui concerne lunion des langages reconnus, car il faut
disposer dautomates qui soient complets sur lalphabet union. Il suft pour cela de rajouter une
poubelle de manire ce quun automate ne se bloque pas pendant que lautre est en train de recon-
naitre. Cette construction fonctionne galement pour des automates non dterministes.
Les proprits de clture Boolenne ont de trs nombreuses applications. Par exemple, pour v-
rier si un automate / modlisant un certain automatisme possde une proprit P, qui peut tre
vue comme une proprit des mots sur lalphabet de lautomate, la technique classique consiste
construire un automate /
P
qui accepte tous les mots (et rien que ceux l) qui satisfont la
proprit P, puis vrier que Lang(/) Lang(/
P
) . Cette inclusion peut se rcrire en
Lang(/) Lang(/
P
) = , ce qui, grce aux proprits de clture, revient tester le vide de
lautomate / /
P
.
5.2 Clture par produits
Thorme 5.4 Les langages reconnaissables sont clos par produit de langages.
Preuve: Soient L et L
= (V
t
, Q
, i
, F
, T
= (V
t
, Q Q
, i, F
, T
), tel que
q Q, q
, a V
t
, T
(q
, a) = T
(q
, a), T
(f F, ) = i
.
Les langages reconnaissables tant clos par produit, ils le sont bien sr par une puissance quel-
conque. Ils le sont mme par produit itr.
Thorme 5.5 Les langages reconnaissables sont clos par produit itr (on dit aussi par toile de
Kleene) et par produit itr strict.
Preuve: Soient L un langage reconnus par lautomate / = (V
t
, Q, i, F, T) suppos sans transition
vide. On construit tout dabord lautomate /
+
= (V
t
, Q, i, F, T
+
), tel que
q Q, a V
t
, T
+
(q, a) = T(q, a), T
+
(f F, ) = i
et lon vrie aisment quil reconnait bien le langage L
+
par rcurrence sur le nombre dutilisations
lors dun calcul acceptant des transitions vides allant dun tat de F ltat i.
La construction pour L
= L
+
, mais elle est nette-
ment plus complexe dans le, cas gnral, pour lequel on dnit /
+
= (V
t
, Qi
, f
, i
, f
, T
),
tel que
q Q, a V
t
, T
F, ) = i, f
, T
+
(f F, ) = i, f
. Dans le cas contraire, cest--dire lorsquil y a des boucles la fois sur i et f, on peut
encore confondre i
et f
t
, on dnit lhomomorphisme engen-
dr par h, encore not h, comme lunique application de V
t
dans V
t
qui vrie
h() = et h(av) = h(a) h(v)
Limage par un homomorphisme h dun langage L est le langage
h(L) = u V
t
[ v V
t
tel que u = h(v)
Thorme 5.7 Les langages reconnaissables sont clos par homomorphisme.
Preuve: Le rsultat se prouvera facilement ds que nous aurons dni les expressions rationnelles,
par rcurrence sur leur structure.
5.4 Pompage des langages reconnaissables
Soit m = uvw un mot sur le langage V
t
. On dit que les mots de la forme uv
k
w pour k N sont
obtenus par pompage de v dans m. Les langages reconnaissables possdent une proprit de clture
remarquable vis vis de lopration de pompage qui sert contrario montrer que certains langages
qui ne la possdent pas ne sont pas reconnaissables. Nous allons dabord illustrer la dmarche avec
le langage L = a
n
b
n
[ n N, qui est connu pour tre le langage le plus simple qui ne soit pas
reconnaissable.
Supposons que L soit reconnaissable par un certain automate / = (a, b, Q, i, F, T). Notons
N = [Q[, et considrons le mot a
N
b
N
de L. Il est reconnu par un calcul de la forme :
i = q
0
a
q
1
. . . q
N1
a
q
N
b
q
N+1
. . . q
2N1
b
q
2N
F
Comme lautomate na que N tats, il existe deux entiers i et j tels que 0 i < j N et q
i
= q
j
.
On peut donc reformuler le calcul prcdent comme suit
i = q
0
a
i
q
i
a
j
i
q
j
a
N
j
q
N
b
N
q
2N
F
Comme q
i
= q
j
, le calcul
i = q
0
a
i
q
i
= q
j
a
N
j
q
N
b
N
q
2N
F
reconnait le mot a
N(ji)
b
N
qui nest pas un mot de L puisque j i est strictement positif. Notre
hypothse que le langage L est reconnaissable est donc errone.
Le langage L = a
n
b
n
[ n N nest donc pas reconnaissable. Cela a dimportantes cons-
quences pour les langages de programmation, puisque cette structure langagire abonde : il sagit
ni plus ni moins du langage des parenthses bien formes. Gnraliser cet outil est donc essentiel,
puisque cela va nous permettre de comprendre quels sont les langages que lon ne peut pas traiter
avec des techniques dautomates.
J.-P. Jouannaud Universit Paris Sud
24 Proprits de clture des langages reconnaissables
Thorme 5.8 Tout langage L reconnaissable satisfait la proprit
Pompe
d
= N > 0 tel que m L, si [m[ N alors u, v, w V
t
tels que :
(i) m = uvw,
(ii) v ,= ,
(iii) [uv[ < N,
(iv) k Nat, uv
k
w L
Preuve: Cest le mme argument que celui que lon vient de dvelopper pour montrer que le langage
a
n
b
n
[ n N nest pas reconnaissable. On se donne un automate complet, sans transition vide /
reconnaissant le langage L, et on note N = [Q[ qui est positif strictement puisque / est complet.
Soit maintenant m L de taille au moins N, et
i = q
0
m
q
|m|
F
un calcul reconnaissant m. Comme lautomate na que N < [m[ + 1 tats, il existe deux entiers i et
j tels que 0 i < j N et q
i
= q
j
. Il existe donc trois mots u, v, w tels que :
i = q
0
u
q
i
v
q
j
w
q
|m|
F
et lon vrie immdiatement que les conditions (i), (ii) et (iii) sont satisfaites. De plus, comme
q
i
= q
j
, le calcul
i = q
0
u
q
i
v
k
q
j
w
q
|m|
F
reconnait le mot uv
k
w qui est donc un mot de L.
Il faut insister sur le fait que le Lemme de la pompe nest pas une condition ncessaire et
sufsante : il existe des langages non reconnaissables qui satisfont le Lemme de la pompe. On ne
peut donc pas dduire dun langage quil est reconnaissable en montrant quil satisfait le Lemme
de la pompe. Mais lon peut sen servir bien sr pour montrer quun langage nest pas reconnais-
sable, comme nous lavons fait prcdemment pour le langage des parenthses a
n
b
n
[ n N,
puisque, par contraposition, un langage qui ne satisfait pas le Lemme de la pompe ne peut pas tre
reconnaissable.
Exprimons donc la ngation de la proprit de la pompe, cela se fait par application des rgles
usuelles de logique permettant de pousser les ngations lintrieur des formules en changeant les
quanticateurs, et par application galement du thorme de dduction (permettant de prouver la
proprit A = B en prouvant B avec un ensemble dhypothses augment de A). On obtient :
Pompe
d
= N > 0, m L, [m[ N tel que u, v, w V
t
satisfaisant
(i) m = uvw,
(ii) v ,= ,
(iii) [uv[ < N,
alors k Nat tel que uv
k
w , L.
La preuve faite au dbut de ce paragraphe nous a montr que le langage des parenthses satisfait
la proprit Pompe, et quil nest donc pas un langage reconnaissable. Mais comment faire avec
un langage qui satisfait le thorme de la pompe ? Lide cette fois est de combiner la proprit de
la pompe avec une autre proprit de clture.
Considrons le langage L = c
m
a
n
b
n
[ m > 0, n 0 a
, on
obtiendra encore un mot de a
;
2. ee
;
3. e
) = Lang(e) Lang(e
) ;
2. Lang(ee
) = Lang(e) Lang(e
) ;
3. Lang(e
) = (Lang(e))
;
4. Lang((e)) = Lang(e).
On considre parfois, sans ncessit, des expressions rationnelles dites tendues, en ajoutant la
construction e qui dnote le langage complmentaire de Lang(e). Cette construction est en effet
redondante, comme on pourra le dduire du thorme 6.3.
J.-P. Jouannaud Universit Paris Sud
26 Expressions rationnelles
6.2 Thorme de Kleene
Un fait tout fait remarquable est que les langages rationnels ne sont rien dautres que les lan-
gages reconnaissables : cest le thorme de Kleene.
Thorme 6.3 Rat = Rec
Preuve: Rat Rec. La preuve se fait aisment par rcurrence sur la taille des expressions ration-
nelles, grce aux proprits de clture des langages reconnaissables.
Cas de base u V
t
: il est ais de construire un automate /
u
reconnaissant u;
Cas gnral Si e et e
).
1. Lexistence dun automate reconnaissant Lang(e+e
en une succession de
chemins de q q ne repassant pas par q, puis en un chemin de q q
,
pour terminer par une succession de chemins de q
. Cela revient
faire apparatre le long du chemin qui va de q q
L
{i,f}
i,f
(L
{i,f}
f,f
)
L
I
q,q
=
a V
t
s.t.
q T(q, a)
a
a V
t
and
q
T(q, a) I
a (L
I{q
}
q
,q
)
L
I{q
}
q
,q
L
I
q,q
=q
=
a V
t
s.t.
q
T(q, a)
a
a V
t
and
q
T(q, a) I
a (L
I{q
}
q
,q
)
L
I{q
}
q
,q
On peut maintenant montrer par rcurrence sur la taille de lensemble dtats autoriss Q I que le
langage L
I
q,q
est rationnel.
Cas de base : si Q = I, alors on a ncessairement L
Q
q,q
=
a V
t
s.t.
q T(q, a)
a et
L
Q
q,q
=q
=
a V
t
s.t.
q T(q, a)
a qui sont lun et lautre rationnels.
Cas gnral : on applique lhypothse de rcurrence aux langages L
I{q
}
q
,q
et L
I{q
}
q
,q
dans le
premier cas, et aux langages L
I{q
}
q
,q
et L
I{q
}
q
,q
dans le second avant de conclure par utili-
sation des oprations daddition, produit et itration des expressions rationnelles dont linter-
prtation est justement lunion, le produit et litr de langages.
J.-P. Jouannaud Universit Paris Sud
6.3 Identits remarquables 27
Donnons un exemple illustrant le calcul dune expresion rationnelle pour le langage reconnu par
lautomate de la gure 6.1.
FIG. 6.1 Langage reconnu par un automate.
Langage Calcul Expression rationnelle
L = (L
{0}
0,0
)
L
{0}
0,0
= a (L
{0,1}
1,1
)
L
{0,1}
1,0
= +a(b +ce
d)
L
{0,1}
1,0
= b c (L
{0,1,2}
2,2
)
L
{0,1,2}
2,0
= b +c( +e)
L
{0,1}
1,1
= c ()
L
{0,1,2}
2,1
=
L
{0,1,2}
2,1
= =
L
{0,1,2}
2,2
= e = +e
L
{0,1,2}
2,0
= d = d
Notons que le langage vide L
{0,1,2}
2,1
est dnot par lexpression rationnelle vide.
6.3 Identits remarquables
Deux expressions rationnelles distinctes peuvent dnoter le mme langage. Par exemple, (a+b)
et (a
dnotent toutes deux le langage des mots quelconques sur lalphabet a, b. Nous donnons
ci-dessous un ensemble didentits remarquables satisfaites par les expressions rationnelles. Elles
pourront tre vries en exercice.
1. r +s = s +r
2. (r +s) +t = r + (s +t)
3. (rs)t = r(st)
4. r(s +t) = rs +rt
5. (r +s)t = rt +st
6.
=
7. (r
= r
8. ( +r)
= r
9. (r
= (r +s)
i
appele ltre, et A
i
est un programme caractristique du type dunit
lexicale reconnu par le ltre P
i
.
Par exemple, pour le langage des expressions arithmtiques, on aura :
lettre = a [ b [ c [ d [ e [ f [ g [ h [ i [ j [ k [ l [ m [ n [ o [ p [ q [ r [ s [ t [ u [ v [ w [ x [ y [ z
chiffre = 0 [ 1 [ 2 [ 3 [ 4 [ 5 [ 6 [ 7 [ 8 [ 9
Si chiffre(chiffre)
Alors Id
Si lettre(lettre)
Alors Cte
Notons que puisque toutes les constantes sont remplaces par le token Cte, on a perdu de linfor-
mation. Pour la suite de linterprtation du langage considr, il faut garder un lien entre le token et
la valeur de la constante correspondante. Le mme problme se pose pour les identicateurs.
J.-P. Jouannaud Universit Paris Sud
6.4 Analyse lexicale avec loutil LEX 29
q
0
q
1
q
2
q
3
q
4
q
5
q
6
e n
d
a . . . z a . . . z
FIG. 6.2 Automate danalyse lexicale
Il y a plusieurs faons de conserver ce lien, suivant le type de langage utilis. En programmation
fonctionnelle, on peut considrer le token comme tant une fonction dont largument est lunit
lexicale qui la produit : cest ce qui est fait dans CAMLLEX. En programmation imprative, il est
dusage de conserver ce lien dans une table, la table des symboles. Le token est alors une paire,
forme du token lui-mme dune part, et dun pointeur sur la table des symboles dautre part. La
table des symboles pourra bien sr contenir un grand nombre dinformations pour chaque occurrence
diffrente dun mme token.
Dcider dune solution ou dune autre est une question dimplmentation. En ce qui nous
concerne, nous supposerons que lunit lexicale reprsente par le token t est obtenue par un ap-
pel une fonction val, donc est donne par lexpression val(t).
6.4.4 Rgles de priorit
tant donn un programme analyser, cest--dire un mot w sur lalphabet V du langage de
programmation considr, il y aura en gnral de multiples faons de dcouper w en units lexicales.
Un principe de slection est donc ajout qui garantit lunicit du dcoupage :
(i) Le ltre choisi est celui qui reconnat le plus grand prxe du mot w.
(ii) Au cas o plusieurs ltres P
i
1
, . . . , P
i
q
, avec i
1
< . . . < i
q
, reconnaissent le mme (plus
grand) prxe u, le ltre de plus petit indice P
i
1
est choisi.
Soit par exemple un fragment de langage contenant deux types de tokens, le mot cl end , et
les identicateurs. On aura :
lettre = a [ b [ c [ d [ e [ f [ g [ h [ i [ j [ k [ l [ m [ n [ o [ p [ q [ r [ s [ t [ u [ v [ w [ x [ y [ z
Si end Alors End
Si lettre(lettre)
Alors Id
Les automates correspondants ces ltres sont reprsents sur la gure 6.2 sous la forme dun
automate avec transitions vides dont la partie suprieure traite le mot cl end et la partie infrieure
traite les identicateurs. chaque tat acceptant peut tre associ le token correspondant : End pour
q
4
et Id pour q
6
.
Soit endormi le mot reconnatre. Les deux ltres reconnaissent le mme prxe, mais
le deuxime reconnat aussi un prxe plus long, le second ltre est donc choisi et ltat nal de
lexcution de lautomate doit donc tre ltat q
6
. Soit maintenant end le mot reconnatre. Les
deux ltres reconnaissent le mme prxe de longueur maximale, end . Le premier ltre est donc
choisi, et ltat nal doit donc tre ltat q
4
.
Cet automate est dterminis (et se trouve tre minimal) sur la gure 6.3. Ltat acceptant q
3
devrait normalement correspondre aux deux tats acceptants de la gure 6.2. Le choix du premier
J.-P. Jouannaud Universit Paris Sud
30 Expressions rationnelles
q
0
q
1
q
2
q
3
q
4
e
a . . . z
sauf e
n
d
a . . . z
sauf n
a . . . z
sauf d
a . . . z a . . . z
FIG. 6.3 Automate dterminis danalyse lexicale
ltre, cest--dire du mot cl, fait que cet tat acceptant est en fait associ au mot cl uniquement.
Les tokens correspondants aux tats acceptants sont donc End pour q
3
et Id pour q
1
, q
2
et q
4
.
En pratique, ces rgles de priorit imposent que dans LEX, les ltres correspondants aux diff-
rents mots cls devront apparatre avant le ltre pour les identicateurs. De plus, on remarque qu
chaque tat acceptant est associ un unique token, dcrit par un ltre P
i
, et le code excuter lorsque
cet tat acceptant est atteint est donc le code A
i
.
6.5 Exercices
Exercice 6.1 Donner des expressions rationnelles dnotant les langages suivants :
1. les entiers en dcimal ;
2. les entiers relatifs en dcimal, cest--dire pouvant optionnellement commencer par un signe
+ ou un signe ;
3. les identicateurs de PASCAL ;
4. les nombres rels en virgule ottante ;
5. les nombres rels en virgule ottante avec exposants.
Exercice 6.2 Donner un automate reconnaissant le langage des mots forms dun nombre pair de
a et dun nombre impair de b. En dduire une expression rationelle pour ce langage.
Exercice 6.3 Est-ce que les expressions suivantes sont quivalentes pour nimporte quelles expres-
sions rationnelles r et s :
1. (rs +r)
r et r(sr +r)
2. s(rs +s)
r et rr
s(rr
s)
3. (r +s)
et r
+s
k0
L
2k+1
0
J.-P. Jouannaud Universit Paris Sud
6.5 Exercices 31
4. Donner une expression rationnelle dau plus 13 symboles qui dnote le langage L (il en existe
en fait de moins de 10 symboles). Justiez votre rponse.
5. En dduire un automate dterministe minimal reconnaissant L.
6. Donner une expression rationnelle dnotant le langage L
0
des mots obtenus partir des mots
de L
0
en supprimant, pour chacun deux, les lettres de rang impair (la premire, la troisime,
etc.), de telle sorte que le mot aaaaaabbbbbbbb devient aaabbbb).
7. Donner un automate dterministe minimal pour L
0
.
8. Donner une expression rationnelle dnotant le langage L
0
des mots obtenus partir des
mots de L
0
en supprimant, pour chacun deux, leur seconde moiti, de telle sorte que le mot
aaaaaabbbbbbbb devient le mot aaaaaab.
9. Donner un automate dterministe minimal pour L
0
.
10. Exprimer laide de L et L
0
le langage L
.
J.-P. Jouannaud Universit Paris Sud
32 Grammaires formelles
Chapitre 7
Grammaires formelles
Les grammaires sont des outils pour dcrire des langages, inspirs des grammaires utilises pour
les phrases du langage naturel, comme par exemple :
Une phrase simple est constitue dun sujet suivi dun verbe suivi dune prposition
suivie dun complment. Le sujet est un prnom ou bien un pronom. Les prnoms sont
choisir parmi Alain , Batrice et Charles . Les pronoms sont choisir parmi
Il et Elle . Les prpositions sont choisir parmi , de , au et en . Les
verbes sont choisir parmi va et vient . Les complments sont choisir parmi
lcole et march .
Les rgles informelles ci-dessus peuvent tre dcrites par des rgles de grammaire.
7.1 Grammaires
Dnition 7.1 Une grammaire G est un quadruplet (V
t
, V
n
, S, R) o
1. V
t
est un ensemble ni de symboles dits terminaux, appel vocabulaire terminal ;
2. V
n
est un ensemble ni (disjoint de V
t
) de symboles dits non-terminaux, appel vocabulaire
non terminal ;
3. V = V
n
V
t
est appel le vocabulaire de la grammaire G;
4. S est un non-terminal particulier appel source, ou axiome ;
5. R (V
t
) V
en un nouveau mot v V
se rcrit
en le mot v V
et w
2
V
;
2. v = w
1
dw
2
;
On dit que le mot u V
se rcrit en le mot v V
drive du mot u V
, dans la
grammaire G, ce que lon note par u
telle que w
0
= u, w
i
w
i+1
pour tout i [0, n 1], et w
n
= v.
Nous avons vu ci-dessus que le mot 11010M drive du mot 1M dans la troisime grammaire de
la gure 7.1. Par convention, nous indiquerons le non-terminal rcrit dans un mot en le soulignant,
comme dans
1M 11M 110M 1101M 11010M
Dnition 7.3 Le langage engendr par la grammaire Gest lensemble des mots de V
t
qui drivent
de laxiome de G, que lon note par Lang(G).
Il est ais de se convaincre que lensemble des mots qui appartiennent aux langages engendrs
par les grammaires de la gure 7.1 est dans les deux cas lensemble des entiers naturels crits en
binaire, cest--dire les suites de 0 et de 1 ne commenant pas par 0, sauf la suite 0 elle-mme.
J.-P. Jouannaud Universit Paris Sud
34 Grammaires formelles
7.3 Classication de Chomsky
Les grammaires telles que nous venons de les dnir sont dites gnrales. Les langages engen-
drs sont dits de type 0 dans la hirachie de Chomsky. On verra quils sont reconnus par des machines
de Tring.
7.3.1 Grammaires contextuelles
La grammaire de la gure 7.2 dcrit le langage a
n
b
n
c
n
[ n 0. Ses rgles ont la particularit
davoir un membre droit de taille suprieure ou gale celle de leur membre gauche.
S aSBC[
CB BC
aB ab
bB ab
bC bc
cC cc
FIG. 7.2 Grammaire contextuelle
Dnition 7.4 tant donne une grammaire G = V
t
, V
n
, S, R, une rgle de R est dite contex-
tuelle si elle est de la forme g d avec [g[ [d[. Une grammaire est contextuellesi toutes ses rgles
le sont, et le langage engendr est alors dit contextuel ou de type 1.
Les langages de type sont reconnus par des machines de Tring particulires utilisant un espace
mmoire born.
7.3.2 Grammaires hors-contexte
La grammaire
S [aSb
dcrit le langage a
n
b
n
[ n 0. Cette grammaire a une particularit : le membre gauche de chaque
rgle est un non-terminal.
Dnition 7.5 tant donne une grammaire G = V
t
, V
n
, S, R, une rgle de R est dite hors-
contexte si elle est de la forme N u o u V
t
. Une grammaire est rgulire
si toutes ses rgles le sont, et un langage est alors dit rgulier ou de type 3.
J.-P. Jouannaud Universit Paris Sud
7.4 Forme normale de Chomsky 35
Les langages rguliers sont bien sr reconnus par des machines de Tring particulires :
Thorme 7.7 Un langage est rgulier si et seulement si il est reconnaissable.
Preuve: tant donn une grammaire rgulire G = V
t
, V
n
, S, R, on commence par calculer une
nouvelle grammaire G
= V
t
, V
n
, S, R
n
f, S, f, T) tel que M T(N, a) ssi N aM R
,
M T(N, ) ssi N M R
, f T(N, a) ssi N a R
, et f T(N, ) ssi N R
.
On vrie alors aisment que Lang(A) = Lang(G
).
Rciproquement, partir dun automate / = (V
t
, Q, i, F, T) sans transition vide, on construit la
grammaire rgulire G = V
t
, Q, i, R telle que q aq
ssi q
tels que S
N ;
(b) N V
n
, N est productif : w V
t
tel que N
w.
Thorme 7.9 Pour toute grammaire hors-contexte G = V
t
, V
n
, S, R, il existe une grammaire
hors-contexte G
= V
t
, V
n
V
n
S
, S
, R
S, S
n
[ M
;
Pour tout M E Faire
Pour toute rgle N M de R Faire
Ajouter la rgle N R
Fin Faire ;
Fin Faire
Enlever les rgles M telles que M V
n
J.-P. Jouannaud Universit Paris Sud
36 Grammaires formelles
3. limination des rgles M N. On applique la procdure suivante G prive de la rgle
S
:
Calculer les paires (M, N) telles que M
N ;
Pour chaque paire (M, N) calcule Faire
Pour chaque rgle N u
1
[ . . . [u
n
de R Faire
Ajouter la rgle M u
1
[ . . . [u
n
R
Fin Faire
Fin Faire ;
Enlever toutes les rgles M N
4. Suppression des non terminaux non productifs :
Calculer les non terminaux productifs ;
Enlever tous les autres
5. Suppression des non terminaux non atteignables :
Calculer les non terminaux atteignables ;
Enlever tous les autres
On remarque que chaque tape ne remet pas en cause la prcdente, et donc la grammaire obtenue est
propre. Ce ne serait pas le cas si lon inversait les deux dernires tapes, comme le montre lexemple
G = a, S, M, N, S, R R = S aMN, M a
La mise sous forme propre dune grammaire hors-contexte est la succession de 4 tapes qui
terminent. On en dduit que le vide dune grammaire est dcidable :
Corollaire 7.10 Le langage engendr par une grammaire G est vide si et seulement si sa mise sous
forme propre rsulte en une grammaire vide.
Thorme 7.11 Pour tout langage hors-contexte L, il existe une grammaire propre Gqui lengendre
dont toutes les rgles sont de lune des trois formes S , P a, ou P MN avec M, N
diffrents de S.
Preuve: Partant dune grammaire hors-contexte propre G = V
t
, V
n
, S, R, on commence par ra-
jouter une copie de V
t
V
n
(on notera Ala copie de a), puis lensemble de rgles A a [ a V
t
.
On remplace ensuite les symboles terminaux a gurant dans les membres droits de rgles initiales
par le non-terminal correspondant A, puis on remplace rcursivement la rgle X X
1
. . . X
n
pour
n > 2 par X X
1
Y et Y X
2
. . . X
n
en ajoutant un nouveau non-terminal Y chaque fois.
7.5 Drivations gauches et droites
Nous allons maintenant dcrire un langage prsent dans tous les langages de programmation, le
langage des expressions arithmtiques. Nous noterons par Id et Cte les tokens dcrivant respective-
ment les noms de variables et les constantes entres ou relles (sans les exposants pour simplier).
Ces syntaxes seront supposes tre celles des langages informatiques classiques, lexception prs
que les constantes et les variables pourront tre de taille arbitraire. Pour simplier nous considrons
galement que les seules oprations sont laddition et la multiplication.
Une grammaire des expressions arithmtiques aura alors pour symboles terminaux V
t
=
+, , (, ), Id, Cte et pour non-terminaux lunique symbole E qui sera donc la source :
E Id [ Cte [ E +E [ E E [ (E)
J.-P. Jouannaud Universit Paris Sud
7.5 Drivations gauches et droites 37
Cette grammaire permet dengendrer lexpression arithmtique x +2.5 4 +(y +z), en supposant
que les mots 2.5 et 4 font partie du langage engendr par la grammaire des constantes, et que x, y, z
font partie du langage engendr par la grammaire des variables. En effet :
E E +E Id +E Id +E E Id + Cte E Id + Cte E +E
Id + Cte Cte +E Id + Cte Cte + (E) Id + Cte Cte + (E +E)
Id + Cte Cte + (Id +E) Id + Cte Cte + (Id + Id)
et il suft de remplacer de manire approprie les diffrentes occurrences de Id et Cte pour obtenir
le rsultat dsir. La drivation ci-dessus est appele drivation gauche, car le non-terminal rcrit
chaque tape est celui qui est situ le plus gauche dans le mot obtenu ltape prcdente. La
drivation ci-dessus nest pas unique, en voici une autre trs semblable, qui nest pas une drivation
gauche, mais est obtenue en permutant les deux dernires tapes de la drivation gauche :
E E +E Id +E Id +E E Id + Cte E Id + Cte E +E
Id + Cte Cte +E Id + Cte Cte + (E) Id + Cte Cte + (E +E)
Id + Cte Cte + (E + Id) Id + Cte Cte + (Id + Id)
En voici encore une autre, une drivation droite cette fois :
E E +E E + (E) E + (E +E) E + (E + Id) E + (Id + Id)
E E + (Id + Id) E Cte + (Id + Id) E +E Cte + (Id + Id)
E + Cte Cte + (Id + Id) Id + Cte Cte + (Id + Id)
Comment tre sr que ces drivations sont quivalentes, en le sens que les mots engendrs ont la
mme signication, cest--dire donneront lieu au mme calcul ? Il se trouve que le calcul qui est
associ un mot w dpend non seulement du mot lui-mme, mais aussi de la drivation qui a servi
le fabriquer ! Cette dpendance sexprime par un parenthsage du mot, qui peut tre implicite dans
le mot w, mais devient explicite dans la drivation. Par exemple, le parenthsage explicite du mot
x + 2.5 4 + (y +z) tel quil est dni par la premire drivation est (x + (2.5 (4 + (y +z)))).
La seconde drivation donne le mme parenthsage, mais il nen est pas de mme pour la troisime,
qui correspond au parenthsage (((x + 2.5) 4) + (y + z)). En fait le parenthsage attendu nest
ni lun ni lautre. Il doit traduire les conventions de dsambigusation habituelles, savoir que la
multiplication a priorit sur laddition, et que multiplication et addition associent gauche, cest--
dire que x+y +z doit tre interprt comme tant ((x+y) +z). Cela ne semble pas trs important
puisque laddition et la multiplication sont associatives, mais cela le devient lorsque la soustraction
et la division font partie du langage. Le bon parenthsage est donc ((x + (2.5 4)) + (y + z)), et
une drivation de notre exemple conforme ce parenthsage est la suivante :
E E +E E + (E) E + (E +E) E + (E + Id) E + (Id + Id)
E +E + (Id + Id) E +E E + (Id + Id) E +E Cte + (Id + Id)
E + Cte Cte + (Id + Id) Id + Cte Cte + (Id + Id)
Cette drivation est elle aussi une drivation droite. Nous pouvons maintenant en donner une variante
( des permutations prs) dans laquelle lutilisation de la rgle E EE a lieu lorsquaucune autre
rgle ne peut tre utilise, ce qui est une manire de traduire la convention de dsambigusation :
E E +E E + (E) E + (E +E) E + (E + Id) E + (Id + Id)
E +E + (Id + Id) Id +E + (Id + Id) Id +E E + (Id + Id)
Id +E Cte + (Id + Id) Id + Cte Cte + (Id + Id)
Notre mot possde donc plusieurs drivations droites (et aussi plusieurs drivations gauches) dans
la grammaire, ce qui est la manifestation visible de lambigut. Nous posons donc la dnition
suivante.
J.-P. Jouannaud Universit Paris Sud
38 Grammaires formelles
Dnition 7.12 Une grammaire G est ambigu sil existe un mot w Lang(G) qui possde plu-
sieurs drivations droites dans G.
Notre grammaire des expressions arithmtiques est donc ambigu. Nous allons la transformer
de manire reter les rgles de dsambigusation, ce qui ncessite lutilisation de nouveaux non-
terminaux F et G. Lide de la transformation est la suivante : un nouveau symbole non-terminal est
utilis pour chaque niveau de priorit, et une rgle rcursive gauche est utilise pour traduire lasso-
ciativit gauche. Par exemple, la rgle E E+F va permettre dengendrer une suite dadditions
parenthses gauche. Le non-terminal F servira engendrer les expressions arithmtiques qui ne
sont pas des additions. Il faudra donc rajouter aussi la rgle E F de manire terminer la s-
quence dadditions. Ainsi, si lon dispose galement de la rgle F a, on engendrera lexpression
a +a +a par la drivation suivante :
E E +F E +F +F F +F +F a +F +F a +a +F a +a +a
la rgle de multiplication doit tre change conformment ce principe, et les rgles de notre nou-
velle grammaire des expressions arithmtiques sont alors les suivantes :
E E +F [ F F F G [ G G (E) [ Cte [ Id
Le mme mot est maintenant obtenu par une unique drivation gauche ou droite, nous donnons
ci-dessous la drivation gauche :
E E +F E +F +F F +F +F G+F +F Id +F +F
Id +F G+F Id +GG+F Id + Cte G+F Id + Cte Cte +F
Id + Cte Cte +G Id + Cte Cte + (E) Id + Cte Cte + (E +F)
Id + Cte Cte + (F +F) Id + Cte Cte + (G+F) Id + Cte Cte + (Id +F)
Id + Cte Cte + (Id +G) Id + Cte Cte + (Id + Id)
La transformation opre sur la grammaire a limin lambigut au prot dune part dune perte de
simplicit, car lcriture de la grammaire est plus complexe, et dautre part dune augmentation de
la longueur de la drivation des mots du langage.
7.6 Arbres syntaxiques
Nous avons vu que, dans une mme grammaire G, un mot pouvait avoir plusieurs drivations
quivalentes, cest--dire sobtenant les unes des autres par des permutations adquates. Nous allons
donc maintenant exhiber une structure de donne, les arbres syntaxiques, qui est invariante par ces
permutations, de telle sorte quun mot de Lang(G) possde un arbre syntaxique unique lorsque G
est non-ambigu.
Dnition 7.13 tant donne une grammaire G = (V
t
, V
n
, S, R), les arbres de syntaxe de G sont
des arbres, les nuds internes tiquets par des symboles de V
n
, et les feuilles tiquets par des
symboles de V , tels que, si les ls pris de gauche droite dun nud interne tiquet par le non-
terminal N sont tiquets par les symboles respectifs
1
, . . . ,
n
, alors N
1
n
est une rgle
de la grammaire G.
Un arbre de syntaxe dont la racine est tiquete par laxiome de la grammaire et dont le mot des
feuilles u appartient V
t
est appel arbre de drivation ou encore arbre syntaxique de u.
Tout arbre de drivation est donc un arbre de syntaxe, mais certains arbres de syntaxe ne sont pas
des arbres de drivation, soit parce que leur racine nest pas tiquete par laxiome de la grammaire,
soit parce que certaines de leur feuilles sont tiquetes par des non-terminaux.
J.-P. Jouannaud Universit Paris Sud
7.6 Arbres syntaxiques 39
FIG. 7.3 Deux arbres de drivation du mot Id +Cte Cte +(Id +Id) dans la grammaire ambigu
des expressions arithmtiques
FIG. 7.4 Parcours gauche et droit de larbre de drivation du mot Id + Cte Cte + (Id + Id) dans
la grammaire des expressions arithmtiques dsambiguse
Larbre de drivation dnit tout un ensemble de drivations de son mot des feuilles. Une dri-
vation est en fait obtenue ds que lon a x un mode de parcours de larbre dans lequel un nud ne
peut tre visit que si son pre la dj t. Ainsi, la gure 7.3 montre deux arbres de drivation du
mot Id + Cte Cte + (Id + Id) dans la grammaire ambigu des expressions arithmtiques. Partant
de la racine, le parcours gauche consiste descendre tant que cela est possible en choisissant en
permanence la branche la plus gauche. Lorsque lon arrive une feuille, il faut remonter au plus
proche anctre dont un ls na pas encore t visit, puis recommencer la descente partir du plus
gauche des ls non encore visits. La gure 7.4 indique les parcours gauches et droits de larbre de
drivation du mot Id + Cte Cte + (Id + Id) dans la grammaire dsambiguse, en numrotant les
nuds internes de larbre de drivation dans lordre o ils sont visits.
La discussion prcdente montre que le mot des feuilles dun arbre de drivation de la grammaire
G appartient Lang(G). Nous allons maintenant montrer la rciproque en construisant larbre de
syntaxe associ une drivation. Notons que cette fois la drivation est suppose quelconque : son
origine est un non-terminal arbitraire, et le mot engendr peut comporter des non-terminaux. On va
donc construire des arbres de syntaxe qui ne seront pas ncessairement des arbres de drivation. On
procde par rcurrence sur la longueur des drivations de la faon suivante :
une drivation de longueur nulle, cest--dire un symbole V , on associe un arbre de
syntaxe rduit une feuille tiquete par ;
une drivation de longueur n+1, de la forme N
w
1
Mw
2
w
1
1
. . .
n
w
2
, on associe
larbre de syntaxe obtenu partir de larbre de syntaxe de la drivation N
w
1
Mw
2
en
ajoutant, la feuille tiquete par M, n feuilles tiquetes respectivement par
1
, . . . ,
n
.
On en dduit la proprit fondamentale suivante :
Thorme 7.14 tant donne une grammaire G = (V
t
, V
n
, S, R), un mot u V
t
appartient
Lang(G) si et seulement sil possde un arbre de drivation dans la grammaire G.
On remarque facilement que des drivations qui schangent par des permutations adquates ont
le mme arbre de drivation. On peut donc reformuler notre dnition dambigut de la manire
suivante :
Dnition 7.15 Une grammaire G est ambigu sil existe un mot u Lang(G) qui possde deux
arbres de drivation distincts dans la grammaire G.
La gure 7.3 conrme que notre premire grammaire des expressions arithmtiques tait ambi-
gu, comme cela est toujours le cas avec des oprateurs binaires inxes, comme + et , moins
dinclure les rgles de priorit des oprateurs dans la grammaire, lorsquil y en a. Dans ce cas, la
grammaire ambigue peut toujours tre transforme en une grammaire non ambige comme nous
lavons fait pour la grammaire des expressions arithmtiques.
J.-P. Jouannaud Universit Paris Sud
40 Grammaires formelles
7.7 Exercices
Exercice 7.2 On considre la grammaire suivante :
G = (0, 1, N, N, N 11 [ 1001 [ N0 [ NN)
1. Dessiner les arbres de drivation pour les mots 11011 et 11110.
2. Est-ce que la grammaire est ambigu ?
3. On regarde larbre syntaxique suivant :
N
N
N
1 1
0
N
N
1 0 0 1
N
1 1
Donner la drivation gauche et la drivation droite pour cet arbre.
Exercice 7.3 On considre le langage des expressions arithmtiques avec addition, oprateur inxe
not +, soustraction, oprateur inxe not , oppos, oprateur unaire prxe not , multiplica-
tion, oprateur binaire not , division, oprateur binaire inxe not /, et exponentiation, oprateur
binaire not . Les oprateurs binaires associent tous gauche sauf lexponentiation qui associe
droite, et lordre de priorit est > (oppos) > , / > +, (soustraction).
1. Donner le bon parenthsage des mots 3 2 1 et 2 3 4.
2. Donner le bon parenthsage du mot x +y 2 3 x.
3. Donner une grammaire non-ambigu dcrivant ce langage.
Exercice 7.4 1. Spcier un type abstrait arbre de syntaxe , avec ses fonctions de construc-
tion et daccs.
2. Spcier puis raliser une fonction de parcours gauche et une fonction de parcours droit.
3. Coder ce type abstrait et ces fonctions de parcours en CAML puis en PASCAL.
Exercice 7.5 1. Construire larbre de drivation du mot Id+CteCte+(Id+Id) dans la gram-
maire ambigu des expressions arithmtiques, correspondant au parenthsage ((x + (2.5
4)) + (y +z)).
2. Construire larbre de drivation correspondant la drivation gauche du mot Id+CteCte+
(Id + Id) dans la grammaire dsambiguse des expressions arithmtiques.
Exercice 7.6 Un palindrome non trivial est un mot de longueur au moins deux sur lalphabet a z
qui se lit aussi bien de droite gauche que de gauche droite. Par exemple, eve, anna, otto sont
des palindromes. Une suite-palindrome sera un mot sur ce mme alphabet obtenu en concatnant
plusieurs palindrmes, comme par exemple annaeveotto.
1. Donner une grammaire pour les suites-palindrome.
2. Dessiner les arbres de drivation des mots annaeveotto et aaaa
3. Est-ce que la grammaire est ambigu ?
4. Peut-on trouver une grammaire non ambigu pour le langage ?
J.-P. Jouannaud Universit Paris Sud
41
Chapitre 8
Automates pile
Ce sont les machines utilises pour la reconnaissance des langages hors-contexte.
8.1 Langages reconnaissables par automates pile
Un automate pile est une machine munie dune bande de lecture, dune bande de travail orga-
nise en pile, et dun contrle comme indiqu la gure 8.1.
FIG. 8.1 Lautomate pile.
Dnition 8.1 Un automate pile non-dterministe / est un quadruplet (V
t
, Q, V
P
, T) o
1. V
t
est le vocabulaire de lautomate ;
2. Q est lensemble des tats de lautomate ;
3. V
P
est le vocabulaire de pile de lautomate ;
4. T : Q(V
t
) V
P
T(V
P
Q) est la fonction de transition de lautomate.
Lautomate sera dit dterministe sil vrie la condition :
q Q X V
P
a V
t
, [T(q, , X) T(q, a, X)[ 1 ;
Lautomate sera dit complet sil vrie la condition :
q Q, X V
P
, a V
t
, [T(q, , X) T(q, a, X)[ 1 ;
On notera q
a,X,
q
pour q
T(q, a, X) avec X V
P
, V
P
et a (V
t
).
Lexicographie : on utilisera autant que faire se peut les lettres a, b, c, . . . pour les lettres de V
t
,
les lettres u, v, w, . . . pour les mots de V
t
, les lettres X, Y, Z pour les lettres de V
P
et les lettres
, , , . . . pour les mots de V
P
. Il arrivera toutefois dans les exemples que lon utilise les mme
lettres pour V
t
et V
P
.
La notion de calcul pose un petit problme : celui de faire tomber la pile gauche ou droite.
Dans ce cours, on la fera gnralement tomber droite, et on crira donc le mot (non vide) de pile
sous la forme X, mais on ne sinterdira pas de la faire tomber gauche lorsque cela se rvlera
plus commode, en lcrivant sous la forme X. La diffrence restera bien sr invisible lorsque lon
ne fait pas apparare explicitement le sommet de pile.
Dnition 8.2 tant donn un automate / = (V
t
, Q, V
P
, T), on appelle conguration toute paire
(q, ) forme dun tat q Q de lautomate et dun mot de pile V
P
, et transition de lautomate
la relation entre congurations note (q, )
a,X,
(q
), o a V
t
, X V
P
, V
t
, telle que (i)
(q
=
J.-P. Jouannaud Universit Paris Sud
42 Automates pile
Dans le cas o lon fait tomber la pile gauche, on crira une transition sous la forme
(q, )
a,X,
(q
= .
Dnition 8.3 tant donn un automate / = (V
t
, Q, V
P
, T), on appelle calcul dorigine (q
0
Q,
0
V
+
t
), toute suite (q
0
,
0
)
a
1
,X
1
,
1
(q
1
,
1
) . . . (q
n1
,
n1
)
a
n
,X
n
,
n
(q
n
,
n
) ventuelle-
ment vide de transitions.
Lentier n est la longueur du calcul et a
0
a
1
. . . a
n
est le mot lu par le calcul, ce que lon notera en
criture abrge sous la forme (q
0
,
0
)
a
0
...a
n
(q
n
,
n
).
Il sera parfois commode de noter un calcul sous une forme un peu diffrente, le contenu de pile
apparaissant au dessus de la che gurant la transition, une transition reliant alors des tats plutt
que des congurations :
q
0
a
1
,
1
X
1
,
1
q
1
. . . . . . q
n1
a
n
,
n
X
n
,
n
q
n
.
Dans le cas o lon fait tomber la pile gauche, cette criture commode devient
q
0
a
1
,X
1
1
,
1
q
1
. . . . . . q
n1
a
n
,X
n
n
,
n
q
n
.
On peut maintenant passer la notion de reconnaissance. En fait, il y en a plusieurs, toutes
quivalentes, qui utilisent diffrentes conditions dacceptation.
Dnition 8.4 On dit que le mot u = u
1
. . . u
n
est reconnu par lautomate /
F
i,
=
(V
t
, Q, i, F, V
P
, , T), o V
P
est appell fond de pile de lautomate, i est son tat initial et
F Q est lensemble des tats acceptants, sil existe un calcul (i, )
u
1
...u
n
(q
n
,
n
) dorigine
(i, ) tel que :
1. reconnaissance par tat nal : q
n
F ;
2. reconnaissance par pile vide :
n
= ;
On note par Lang(/) le langage des mots reconnus par lautomate /
F
i,
qui sera souvent not
simplement A.
On peut galement combiner les deux conditions dacceptation ce qui fournit 3 conditions dac-
ceptation diffrentes. Notons aussi limportance du symbole de fond de pile : la premire transition
de lautomate ncessite la lecture dun symbole dans la pile, qui est donc initialise avec .
Exemple 8.5 L = a
n
b
m
a
n
[ n, m 1 a
m
b
n
a
n
[ n, m 1 Lautomate reconnaissant ce
langage par pile vide est reprsent la gure 8.2.
FIG. 8.2 Automate non dterministe reconnaissant le langage a
n
b
n
a
m
[ n, m 1 a
n
b
m
a
n
[
n, m 1 par pile vide.
Lautomate reprsent la gure 8.3 reconnait ce mme langage par tat nal seul.
FIG. 8.3 Automate non dterministe reconnaissant le langage a
n
b
n
a
m
[ n, m 1 a
n
b
m
a
n
[
n, m 1 par tat nal et fond de pile.
Notons quil est toujours possible de supposer que le symbole de fond de pile se trouve en per-
manence en fond de pile (sauf ventuellement tout la n en cas de reconnaissance par pile vide) et
jamais ailleurs. En effet, tant donn un automate / = (V
t
, Q, i, F, V
P
, , T), on construit aisment
un automate /
= (V
t
, Q i
, i
, F, V
P
, T
comme suit :
T
(i
, ,
) = (i,
)
q Q a V
t
X V
P
T
(q, a, X) = T(q, a, X)
q Q T
(q, ,
(i,
) = (i,
) ;
(ii) q Q a V
t
X V
P
T
(q, a, X) = T(q, a, X) ;
(iii) q Q T
(q,
) = (f, ).
Notons que ces transformations conservent le dterminisme.
Comme le dterminisme est conserv en passant de la reconnaissance par pile vide celle par
tat acceptant, la bonne notion de reconnaissance par un automate dterministe, cest--dire celle
qui qui autorise la plus grande classe de langages reconnus, est base sur la reconnaissance par tat
nal.
8.2 Automates pile et grammaires hors-contexte
Thorme 8.7 Un langage est hors-contexte si et seulement si il est reconnaissable par un automate
pile.
An de bien comprendre la correspondance entre la gnration par une grammaire et la recon-
naissance par un automate, nous allons tudier un exemple. On se donne tout dabord une grammaire
en forme normale de Chomsky qui engendre le langage a
n
b
n
[ n 0, par exemple la grammaire
G = (a, b, S, A, B, C, S, S , S AC, C SB, A a, B b)
et nous allons construire une drivation qui engendre le mot a
3
b
3
:
S AC aC aSB aACB aaCB
aaSBB aaACBB aaaCBB aaaSBBB
aaaBBB aaabBB aaabbB aaabbb
Pour reconnaitre le langage engendr, lide est de construire un automate pile non-dterministe
qui calque le calcul fait par la grammaire : chaque tape, par exemple ltape qui termine la
premire ligne de notre drivation, le prxe maximal v V
t
du mot engendr cette tape, dans
notre cas le mot a
3
, sera trs exactement le prxe dja reconnu cette tape du mot u reconnaitre,
dans notre exemple le mot a
3
b
3
, alors que le reste w V
n
du mot, dans notre cas le mot CBB, sera
le contenu de pile cette tape de la reconnaissance. Notre automate, en adoptant la convention de
la pile qui tombe gauche, sera donc
/ = (a, b, q, q, S, A, B, C, S, q
,S,
q, q
,S,AC
q, q
,C,SB
q, q
a,A,
q, q
b,B,
q).
et la reconnaissance du mot a
3
b
3
donnera les calculs suivants :
(q, S)
,S,AC
(q, AC)
a,A,
(q, C)
,C,SB
(q, SB)
,S,AC
(q, ACB)
a,A,
(q, CB)
,C,SB
(q, SBB)
,S,AC
(q, ACBB)
a,A,
(q, CBB)
,C,SB
(q, SBBB)
,S,
(q, BBB)
b,B,
(q, BB)
b,B,
(q, B)
b,B,
(q, )
J.-P. Jouannaud Universit Paris Sud
44 Automates pile
Notons quil nest pas utile de choisir la grammaire de dpart en forme normale de Chomsky, on
peut faire le mme raisonnement avec une grammaire quelconque, dans laquelle les ocurrences des
symboles terminaux des membres droits de rgles sont transformes en non-terminaux, lexception
de loccurrence du terminal par lequel dbute venrtuellement le membre droit.
G = (a, b, S, B, S, S , S aSB, B b)
S aSB aaSBB aaaSBBB aaaBBB
aaabBB aaabbB aaabbb
/ = (a, b, q, q, S, S, q
,S,
q, q
a,S,SB
q, q
b,B,
q).
(q, S)
a,S,aSB
(q, SB)
a,S,aSB
(q, SBB)
a,S,aSB
(q, SBBB)
,S,
(q, BBB)
b,B,
(q, BB)
b,B,
(q, B)
b,B,
(q, )
On peut maintenant faire la preuve qu toute grammaire hors-contexte correspond un automate
pile qui reconnait le mme langage. Cet automate a un unique tat duquel partent et auquel arrivent
toutes les transitions, que lon appellera lautomate marguerite.
Preuve: On suppose tout dabord donne la grammaire G = (V
t
, V
n
, S, R), et nous allons construire
un automate pile / = (V
t
, Q = q, q, V
n
, S, T) qui reconnait par pile vide le langage des mots
engendrs par la grammaire.
toute rgle de la forme N , on fait correspondre la transition
,N,
.
toute rgle de la forme N a, on fait correspondre la transition
a,N,
.
toute rgle de la forme N X, on fait correspondre la transition
,N,X
.
Lautomate obtenu reconnait bien le langage L(G). Il a sa pile qui est tombe gauche. Une
rcurrence simple montre que les drivations dans la grammaire correspondre trs exactement aux
calculs de lautomate.
La transformation est plus complexe dans le sens inverse, et sans intrt pratique : nous lomet-
trons.
8.3 Exercices
Exercice 8.1 Peut-on complter un automate non dterministe sans changer le langage reconnu ?
un automate dterministe ? lautomate obtenu dans ce cas est-il encore dterministe ?
Exercice 8.2 Montrer que pour tout automate / reconnaissant par pile vide et tat nal en mme
temps, il existe un automate /
t
tel que les proprits
suivantes soit satisfaites
1. m = uxvyw
2. [xy[ > 0
3. [xvy[ < n
4. i 0 ux
i
vy
i
w L
Preuve: Contrairement ce que nous avons fait pour lexemple, nous alons choisir une grammaire
G = (V
t
, V
n
, S, R) en forme normale de Chomsky qui engendre le langage L.
Soit N le nombre de non-terminaux dans la grammaire. Sachant que pour un arbre syntaxique
de hauteur h, le mot des feuilles est de longueur 2
h
au plus
J.-P. Jouannaud Universit Paris Sud
46 Proprits de clture des langages algbriques
Comme toujours, les proprits de pompage ne sont pas caractristiques dune classe de langage.
Il existe donc des langages non-algbriques qui satisfont la proprit de pompage prcdente. Il
est bien-sr possible dlaborer des proprits de pompage plus complexes, que des langages non-
algbriques ont plus de difcults satisfaire, cela fait lobjet dexercices.
9.2.2 Un peu de logique
Lutilisation essentielle dune proprit de pompage est de montrer que certains langages ne sont
pas algbriques. Puisque tout langage algbrique L satisfait la proprit P
alg
(L), un langage qui ne
la satisfait pas ne peut pas tre algbrique.
Ce raisonnement, dit par contraposition, utilise la proprit logique suivante :
A = B si et seulement si B = A
Et donc, le thorme de pompage peut galement sexprimer sous la forme quivalente :
Si le langage L satisfait la proprit P
alg
(L), alors il nest pas algbrique.
Il nous faut donc calculer la proprit P
alg
(L), comme nous lavions fait pour les langages
reconnaissables. Pour cela, nous utiliserons plusieurs quivalences logiques lmentaires, qui per-
mettent en particulier de pousser les ngations vers lintrieur dune formule :
A = B B (A)
A A
(A B) (A) (B)
(A B) (A) (B)
(A = B) A (B)
A A
A A
Ces quivalences permettent de driver deux autres quivalences simples qui interviennent de ma-
nire cruciale dans le calcul qui nous intresse :
(A B = C) A = (B = C)
(A B C D) A B C = (D)
Notons
A
def
= (m = uxvyw)
B
def
= ([xy[ > 0)
C
def
= ([xvy[ < n)
D
def
= (iM)
M
def
= N = O
N
def
= (i 0)
O
def
= ux
i
vy
i
w L
E
def
= (A B C D)
F
def
= (u, x, v, y, w V
t
E)
G
def
= (m L)
H
def
= ([m[ n)
I
def
= (G H)
J
def
= m(I = F)
K
def
= (n N)
P
alg
(L)
def
= n (K = J)
J.-P. Jouannaud Universit Paris Sud
9.3 Proprits de clture 47
Nous sommes maintenant arms pour calculer P
alg
(L) :
P
alg
(L) = n (K = J)
= n K (J)
(J) = m(I = F)
= m I (F)
(F) = (u, x, v, y, w V
t
(E))
(E) = (A B C) = (D)
On peut maintenant calculer la proprit P
alg
(L) :
P
alg
(L) = (n (n N) (m I (u, x, v, y, w V
t
(A B C) = (D))))
= (n (n N) = (m I = (u, x, v, y, w V
t
(A B C) = (D))))
Do nallement :
P
alg
(L) = (n (n N) = (m (m L [m[ n) = (u, x, v, y, w V
t
((m =
uxvyw) ([xy[ > 0) ([xvy[ < N)) = (i 0 ux
i
vy
i
w , L))))
ce qui se rcrit de la manire suivante :
P
alg
(L) = n N m L tel que [m[ n = (u, x, v, y, w V
t
tel que m =
uxvyw [xy[ > 0 [xvy[ < n, i 0 tel que ux
i
vy
i
w , L)
Pour prouver quun langage nest pas algbrique, il suft donc de prouver quil satisfait la pro-
prit P
alg
(L). Cest ce que nous allons faire pour le langage L = a
i
b
i
c
i
[ i 0, dont nous
allons prouver quil satisfait la proprit P
alg
(L) :
Soit n un entier positif arbitraire, m = a
n
b
n
c
n
et m = uxvyw un dcoupage de m tel que
[xy[ > 0 et [xvy[ < n. La condition [xvy[ < n implique que xvy = a
k
b
l
(ou bien, symtriquement,
b
k
c
l
), avec 0 k, 0 l et 0 < k+l < n, et donc, comme [xy[ > 0, v = a
k
b
l
avec k
+l
< k +l.
Prenons alors i = 0 : le mot ux
0
vy
0
w = uvw = a
nk+k
b
nl+l
c
n
nappartient pas L car si
k
= k, alors l
1
du langage L
1
.
Intersection et complmentation. linverse des rationels, les algbriques ne sont clos ni par in-
tersection, ni par complmentation. Seraient-ils clos par lune de ces deux oprations quils seraient
clos par lautre, puisquils sont clos par union, et quunion, complmentation et intersection sont
lies par la clbre loi de Morgan rappelle plus loin.
Thorme 9.6 Les langages algbriques ne sont pas clos par intersection ni par complmentation.
Preuve: On montre la non-clture par intersection. Pour cela, on considre les deux langages L
1
=
a
i
b
j
c
j
[ i, j 0 et L
2
= a
i
b
i
c
j
[ i, j 0 dont lintersection est le langage L = a
i
b
i
c
i
[ i
0 dont a vu au paragraphe 9.2 quil ntait pas algbrique.
Il nous suft donc de montrer que les langages L
1
et L
2
sont algbriques, ce qui a dja t fait.
Supposons maintenant (cest un raisonnement par labsurde) que les algbriques soient clos
par complmentation. Alors, tant donns deux langages algbriques quelconques L
1
et L
2
(par
exemple, les deux langages prcdents), leurs complmentaires L
1
et L
2
le seraient galement, et
donc, par application de la clture par union et de la loi de De Morgan
L
1
L
2
= L
1
L
2
le langage L
1
L
2
le serait galement. Par application de notre hypothse, son complmentaire
L
1
L
2
= L
1
L
2
le serait aussi, ce qui contredit le rsultat prcdent.
Par contre,
Thorme 9.7 Les langages algbriques sont clos par intersection avec un rationel.
Preuve: La preuve est trs similaire celle faite pour lintersection de deux rationnels : tant donns
un automate pile A
1
= (V
t
, Q
1
, i
1
, F
1
, V
P
, , T
1
) reconnaissant par tat nal, et un automate ni
A
2
= (V
t
, Q
2
, i
2
, F
2
, T
2
) sur le mme alphabet V
t
, on construit lautomate pile produit
A = (V
t
, Q
1
Q
2
, (i
1
, i
2
), F F
, T) o T((q
1
, q
2
), a, X) = (T(q
1
, a, X), T(q
2
, a)
Notons que lautomate produit a pour effet de synchroniser les transitions, donc les calculs des
automates de dpart, il reconnait Lang(A
F
q
0
) Lang(A
F
0
).
9.3.1 Substitution et homomorphisme
Thorme 9.8 Les langages algbriques sur un alphabet V
t
sont clos par substitution des lettres de
lalphabet V
t
par des langages algbriques, chaque lettre a V
t
tant remplace par un langage
albbrique L
a
sur un alphabet V
a
t
.
Preuve: La preuve se fait aisment sur les grammaires.
On en dduit le corollaire :
Thorme 9.9 Les langages algbriques sont clos par homophisme.
J.-P. Jouannaud Universit Paris Sud
9.4 Exercices 49
9.3.2 Homomorphisme inverse
Thorme 9.10 Les langages algbriques sont clos par homomorphisme inverse.
Preuve: La peuve a cette fois lieu sur les automates.
9.3.3 Applications
Comme pour les rationnels, les proprits de clture servent tout autant montrer que certains
langages sont algbriques sans avoir en donner une grammaire les engendrant ou un automate
pile les reconnaissant, qu montrer que certains langages sont ne sont pas algbriques alors mme
quils satisfont le Lemme de la pompe.
9.4 Exercices
J.-P. Jouannaud Universit Paris Sud
50 Analyse syntaxique
Chapitre 10
Analyse syntaxique
Le but de ce chapitre est de continuer ltude entreprise dans le chapitre prcdent,
concernant le passage, appel analyse syntaxique, dune grammaire hors-contexte un
automate qui reconnait le langage engendr.
Plus prcisment lobjectif est dintroduire le lecteur aux techniques danalyse syn-
taxique et lutilisation du logiciel YACC. Lanalyse syntaxique est un processus tech-
niquement plus complexe que lanalyse lexicale, dont les objets mathmatiques sous-
jacents sont les automates pile.
Il existe en fait deux faons bien diffrentes de concevoir lanalyse syntaxique dun mot dun
langage dcrit par une grammaire hors contexte. Lors de la lecture du mot (de la gauche vers la
droite), larbre syntaxique peut tre construit de haut en bas, ou de bas en haut, conformment
la gure 10.1. Dans le premier cas, lanalyse conctruit des arbres de syntaxe de racine S dont les
feuilles sont tiquettes par les symboles de V . Dans le second, elle engendre des suites darbres de
syntaxe dont les racines sont des mots sur V et les feuilles des mots sur V T.
Nous allons maintenant illustrer ces deux mthodes sur des exemples et en tirer de mthodes
gnrales.
10.1 Analyse syntaxique descendante
Exemple 10.1 Considrons la grammaire de Dick :
S [ (S)S
Lanalyse descendante correspond une drivation gauche. Par exemple, pour le mot ((()())()),
la drivation gauche est la suivante :
S (S)S ((S)S)S (((S)S)S)S ((()S)S)S ((()(S)S)S)S ((()()S)S)S
((()())S)S ((()())(S)S)S ((()())()S)S ((()())())S ((()())())
Lanalyse syntaxique descendante va construire la suite des arbres danalyse correspondant
cette drivation, reprsente la gure 10.2.
FIG. 10.1 Mthodes danalyse syntaxique
J.-P. Jouannaud Universit Paris Sud
10.1 Analyse syntaxique descendante 51
FIG. 10.2 Analyse syntaxique descendante
10.1.1 Analyse descendante non-dterministe
Il sagit en fait de construire lautomate dj vu qui transforme une grammaire hors-contexte en
un automate pile non-dterministe, lautomate marguerite. Nous renvoyons donc au chapitre qui
prcde.
10.1.2 Analyse descendante dterministe
Lautomate marguerite est dterministe en de rares occasions : si toutes les rgles de membre
gauche N V
P
sont de la forme N ou N a avec la condition que pour chaque N V
n
et a V
t
, il existe au plus une rgle de membre gauche N et dont le membre droit est vide ou
commence par la lettre a.
Cette condition tant trop restrictive, on va essayer de prdire le bon choix chaque tape de
lanalyse, cest pourquoi la mthode que nous allons discuter est aussi appelle analyse descendante
prdictive.
Le choix entre plusieurs rgles applicables peut se faire grce la connaissance du prochain
caractre devant tre engendr, appel le caractre davance. Au dpart, pour notre example, ce
caractre est la parenthse ouvrante, et la premire rgle appliquer doit donc engendrer une paren-
thse ouvrante. Il se trouve que la seconde rgle engendre une parenthse ouvrante, et ce sera donc
elle que lon appliquera chaque fois quune parenthse ouvrante devra tre engendre. De son cot,
la premire rgle fait disparatre le non-terminal S. Or, dans le membre droit de la seconde rgle, la
premire occurrence du non-terminal S est place devant une parenthse fermante. Lapplication de
la premire rgle une telle occurrence de S engendre donc indirectement une parenthse fermante.
Il en est de mme de la seconde occurrence de S (il faut pour sen rendre compte regarder les arbres
syntaxiques) sauf dans le cas o il sagit de la dernire telle occurrence de S remplacer avant de
terminer (et alors il faut ne rien engendrer du tout, car le mot lire est entirement lu). Le choix de
lapplication dune rgle est donc entirement dtermin par la connaissance du caractre davance.
Une telle grammaire est dite LL(1), le premier L tant linitiale du mot anglais Left, qui indique
que la lecture du mot analyser se fait de gauche droite, le second L, initiale du mme mot an-
glais, indiquant que lon construit une drivation gauche, et le 1 indiquant lutilisation dun unique
caractre davance. Toutes les grammaires ne sont pas LL(1), certaines peuvent tre LL(2), sans tre
LL(1), mais seul le cas LL(1) est utilis en pratique. Se rendre compte quune grammaire est LL(1)
demande le calcul des premiers caractres engendrs par lutilisation de chaque rgle. Par exemple,
dans la grammaire de Dick, le premier caractre engendr par lutilisation de la seconde rgle est
la parenthse ouvrante. Notons quune grammaire LL(1) est ncessairement non-ambigu, puisque
le choix dune rgle lors de lanalyse est entirement dtermin par la connaissance du caractre
davance.
An dobtenir un traitement uniforme de tous les cas, il est utile daugmenter la grammaire
considre G = (V
t
, V
n
, S, T) par un nouveau terminal f et un nouveau non-terminal S
qui devient
la source de la grammaire augmente
G
= (V
t
= V
t
f, V
n
= V
n
S
, S
, T
= T S
Sf)
Dnition 10.2 Soit S
g
u
g
uav une drivation gauche telle que u V
t
, V
, a
V
t
, et v V
t
. Alors a est appell caractre davance de la sous-drivation
g
av.
Notons tout dabord que le caractre davance existe toujours, puisque nous avons pris la pr-
caution de prendre S
t
. Ce caractre davance
a plusieurs origines possibles :
J.-P. Jouannaud Universit Paris Sud
52 Analyse syntaxique
- si = a avec a V
t
, le caractre davance a est le premier caractre de la chane ;
- si = N avec N V
n
et N
g
a, le caractre davance est engendr par N ;
- si = N avec N V
n
, N
g
et
g
a, le caractre davance est engendr par .
Do les dnitions :
Dnition 10.3 On dnit les ensembles suivants :
First(N V
) = a V
t
[ V
g
a
First( V
) = a V
t
[ V
g
a
Follow(N V ) = a V
t
[ P N et a First(), ou
et a Follow(P)
On peut bien sr calculer aisment First(N) comme un point xe sur lensemble ni V
t
. On
peut ensuite en dduire First() pour tout , et donc pour tout ensemble ni de mots. On peut donc
nalement galement calculer Follow(N) ou Follow(a) nouveau comme des points xes sur V
t
.
Ces calculs utilisent un algorithme pour dcider si un mot V
g
Sf
g
uN
g
uav une drivation gauche de S
vers uav V
t
.
Alors a First(N) ou sinon a Follow(N).
Ce lemme eprime que lchec est assur si le caractre davance a , (First(N) Follow(N)).
La preuve est faire en exercice. Il permet danticiper un chec de lanalyse, mais ne prjuge pas de
la possibilit de russir lanalyse de manire dterministe. Pour cela, nous devrons nous assurer que
la drivation qui engendre le caractre lavance est de la forme N w
av o w est unique.
Exemple 10.5 On considre la grammaire
S
Sf
S aSaTb [ bT [ c
T dTK [ bKc [ a
K SS
Construisons la drivation gauche (on rcrit donc en permanence le non-terminal le plus gauche)
du mot abdbcccbbccccaabf :
S
,X,
q
a,
comme symbole lu, X comme symbole de sommet de pile, et enn comme mot empil. Les
transitions vides laissent donc le caractre davance inchang, le caractre lu dans ce cas tant de
la forme (, a), alors que les transitions normales consomment le caractre davance, le caractre
lu dans ce cas tant donc de la forme (a, a).
tant donne une grammaire G = (V
t
, V
n
, S, T), on dnit la condition dapplication dune
rgle arbitraire comme suit :
Trediction(N ) =
First() Follow(N) si
First() sinon
en notant que First() = .
On construit alors lautomate pile
/ = (V
t
f, V
t
V
n
S
, f, S
, 1, 2, 1, 2, T)
qui reconnait L(G) avec deux tats, 1 tant initial et 2 nal (ce dernier tat nest pas ncessaire si
lon dcide de reconnatre par pile vide), o lensemble T des transitions est dni comme suit :
toute rgle M de la grammaire originelle, on associe les transitions :
1
aPrediction(MX),,M,X
1 encore notes M
Prediction(X),,M,X
X
Aux terminaux a V
t
et f, on associe les transitions respectives :
1
a,a,a,
1 et 1
f,f,f,
2
J.-P. Jouannaud Universit Paris Sud
54 Analyse syntaxique
Le lecteur aura avantage dessiner lautomate des exemples 10.5 et 10.6. Notons que de nom-
breuses variantes sont possibles, qui permettent en pratique doptimiser les constructions donnes
ci-dessus. Notons galement que cette construction est trs proche de celle donne pour passer dune
grammaire un automate, la diffrence prs du caractre davance. Notons enn que la construc-
tion de lautomate de prsuppose pas que la grammaire soit ffectivement LL(1).
Il se peut bien sr que lautomate obtenu soit non-dterministe. Il sera en fait dterministe si la
grammaire considre satisfait les conditions de dterminisme nonces ci-aprs.
10.1.4 Condition de dterminisme
On peut maintenant donner formellement les conditions de dterminisme pour lanalyse prdic-
tive descendante dune grammaire G.
Dnition 10.7 Une grammaire est dite LL(1) si elle satisfait la condition :
Pour chaque paire de rgles N [ , Trediction(N ) Trediction(N ) = .
La condition implique bien sr quune seule rgle de membre gauche N peut driver le mot vide.
10.1.5 Factorisation des membres droits
Il sera parfois possible de transformer la grammaire an de procder une analyse descendante
dterministe. Ainsi, la grammaire
S aSaTb [ aSadT [ dT [ c
T dTK [ bKc [ a
K SS
ne conduit pas une analyse dterministe, car First(aSaTb) = First(aSadT) = a. Il est
toutefois trs simple de la transformer en mettant en facteur la partie commune des deux membres
droits concerns, do la grammaire :
S aSaL [ dT [ c
T dTK [ bKc [ a
K SS
L Tb [ dT
Un problme identique apparait maintenant avec les rgles L TB [ dT puisque la rgle
T dTK engendre un d, et donc First(dT) First(Tb) = d. On va liminer cette nou-
velle ambiguit par une nouvelle transformation : on recopie tout dabord les membres droits de la
rgle de membre gauche T la place de T dans Tb, ce qui donne :
L dTKb [ bKcb [ ab [ dT
puis on factorise nouveau le membre gauche dT qui est prxe commun deux rgles, do la
grammaire nale :
S aSaL [ dT [ c
T dTK [ bKc [ a
K SS
L dTM [ bKcb [ ab
M Kb [
Le lecteur vriera que la mme mthode que prcdemment permet danalyser la grammaire obte-
nue de manire dterministe.
J.-P. Jouannaud Universit Paris Sud
10.2 Analyse syntaxique ascendante 55
Cette transformation ne permet pas toujours de se ramener une grammaire pour laquelle une
analyse dterministe est possible. Le cas pathologique est celui des rgles rcursives gauches, cest-
-dire de la forme S Sv. Supposons en effet que lon ait les rgles
S Sv [ w
o v, w sont des mots non vides dans V
+
, nayant aucune occurrence de S pour simplier. Les autres
rgles de la grammaire G sont quelconques ne contenant pas doccurrence de S. On aura plusieurs
cas suivant que v, w
G
ou pas.
1. Si w ,
, alors Sv ,
et donc :
Trediction(S w) = First(w)
Trediction(S Sv) = First(Sv) = First(w)
2. Si w
et v ,
, alors Sv ,
et donc :
Trediction(S w) = First(w) Follow(S) = First(w) First(v)
Trediction(S Sv) = First(Sv) = First(S) First(v) = First(w) First(v)
3. Si v, w
, alors Sv
et donc :
Trediction(S w) = First(w) Follow(S) = First(w) First(v)
Trediction(S Sv) = First(Sv) FollowS = First(w) First(v) Follow(S) =
First(w) First(v)
Dans tous les cas, lensemble des caractres davance sont identiques pour les deux rgles. Lanalyse
descendante nest donc pas adapte aux grammaires comportant des rgles rcursives gauches : il
faudrait tout dabord transformer la grammaire an de les liminer. Quoiquune telle transformation
existe, elle est peu utilise en pratique car on lui prferre dans ce cas une analyse ascendante qui na
pas le mme inconvnient.
10.2 Analyse syntaxique ascendante
Lanalyse descendante est trs simple mettre en uvre, puisquil sagit tout simplement de
construire une drivation gauche. Le fait quelle choue chaque fois que la grammaire est rcursive
gauche en est la grande faiblesse dans la mesure o de telles rgles sont frquentes en pratique.
Considrons par exemple la grammaire dsambiguse des expressions arithmtiques :
E E +T [ T
T T F [ F
F (E) [ Id [ Cte
Les rgles E E +T et T T F sont rcursives gauches. De plus, la technique prcdente ne
permettrait visiblement pas de choisir entre les rgles E E+T et E T qui admettent le mme
ensemble de caractres davance. Lanalyse ascendante que nous allons voir maintenant na pas cet
inconvnient, mais elle est dune mise en uvre plus complexe. Le principe est de construire une
drivation droite lenvers. La construction dune drivation droite lendroit ncessiterait en effet
une lecture de droite gauche du mot analyser. La lecture de gauche droite est donc responsable
de cette construction lenvers de la drivation. Ce mode opratoire a pour consquence, on la dj
not, que les objets manipuls au cours de lanalyse ne sont pas des arbres de syntaxe, mais des
squences darbres de syntaxe appeles forts. Une fort a pour racine la squence des racines des
arbres qui la composent, cest--dire un mot sur lalphabet V
t
V
n
de la grammaire. Par exemple,
pour le mot Id Id +Cte, la suite des forts construites est reprsente la gure 10.3. La suite des
racines de ces forts est la suite de mots Id, F, T, T, T Id, T F, E, E+, E+Id, E+F, E+T, E.
J.-P. Jouannaud Universit Paris Sud
56 Analyse syntaxique
FIG. 10.3 Analyse syntaxique ascendante
FIG. 10.4 Shift et Reduce
10.2.1 Automate non-dterministe danalyse ascendante
Les oprations effectues au cours de lanalyse ascendante, comme on peut le remarquer sur la
gure 10.3, sont de deux sortes :
(i) la lecture dun caractre, opration appele shift.
(ii) lenracinement dune rgle, opration appele reduce. Cette opration consiste crire la fort
courante g sous la forme de la juxtaposition de deux forts ff
), et dont f
,
2.
Notons quil est facile de transformer cet automate pile non conforme la dnition en un
automate pile conforme la dnition, cest--dire qui lise exactement un caractre de pile
chaque transition. Pour cela, il suft dintroduire de nouveaux tats dont le rle est de mmoriser
la progression des membres droits de rgles sur la pile. Une alternative permettant de mmoriser la
progression des membres droits de rgles sur la pile est de considrer un nouveau vocabulaire de
pile, enrichi des membres droits de rgles et de leurs prxes. Nous nous autoriserons par la suite
utiliser la forme tendue dautomates.
Lautomate pile obtenu est bien sr non-dterministe puisque shift et reduce sont deux opra-
tions en gnral non-dterministes. On parle ce propos de conit shift-reduce, et de conit reduce-
reduce, car il se peut quil y ait plusieurs dcoupages f
1
f
1
et f
2
f
2
de f tels que les racines de f
1
et f
2
soient des membres droits de rgles, de mme quil peut y avoir plusieurs rgles de mme membre
droit.
Il ne peut tre dterministe quen labsence de tels conits.
Labsence de conit reduce-reduce impose que 2 membres droits de rgles ne puissent coexister
en sommet de pile, cest--dire, quaucun membre droit de rgle ne soit sufxe dun autre membre
droit de rgle. Dans le cas de la grammaire des expressions arithmtiques, par exemple, cette condi-
tion nest pas vrie cause des rgles comme E E +T [ T. Elle nest bien sr jamais vrie
en prsence de rgles de la forme N .
J.-P. Jouannaud Universit Paris Sud
10.2 Analyse syntaxique ascendante 57
Labsence de coni shift-reduce est plus gnante puisquun shift est toujours possible. Contrai-
rement au cas de lanalyse descendante, lautomate obtenu ne peut donc jamais tre dterministe.
10.2.2 Dterminisation de lanalyse ascendante
Nous allons donc le dterminiser grce la lecture dun caractre davance. Lorsquil est possible
de rsoudre le non-dterminisme par la lecture dun caractre davance, on dit que la grammaire
est LR(1). Le premier L a la mme signication que prcdemment, il correspond la lecture de
gauche droite. Initiale du mot anglais Right, R correspond la drivation droite (faite lenvers),
et le 1 au nombre de caractres davance. Dans notre exemple, nous avons rencontr de nombreux
problmes de choix shift-reduce. Par exemple, aprs la lecture du premier token Id du mot
analyser, nous avons effectu une rduction alors que nous aurions pu tout aussi bien faire une
nouvelle lecture. Dans ce cas, il naurait plus jamais t possible dobtenir un arbre syntaxique dont
le premier caractre lu soit Id . Par contre, lors de la troisime tape, cest un shift qui a t prfr
un enracinement : il aurait t possible denraciner avec la rgle E T, mais il naurait jamais
t possible denraciner ultrieurement E, qui napparat pas dans un membre droit de rgle. Des
conits reduce-reduce se prsentent galement, chaque fois que la racine de la fort courante se
termine par E +T ou T F. On peut alors enraciner avec les rgles E T et E E +T dans le
premier cas, et avec les rgles T F et T T F dans le second. Dans les deux cas, on prfrera
la rgle de plus long membre droit, cest dire E E + T ou T T F. De nouveau, le choix
contraire interdirait lenracinement ultrieur de +E dans le premier cas et de T dans le second.
Comme il est possible de rsoudre tous les conits, la grammaire des expressions arithmtiques est
LR(1). Notons l-encore quune grammaire LR(1) est non-ambigu.
10.2.3 Principes dune analyse ascendante prdictive
Dans un premier temps, nous allons rduire le non-dterminisme par une mthode comparable
ce que nous avons fait pour lanalyse ascendante. La dcision du choix entre un shift et un reduce,
ou entre plusieurs reduce concurrents se fera en comparant le caractre en sommet de pile avec le
caractre davance.
Dans le cas dun shift, larbre syntaxique doit avoir la forme indique la gure 10.5, ce qui
implique lexistence dune rgle P X telle que a First(). On notera dans ce cas
a Follow
0
(X). Notons que la toute premire action lors dune analyse consiste lire le pre-
mier caractre du mot analyser, qui est en mme temps le caractre davance. Il est galement
important de remarquer que le calcul de First() de fait pas intervenir les rgles N , mme si
la grammaire en contient. En effet, le membre droit de la rgle tout entier doit se trouver sur la pile
au moment dune rduction. Prenons lexemple de la grammaire de Dick dordre 1, avec les rgles
S [ S(S)
Lorsque la pile contient une parenthse ouvrante en son sommet -par exemple, la pile vaut dS(-,
alors il ne faut pas faire un shift, puisque cela amnerait une seconde parenthse ouvrante sur la pile
au dessus de la premire, ce qui interdirait toute rduction ultrieure. Il faut au contraire faire une
rduction avec la rgle S .
Dans le cas dun reduce, larbre syntaxique doit avoir la forme indique la gure 10.6, ce qui
implique la relation habituelle a Follow(N
1
), ce que nous noterons a Follow
+
(X) pour ne
faire rfrence quau symbole de sommet de pile. Notons que cette notation nest pas idale, dans le
cas o coexistent plusieurs rgles ayant des membres droits se terminant par le mme symbole X et
des membres gauches distincts. Dans ce cas, on utilisera la version plus prcise a Follow(N
1
).
Notons que les relations Follow
0
(X) et Follow
+
(X) sont trs proches. Ce qui les diffrencie
est que dans le second cas on soblige repasser par le membre gauche N de la rgle N X
candidate pour une rduction (et peut-tre galement par dautres membres gauches succesivement),
alors que dans le premier on sinterdit ce passage par un tel membre gauche de rgle.
J.-P. Jouannaud Universit Paris Sud
58 Analyse syntaxique
P
e
e
e
e
e
e
r
r
r
r
r
r
r
r
r
r
r
r
X
fort dj construite
e
e
e
e
e
e
e
e
e
e
e
e
a
fort en devenir
dernier enracinement
FIG. 10.5 Russite dun shift
N
1
.
.
.
N
p
P
... ...
e
e
e
e
e
e
e
e
e
e
e
e
... X
fort dj construite
e
e
e
e
e
e
e
e
e
e
e
e
a
fort en devenir
dernier enracinement
FIG. 10.6 Russite dun reduce
Plutt que de donner lautomate danalyse ascendante prdictive pour la grammaire des expres-
sions arithmtiques sous sa forme habituelle, nous allons donner le programme danalyse ascendante
dterministe qui code cet automate :
Proc Analyse-Ascendante-Deterministe(u)
u:= uf ; r := d ;
Tantque r = rX et u=av Faire
Cas X = d Alors Empiler(a) ; u := v
X = E Alors Si a {+,),f} Alors Empiler(a) ; u := v
Sinon Retourner(echec)
Fin Si
X = T Alors Cas a = * Alors Empiler(a) ; u := v
a {+,),f} Alors Cas r = rE+T Alors r := rE
J.-P. Jouannaud Universit Paris Sud
10.2 Analyse syntaxique ascendante 59
r = rT Alors r := rE
Fin Cas
Sinon Retourner(echec)
Fin Cas
X = F Alors Si a {+,*,),f} Alors Cas r = rT*F Alors r := rT
r = rF Alors r := rT
Fin Cas
Sinon Retourner(echec)
Fin Si
X = ( Alors Si a {(,Id,Cte} Alors Empiler(a) ; u:=v
Sinon Retourner(echec)
Fin Si
X = * Alors Si a {(,Id,Cte} Alors Empiler(a) ; u:=v
Sinon Retourner(echec)
Fin Si
X = + Alors Si a {(,Id,Cte} Alors Empiler(a) ; u:=v
Sinon Retourner(echec)
Fin Si
X = ) Alors Si a {+,*,),f} Alors Si r = r(E) Alors r := rF
Sinon Retourner(echec)
Fin Si
Sinon Retourner(echec)
Fin Si
X = Id Alors Si a {+,*,),f} Alors r := rF Fin Si
Sinon Retourner(echec)
Fin Si
X = Cte Alors Cas a {+,*,),f} Alors r := rF Fin Si
Sinon Retourner(echec)
Fin Si
Sinon Retourner(echec)
Fin Cas
Fin Tantque
Si r=dEf Alors Retourner(succes) Sinon Retourner(echec)
Fin Proc
Conditions de dterminisme Elles expriment limpossibilit dun conit shift-reduce (condition
(i)) comme dun conit reduce-reduce (conditions (ii) et (iii)) pour la grammaire G analyser :
(i) Si la pile est de la forme r = X o N X est une rgle de G, alors labsence de conit
shift-reduce est exprim par la condition :
Follow
0
(X) Follow(N) =
(ii) Si N et M sont deux rgles de G avec M ,= N, alors labsence de conit
reduce-reduce est exprim par la condition :
Follow(N) Follow(M) =
(iii) Si N et N K sont deux rgles de G, alors une condition sufsante dabsence
de conit reduce-reduce est exprim par la condition suivante, qui interdit dempiler N au dessus de
K :
N , Follow
0
(K)
On pourrait choisir une condition plus gnrale, mais celle-ci nous sufra dans un premier temps.
J.-P. Jouannaud Universit Paris Sud
60 Analyse syntaxique
On peut vrier que les conditions de dterminisme sont satisfaites pour la grammaire G des
expressions arithmtiques dsambigues.
Notons que cette mthode danalyse revient construire un automate pile possdant un unique
tat, les transitions tant entirement dtermines par le symbole en sommet de pile et le caractre
davance.
10.2.4 Automate SLR danalyse ascendante
Lanalyse que nous venons dffectuer a de nombreuses limitations, car la connaissance du som-
met de pile nest pas sufsante pour en caractriser ltat. Elle ne permet donc pas danticiper cer-
tains checs, et aboutit des conits shift/reduce dans des cas o un shift (ou un reduce) ne peut
manifestement pas conduire une analyse russie. Considrons lexemple suivant dun fragment de
grammaire pour lequel nous avons dj ffectu lanalyse descendante prdictive :
S
dSf
S aSa [ bT [ c
K SS
Supposons que S est en sommet de pile. Nous ferons
un shift si a Follow
0
(S) = a, b, c, f ;
un reduce avec la rgle S SS si a Follow
+
(S) = c.
Le non-dterminisme na donc pas t rsolu. Il pourrait toutefois ltre grce une analyse un tout
petit peu plus prcise. En effet, supposons que le caractre davance soit c et que le sommet de pile
contienne :
1. bS : dans ce cas, on ne peut rduire avec SS qui ne gure pas dans la pile. Il faut faire un shift,
la pile contient alors bSc, ce qui permet de rduire avec S c, puis avec k SS et la pile
contiendra alors bK ce qui permet de poursuivre lanalyse, par exemple si le nouveau caratre
davance est c.
2. bSS : dans ce cas, un shift amnerait bSSc en sommet de pile, puis bSSS, puis bSK, ce qui
conduit ncessairement un chec. Au contraire, un reduce donne bK en sommet de pile, puis
bKc par shift, ce qui amne la nouvelle rduction avec t bKc, permettant de poursuivre
lanalyse.
Nous allons donc rafner notre analyse en mmorisant plus dinformation sur ltat de la pile.
Pour cela, nous pouvons nous appuyer sur une proprit fondamentale de lanalyse ascendante : le
langage des mots de pile obtenus au cours des analyses (non-dterministes) russies des mots de
L(G) est reconnaissable.
Lide est de construire un automate dont les tats dcrivent la progression dans lanalyse en
cours des membres droits de rgles possibles. Ces tats vont tre constitus dun ensemble ditems,
o un item est une rgle dont le membre droit est dcor par une marque adquate, on utilise g-
nralement un point. Par exemple, E .E + T, E E. + T, E E + .T, E E + T.
sont des items de la grammaire dsambigue des expressions arithmtiques qui dcrivent les tapes
successives de lanalyse de la rgle E E + T. Un item seul ne suft pas dcrire tous les
calculs possibles un moment donn, car les membres droits de deux rgles diffrentes peuvent
avoir un prxe commun, ne serait-ce que le prxe vide. Tant que ce prxe commun est en
cours danalyse, on ne peut savoir laquelle des deux rgles sappliquera in ne. Les tats seront
donc des ensembles ditems reprsentant les futurs possibles du calcul en cours. Par exemple,
E E + .T, T .T F, T .F, F .(E), F .Id, F .Cte constitue un ensemble
ditems qui dcrivent les volutions possibles de lanalyse lorsque la pile contient E+ en son som-
met. Notons que cet ensemble ditems contient des informations trs prcieuses :
Le sommet de pile E+;
Les caractres qui appartiennent First(T) tout comme ceux qui appartiennent First(F).
Cela est du au fait que T et F gurent droite du point dans lun au moins des items de
lensemble. Il sensuit que le calcul de la relation Follow sera inutile.
J.-P. Jouannaud Universit Paris Sud
10.2 Analyse syntaxique ascendante 61
Dnition 10.8 tant donne une grammaire G dont N est une rgle, la rgle pointe
N . est appelle item ou en-cours. Un ensemble I ditem est
- clos si pour tout item M .N I, alors N . I pour toute rgle N de G;
- compatible si tous les items quil contient ont des prxes compatibles : tant donns deux
items quelconques N . et N
appartenant lensemble,
dSf, on dnit lautomate ni / = (V
t
V
n
d, f, Q, i, Q, T) dont les tats sont les cltures
des ensembles ditems compatibles, ltat initial est la clture de lensemble S
o I
est bien un
tat de l automate.
Lemme 10.10 Lautomate A reconnait le langage des mots de pile obtenus au cours des analyses
non-dterministes (russies) des mots de L(G).
Calculons les ensembles ditems pour la grammaire des expressions arithmtiques :
I0 = S
E.f, E E. +T
I2 = E T., T T. F
I3 = T F.
I4 = F (.E), E .E +T, E .T, T .T F, , T .F, F .(E), F .Id, F .Cte
I5 = F Id.
I6 = F Cte.
I7 = S
Ef.
I8 = E E +.T, T .T F, T .F, F .(E), F .Id, F .Cte
I9 = T T .F, F .(E), F .Id, F .Cte
I10 = F (E.), E E. +T
I11 = E E +T., T T. F
I12 = T T F.
I13 = F (E).
Lautomate obtenu dans le cas des expressions arithmtiques est donn la gure 10.7, o il est
reprsent sous forme dune table dont les lignes sont indexes par les noms dtats, et les colonnes
par les lettres du vocabulaire.
Notons quil ny a pas de transitions sortante depuis les tats constitus ditems tous terminaux,
ce qui est parfaitement normal, puisque tous les items tant terminaux dans un tel tat, continuer
lanalyse est devenu impossible.
On peut transformer cet automate en un automate pile reconnaissant les mots de L(G) :
1. Les tats de lautomate restent les mme. Toutefois, ltat I7 correspondant la n dune
analyse russie sera limin ;
J.-P. Jouannaud Universit Paris Sud
62 Analyse syntaxique
tat Shift/Reduce Transitions vides
f + ( ) Id Cte E T F
I0 I4 I5 I6 I1 I2 I3
I1 I7 I8
I2 I9
I3
I4 I4 I5 I6 I10 I2 I3
I5
I6
I7
I8 I4 I5 I6 I11
I9 I4 I5 I6 I12
I10 I8 I13
I11 I12
I12
I13
FIG. 10.7 Automate danalyse des mots de pile engendrs au cours des analyses ascendantes
russies des expressions arithmtiques
2. Les transitions tiquettes par une lettre de V
t
sont des shifts, ils provoquent la lecture dun
caractre du mot analyser. On notera S Ik pour indiquer que le shift (cest--dire lempi-
lement du caractre lu) est suivi dune transition dans ltat Ik.
3. Les transitions tiquettes par une lettre X V
n
correspondent un changement dtat induit
par lempilement dun membre gauche de rgle suite une rduction ;
4. Les tats contenant des items de la forme N . deviennent source dune transition au
cours de laquelle est dpil et N est empil. Cette rduction a bien sr lieu au cas o le
caractre davance appartient Follow(N). Ltat darriv doit donc tre calcul en fonction
de la rduction effectue et de ltat de la pile. Par exemple, si la pile contient le mot dE +T
et quil faut faire la rduction E E + T, alors elle contiendra ensuite le mot dE et lon
devra donc tre dans ltat I1. Mais si la pile contenait le mot d(E + T, la mme rduction
aboutira au mot de pile d(E, et lon devra tre dans ltat I10. Chaque conguration de la
pile correspondant un tatd e l automate, on peut stocker dans la pile (en plus du caractre
de pile) ltat courant atteint au moment de cet empilement. Une rduction consistera alors
dpiler un nombre de fois gal la taille du membre droit de le rgle utlise dans la rduction,
puis empiler le membre gauche ainsi que le nouvel tat atteint (obtenu en lisant la table de
transition de lautomate danalyse des mots de pile, ltat de dpart tant stock dans la pile,
et le caractre lu tant le membre gauche de la rgle utilise).
5. On considrera que la pile est initialise avec le symbole d de manire ne pas tre vide, mais
en fait ce symbole ne jouera aucun rle. La gure 10.8 exprime cet automate en indiquant,
lorsquune rduction doit tre ffectue, quelle rgle sapplique, les rgles tant numrotes
partir de 0, numro de la rgle S dSf.
On en dduit que les tats contenant un item terminal et des items non-terminaux sont sources de
conits shift-reduce potentiels. En cas dabsence de tel tat, on est assur de pas avoir de tel conit.
De mme, les tats contenant plusieurs items terminaux sont sources de conits reduce-reduce
potentiels. En cas dabsence de tel tat, on est assur de pas avoir de tel conit.
Le cas de la grammaire des expressions arithmtiques trait la gure 10.8 montre un exemple
dautomate dterministe qui possde des tats pouvant engendrer les deux catgories de conit. Le
caractre davance permet toutefois dans cet exemple de rsoudre les conits potentiels.
J.-P. Jouannaud Universit Paris Sud
10.2 Analyse syntaxique ascendante 63
tat Shift/Reduce Transitions vides
f + ( ) Id Cte E T F
I0 S I4 S I5 S I6 I1 I2 I3
I1 succs S I8
I2 R2 R2 S I9 R2
I3 R4 R4 R4 R4
I4 S I4 S I5 S I6 I10 I2 I3
I5 R6 R6 R6 R6
I6 R7 R7 R7 R7
I8 S I4 S I5 S I6 I11
I9 S I4 S I5 S I6 I12
I10 S I8 S I13
I11 R1 R1 S I12 R1
I12 R3 R3 R3 R3
I13 R5 R5 R5 R5
FIG. 10.8 Automate danalyse ascendante des expressions arithmtiques
Pile Input tat Action
d Id * Id + Id f I0 S-I5
d Id * Id + Id f I5 R-6
d F * Id + Id f I3 R-4
d T * Id + Id f I2 S-I9
d T * Id + Id f I9 S-I5
d T * Id + Id f I5 R-6
d T * F + Id f I12 R-3
d T + Id f I2 R-2
d E + Id f I1 S-I8
d E + Id f I8 S-I5
d E + Id f I5 R6
d E + F f I3 R4
d E + T f I11 R1
d E f I1 succs
FIG. 10.9 Exemple danalyse ascendante dterministe
Cet automate est appell automate SLR de la grammaire des expressions arithmtiques. Un
exemple danalyse avec lautomate SLR est donn la gure 10.9.
Le lecteur pourra utilement modier les dnitions prcdentes de manire effectivement sto-
cker les tats dans la pile de manire pouvoir calculer automatiquement ltat atteint en cas de
rduction.
Variantes On peut amliorer la mthode SLR, en enrichissant les items SLR (aussi appells items
LR(0)) comme suit :
Dnition 10.11 On appellera item LR(1) les couples (N ., a) forms dun item SLR et dun
caractre du vocabulaire terminal tels que a First()a appell caractre de retour de litem. Un
ensemble I ditems LR(1) sera clos si pour tout item (N .X, b) I, pour toute rgle X
J.-P. Jouannaud Universit Paris Sud
64 Analyse syntaxique
et tout terminal a First(b), alors (X ., a) I. Lensemble initial ditems est la clture
de lensemble S
Cte Cte
+
Cte
Cte Cte
Il existe une correspondance biunivoque entre ces arbres et les mots reconnu par la grammaire
abstraite : le parcours gauche dun arbre de syntaxe abstraite permet de construire le mot correspon-
dant. Ainsi, les exemples darbres prcdents correspondent aux mots
(Cte, Cte) +(Cte, (Cte, Cte))
Rciproquement, on associe chaque mot engendr par la grammaire abstraite un arbre de syntaxe
abstraite par une construction analogue la construction rcursive labore au paragraphe 7.6 :
un mot engendr par une rgle N t on associe larbre rduit une feuille tiquete par t ;
un mot engendr par une rgle N t(N
1
, . . . , N
n
) on associe larbre dont la racine est
tiquete par t et dont les ls sont, dans cet ordre, les arbres associs aux mots engendrs par
N
1
,. . ., N
n
.
Si lon compare les arbres de syntaxe abstraite des mots exemples prcdents avec leurs arbres
de drivation dans la grammaire concrte non-ambigu du langage des expressions arithmtiques :
J.-P. Jouannaud Universit Paris Sud
70 Syntaxe abstraite des langages
E
E
T
F
Cte
T
F
Cte
E
E
T
F
Cte
+ E
E
T
F
Cte
T
F
Cte
on constate que lon a atteint notre deuxime objectif : les non-terminaux introduits pour dsambi-
guser ont t limins. Remarquons aussi que si lexpression originale contenait des parenthses,
celles-ci ne sont plus prsentes dans larbre : cest la structure de larbre qui donne le parenthsage.
11.3 Reprsentation des valeurs des tokens dans larbre
Il nous reste reprsenter les valeurs des tokens dans larbre de syntaxe abstraite lui-mme.
Pour ce faire, il nest pas ncessaire de changer la notion darbre : il suft dutiliser la possibilit
davoir un ensemble inni dtiquettes abstraites. Cet ensemble sera donc en fait un langage rgulier
(les entiers, les chanes de caractres, etc.) aussi cet ensemble dtiquettes abstraites sera souvent
informellement donn en extension avec des points de suspension, ou encore sous forme dune
expression rationnelle.
Ainsi, pour reprsenter les expressions arithmtiques avec les valeurs des constantes, il suft de
prendre T = +, , Cte N et la grammaire abstraite suivante :
E +(E, E) [ (E, E) [ Cte(Nat)
Nat (0 [ 1 [ [ 9)
+
Le langage dni par cette grammaire contiendra donc par exemple (Cte(1), Cte(2)) et
+(Cte(1), (Cte(2), Cte(3))).
Pour rsumer, la gure 11.1 montre un tableau donnant deux exemples dexpressions arithm-
tiques, accompagnes de leur arbre de drivation et leur arbre abstrait associ, o lon constate
nouveau la simplicit et la concision apporte par la notion darbre abstrait. Nous avons donc atteint
notre dernier objectif.
11.4 Calcul des arbres de syntaxe abstraite
Le dernier point qui reste traiter dans ce chapitre est la faon dassocier chaque mot dun
langage son arbre abstrait. Cela se fait facilement dans le cadre du logiciel YACC comme expliqu
au paragraphe 10.2.5. Ainsi, si lon poursuit notre exemple des expressions arithmtiques, on aura :
E E +T +(E
1
, T
1
)
E T T
1
T T F (T
1
, F
1
)
T F F
1
F Nat Cte(val(Nat
1
))
F (E) E
1
Noter lutilisation de la fonction val pour accder lunit lexicale reprsente par le token Nat. Par
ailleurs, la notation +(E
1
, T
1
) reprsente ici la construction dun arbre de syntaxe dont la racine est
tiquette par le symbole +, et les sous-arbres proviennent rcursivement de lvaluation de E
1
et
T
1
.
J.-P. Jouannaud Universit Paris Sud
11.4 Calcul des arbres de syntaxe abstraite 71
syntaxe syntaxe arbre arbre de
utilisateur concrte de drivation syntaxe abstraite
1+3*2 Nat + Nat Nat
E
E
T
F
Nat
+ T
T
F
Nat
F
Nat
+
Cte
1
Cte
3
Cte
2
val(Nat
1
) = 1
val(Nat
2
) = 3
val(Nat
3
) = 2
(1+3)*2 (Nat + Nat) Nat
E
T
T
F
( E
E
T
F
Nat
+ T
F
Nat
)
F
Nat
+
Cte
1
Cte
3
Cte
2
val(Nat
1
) = 1
val(Nat
2
) = 3
val(Nat
3
) = 2
FIG. 11.1 Comparaison des syntaxes abstraites et concrtes
J.-P. Jouannaud Universit Paris Sud
72 Syntaxe abstraite des langages
11.5 Codages des arbres de syntaxe abstraite
Nous terminons ce chapitre par quelques indications sur la mthode que lon peut utiliser pour
programmer ces arbres de syntaxe abstraite.
Dans le langage CAML, ce codage est immdiat en utilisant des types sommes. Ainsi, on dnira
le type des expressions arithmtiques par :
type expr =
Cte of int
| Plus of expr * expr
| Mult of expr * expr
Dune manire gnrale, il y aura autant de types dnir que de sortes darbres de syntaxe abs-
traite, et il y aura autant de constructeurs que de rgles de grammaire abstraite. Les ensembles innis
dtiquettes abstraites comme les entiers ou les identicateurs seront cods simplement par le type
de base correspondant : int ou string. Cela est notre seule faon de coder des ensembles in-
nis dtiquettes abstraites. Nous imposerons donc que tout ensemble inni dtiquettes abstraites
corresponde lun des types de base parmi int, string, et real.
Dans un langage comme PASCAL ou C noffrant pas cette possibilit des types sommes et
dallocation automatique de mmoire, il est ncessaire de coder ces arbres laide de pointeurs
sur des enregistrements, contenant un champ pour ltiquette abstraite et des champs pour les sous-
arbres. Dans un langage avec objets comme C++ ou JAVA, on aura avantage coder les arbres par
des classes, la construction et la destruction de ces arbres en seront facilites.
11.6 Exercices
Exercice 11.1 1. crire une grammaire abstraite pour les expressions boolennes formes avec
les oprations ou , et et non , et les constantes vrai et faux .
2. Donner une grammaire concrte non-ambigu pour le langage des expressions boolennes
avec toutes les oprations ci-dessus, et donner les rgles de calcul de la syntaxe abstraite
associes.
3. Donner un type CAML reprsentant cette syntaxe abstraite.
4. crire une fonction CAML permettant de transformer une chaine de caractres reprsentant
une expression boolenne en une expression abstraite, en utilisant loutil CAMLYACC.
Exercice 11.2 1. crire une grammaire abstraite pour les expressions arithmtiques sur laddi-
tion, la multiplication, la soustraction, la division, loppos, lexponentiation, les constantes
entires ou relles et les variables. (On ne distinguera pas les constantes entires, on les co-
dera par des rels.)
2. Donner une grammaire concrte non-ambigu pour le langage des expressions ci-dessus, et
donner les rgles de calcul de la syntaxe abstraite associes.
3. Donner un type CAML reprsentant cette syntaxe abstraite.
4. crire une fonction CAML permettant de transformer une chane de caractres reprsentant
une expression arithmtique en une expression abstraite, en utilisant loutil CAMLYACC.
J.-P. Jouannaud Universit Paris Sud
73
Chapitre 12
Machines de Turing
Conformment la gure 12.1, les machines de Turing considres sont dotes :
1. dune bande de lecture bi-innie, sur laquelle la donne, mot sur le vocabulaire V
t
, sera crite
entoure linni de caractres blancs, considr comme notre caractre spcial not _ nap-
partenant pas V
t
;
2. dun nombre ni de bandes de travail qui peuvent stocker des mots entours linni de blancs
sur les vocabulaires respectifs V
1
, . . . , V
n
ne contenant pas le caractre blanc ;
3. dun contrle matrialis par un ensemble ni Q dtats ;
4. dun tat initial q
0
;
5. dun ensemble F Q dtats acceptants ;
6. et dune fonction de transition T, qui est une application de QV
t
V
1
. . . V
n
dans
QL, R L, R . . . L, R si la machine est dterministe,
et T(QL, R L, R . . . L, R) si la machine est non dterministe.
Lors de chaque transition, la machine de Turing lit un mot sur chaque bande, ffectue une transi-
tion dtat accompagne du dplacement du lecteur de chaque bande conformment la fonction T.
La notion de reconnaissance est ici un peu diffrente de celle que lon a vue pour les automates : il
suft daccder un tat acceptant sans quil soit ncssaire davoir lu le mot reconnaitre en entier.
La reconnaissance dun mot arbitraire peut donc sffectuer en zro transition, il suft de dclarer
que q
0
est acceptant. Cette machine, bien sr, ne vrie mme pas que le mot est form de lettres
appartenant lalphabet autoris pour la bande entre.
On peut bien sr prendre une autre dnition o lon force la lecture des donnes, mais ce
modle prsente quelques inconvnients du point de vue de la thorie de la complexit, en particulier
labsence de complexit sub-linaire.
12.1 Exercices
FIG. 12.1 La machine de Turing.
J.-P. Jouannaud Universit Paris Sud
74 Complexit en temps et en espace
Chapitre 13
Complexit en temps et en espace
On dnit la complexit des langages relativement un modle de calcul particulier, les machines
de Turing. Cela peut sembler limiter la porte des constructions, mais on saperoit vite que ce
modle rsiste de nombreuses variations, et que tous les modles de la calculabilit connus donnent
peu ou prou les mmes notions de complexit.
On peut se demander si la notion de langage est bien celle qui convient, puisque lon est en
gnral intress par des problmes, et non des langages. En fait, tout problme peut se coder sous la
forme dun langage sur un alphabet nio, la prcision est dimportance, par un codage appopri des
donnes et rsultats du problme. On pourra donc parler indiffremment de langage ou de problme.
13.1 Classes de complexit
On dira quune machine de Turing M est borne en temps par la fonction T(n) si elle ne fait pas
plus de T(n) transitions pour une donne de taille n. On sintressera tout particulirement au cas
o T est un polynme. Dans ce cas, on dira que M travaille en espace polynomial.
On dira quune machine de Turing M est borne en espace par la fonction S(n) si elle ne balaie
pas plus de S(n) cellules sur chaque bande pour une donne de taille n. On sintressera tout parti-
culirement au cas o S est un polynme. Dans ce cas, on dira que M travaille en temps polynomial.
Ces notions servent classier les langages suivant le temps -ou lespace- ncssaire pour
reconnaitre les mots qui en font partie. On dira ainsi quun langage L appartient la classe
DTIME(T(n)) sil existe une machine de Turing dterministe M qui reconnait un mot u L
en temps au plus T([ u [), et la classe NTIME(T(n)) sil existe une machine de Turing non
dterministe M qui reconnait un mot u L en temps au plus T([ u [). La dnition des classes
DSPACE(S(n)) et NSPACE(S(n)) est similaire.
Finallement, on dira quun langage L appartient la classe P (respectivement NP) sil
existe un polynme P(n) tel que L soit reconnu en temps DTIME(P(n) (respectivement,
NTIME(P(n))). La dnition des classes PSPACE et NPSPACE est similaire.
De nombreuses autre classes jouent un rle important, en particulier les classes logarithmiques en
espace, LOGSPACE qui est dterministe, et NLOGSPSACE qui est non dterministe -lespace
autoris est une puissance quelconque du logarithme de la taille de lentre-, ainsi que les classes
exponentielles en temps EXPTIME et NEXPTIME. Enn, la classe de complexit lmen-
taire (en temps) caractrise les langages dont la reconnaissance est borne en temps par une hauteur
arbitraire dexponentielles emboites, comme n
n
n
, de hauteur 3. On ne parle dans ce cas que de
complexit dterministe. Cette classes interviendra par la suite.
Le nombre de bandes utilises na gure dimportance pour les classes de complexit
P, NP, PSPACE, NPSPACE : on peut le rduire 2 en passant de DTIME(T(n))
DTIME(T(n)logT(n)), et mme un en passant de DTIME(T(n)) DTIME(T(n)
2
).
J.-P. Jouannaud Universit Paris Sud
13.2 Comparaisons entre mesures de complexit 75
Le tableau qui suit rcapitule les classes de complexit que nous venons de dcrire.
MT dterministe MT non dterministe
Temps T(n) DTIME(T(n)) NTIME(T(n))
Temps polynomial P NP
Temps exponentiel EXP NEXP
Temps lmentaire
Temps non lmentaire
Espace S(n) DSPACE(S(n)) NSPACE(S(n))
Espace logarithmique LOGSPACE NLOGSPACE
Espace polynomial PSPACE NPSPACE
Une dernire classe importante est CoNP. On dit quun langage L V
L si :
1. M fonctionne en temps polynomialement born en fonction de la taille de son entre ;
2. M(x) L ssi x L
.
Dnition 13.2 Le langage L
L si :
1. M fonctionne en espace logarithmiquement born en fonction de la taille de son entre ;
2. M(x) L ssi x L
.
Lemme 13.3 Supposons que L
NP ;
2. L P = L
P.
Lemme 13.4 Supposons que L
P ;
2. L LOGSPACE = L
LOGSPACE.
Ce sont les rductions qui vont nous permettre de comparer les langages entre eux :
Dnition 13.5 Soit ( une classe de complexit. On dit que L est complet pour ( vis--vis de la
rduction polynomiale en temps (respectivement la rduction logarithmique en espace) si
1. L ( ((-difcult) ;
2. tout langage L
i
ait exactement
p(n) caractres.
Chaque mot #(q, a, b, D, q
) sont considrs comme les lettres dun alphabet ni particulier W dont le sous-
ensemble form des quintuplets (f F, a, b, D) est not W
F
. On utilisera la notation pointe de la
programmation par objets pour rcuprer les composantes des lments de W. Notons par ailleurs
que peut tre une squence (ventuellement vide) forme de blancs uniquement si la tte de lecture
pointe sur un blanc.
chaque caractre X qui peut gurer dans la descrition dun calcul, on associe une variable
propositionnelle c
i,j,X
qui servira indiquer si le (j + 1)me caractre (on commence avec j = 0)
de la ime description instantane est un X. Lexpression M
x
cherche doit assurer les proprits
suivantes :
1. Mot : les variables c
i,j,X
dcrivent un mot, et donc lune delle exactement est vraie pour
chaque paire (i, j) ;
2. Init : m
0
dcrit ltat initial de la machine M avec i sur la bande ;
3. Final : m
p(n)
possde un tat acceptant ;
4. Trans : pour chaque i [0, p(n)], m
i+1
dcoule de m
i
par une transition de la machine non
dterministe M.
La formule M
x
cherche est donc la conjonction des formules dcrivant ces quatre proprits. D-
crivons les dans notre langage logique :
Mot =
X
c
i,j,X
X=Y
(c
i,j,X
c
i,j,Y
)
Init = c
0,0,#
XW
c(0, 1, X)
j[1,n]
c
0,j,x
j
j[n+1,p(n)]
c
0,j,_
Final =
XW
F
c
p(n),j,X
Trans =
i[0,p(n)1]
j[0,p(n)]
W, X, Y, Z such
thatf(W, X, Y, Z)
c
i,j2,W
c
i,j1,X
c
i,j,Y
c
i+1,j,Z
J.-P. Jouannaud Universit Paris Sud
13.3 Langages complets 79
o le prdicat de ltrage f(W, X, Y, Z) dcrit la possibilit pour le caractre Z dapparaitre en
position j de la (i+1)me description instantane, sachant que les caractres W, X et Y apparaissent
aux positions respectives j
1
, j et j + 1 de la ime description instantane. Il est important de noter
que ce prdicat doit simplement tre calcul partir de la donne de la machine M, sans quil soit
ncessaire de le construire. Il sert en effet liminer les calculs impossibles de la formule. Il faudrait
au contraire le construire dans notre langage si nous avions dni
Trans =
i[0,p(n)1]
j[0,p(n)]
W,X,Y,Z
f(W, X, Y, Z) = c
i,j2,W
c
i,j1,X
c
i,j,Y
c
i+1,j,Z
Il faut maintenant montrer quil est possible de construire la formule M
x
, ce qui inclue le calcul du
prdicat f, en espace logarithmique. Cela rsulte du fait que la taille de M
x
est de lordre de p(n)
2
,
et quil suft dun espace logarithmique pour compter jusqu une valeur qui sexprime comme un
polynme de n.
Il reste enn montrer que la machine M accepte la donne x si et seulement si la formule M
x
est satisable. Comme tout a t fait pour que ce soit vrai, la preuve en est laise au lecteur.
Les problmes NP-complets sont trs nombreux, comme la programmation linaire en nombres
entiers, le problme du sac dos, le problme du voyageur de commerce, ou comme la recherche
dans un graphe dun circuit hamiltonien, dun chemin de longueur minimale, dun coloriage en 4
couleurs. La recherche dun chemin eulrien, par contre est polynomiale.
On peut se demander o est la frontire entre le polynomial et le polynomial non-dterministe.
Appelons n CNF, la restriction du problme SAT au cas o la formule propositionnelle est
une conjonction de clauses comprenant toutes le mme nombre n de littraux. On peut montrer que
2 CNF est polynomial, alors que 3 CNF est dja NP-complet.
Les problmes NP-complets ont longtemps t considrs comme intractable. Quun problme
soit NP-complet nempche pas de le rsoudre, en gnral, du moins ses instances de taille pas trop
grande. Il existe souvent de nombreuses sous-classes qui sont polynomiales, comme 2 CNF dans
le cas de SAT. La difcult est gnralement concentre sur des problmes trs particuliers, qui
font apparatre des phnomnes de seuils pour certains paramtres : loin du seuil, le problme est
polynomial ; prs du seuil, il devient difcile, mais il peut alors tre possible de trouver une solution
approximative en utilisant des algorithmes probabilistes.
13.3.3 PSPACE-compltude
La classe PSPACE est tout aussi mystrieuse. Le problme PSPACE-complet paradigma-
tique de cette classe est un autre problme de logique, QBF pour Quantied Boolean Formulae, pour
lequel il sagit de dcider si une formule propositionnelle quantie est satisable ou pas. Le langage
est donc cette fois bti partir dun nombre ni de variables propositionnelles, des connecteurs lo-
giques habituels, et des quanticateurs universel et existentiel. Cest lalternance des quanticateurs
qui va nous propulser dans une classe dont on pense quelle et intrinsquemnt plus complexe que la
classe NP. On dit quune variable est libre dans une formule si elle nest pas dans la porte dun
quanticateur.
Lemme 13.8 QBF est dans NP.
Preuve: La preuve utilise llimination des quanticateurs sur un ensemble ni, ici lensemble des
valeurs de vrit. On a en effet les quivalences logiques :
x(x) (0) (1)
x(x) (0) (1)
Le problme est qutant donne une formule de taille n, la formule transforme peut tre de taille
exponentielle en n :
n
x
1
x
2
. . . x
n
est de taille 4n 1
J.-P. Jouannaud Universit Paris Sud
80 Complexit en temps et en espace
FIG. 13.2 La formule transforme de taille exponentielle.
mais sa transforme reprsente la gure 13.2 est de taille 2
n1
1+2
n
(n1) > (n1)
2
2
n
.
On va donc parcourir larbre ci-dessus sans lengendrer, en dnissant une procdure dvalua-
tion rcursive EV ALqui utilise un espace de tavail polynomial dans la pile dexcution pour valuer
:
1. = true : EVAL retourne la valeur true ;
2. =
1
2
: EVAL retourne la conjonction des rsultats obtenus rcursivement pour
1
et
2
;
3. =
1
2
: EVAL retourne la disjonction des rsultats obtenus rcursivement pour
1
et
2
;
4. = : EVAL retourne la ngation du rsultat obtenu rcursivement pour ;
5. = x : EVAL construit les formules
0
et
1
en remplaant respectivement la variable x
par 0 et 1 dans , puis retourne la disjonction des rsultats obtenus rcursivement pour
0
et
1
;
6. = x : EVAL construit les formules
0
et
1
comme prcdemment, puis retourne la
conjonction des rsultats obtenus rcursivement pour
0
et
1
.
Comme le nombre de connecteurs ou quanticateurs est au plus gal la taille n de la formule, la
profondeur de rcursion est au plus n. La taille des donnes stocker dans la pile dexcution tant
linaire en n, on en dduit que lespace occupp dans la pile (pour laquelle on utilisera par exemple
une bande spcique de la machine) est quadratique. Donc QBF est dans PSPACE.
Les preuves dappartenance PSAPCE patissent du fait que NPSPACE = PSPACE. On
pourrait en dduire que le mme schma va nouveau fonctionner, en construisant un arbre de choix
en espace polynomial non-dterministe. En fait, cela nest pas le cas. Les problmes PSPACE,
comme le problme QBF, ne se prtent pas la dcomposition en une premire phase dnumration
non-dterministe qui contient toute la complexit suivie dune phase de vrication polynomiale.
Vrier quun ensemble de valeurs de vrit est une solution dun problme de QBF est tout ausi
difcile que de les trouver.
Thorme 13.9 QBF est PSPACE-complet.
Preuve: Reste rduire tout problme de PSPACE QBF par une rduction que lon choisit poly-
nomiale en temps. La rduction est similaire la rduction prcdente pour NP, en plus complexe.
Nous terminons par un problme qui intervient de manire cruciale en vrication : laccessi-
bilit dans un graphe consiste, tant donns un graphe G et deux sommets a et b, dterminer sil
existe un chemin allant de a b.
Thorme 13.10 Laccessibilit dans un graphe est NSPACE(log n)-complet pour les rductions
en espace logarithmique.
Preuve: Le codage du problme comme un langage sur un alphabet ni est laiss au lecteur. Notons
toutefois que le codage dun noeud du graphe prendra log n bits sil y a n sommets.
On montre tout dabord que le problme est dans la classe NSPACE(log n). Pour cela, on
va engendrer tous les chemins grce au non-dterminisme, de sorte que la mmoire occuppe soit
de taille logarithmique en n pour chacun deux. Pour cela, on va chaque tape (il y aura au plus
n tapes) engendrer tous les sommets et vrier que lon construit bien un chemin dune part, et
J.-P. Jouannaud Universit Paris Sud
13.4 Exercices 81
si le sommet engendr est le sommet voulu dautre part. Cela suppose de mmoriser pour chaque
chemin partiel le sommet qui vient dtre engendr plus le sommet prcdent, ce qui se fait en espace
logarithmique. On ne conserve donc pas le chemin.
Il reste rduire tout problme de NSPACE(log n) au problme daccessibilit par une ma-
chine de Turing dterministe fonctionnant en espace logarithmique. La rduction est esquisse, les
dtails sont laisss au lecteur.
Soit M une machine de Tring non-dterministe fonctionnant en espace logarithmique de la
taille de son entre, et x une donne de taille n. La description de la machine un moment donn se
fait avec log n bits, puisquelle fonctionne en espace logarithmique. Nous allons contruire un graphe
M
x
qui va coder le fonctionnement de la machine et aura un chemin du premier noeud au dernier ssi
la machine M reconnait x. Les noeuds du graphe seront les descriptions instantanes de la machine
plus un dernier pour lacceptance. Le premier noeud est la description initiale. il y aura un arc dun
noeud un autre si la transition correspondante est posible. Ce graphe rpond bien la question, et
il faut montrer quon peut lengendrer avec une machine qui travaille en espace logarithmique. Cela
est du au fait que chaque description instantane est code sur approximativement log n bits.
Cette preuve est intressante car elle mle la gnration alatoire incrmentale dun objet (ici,
un chemin dans un graphe) avec le test que cette gnration construit bien lobjet en question. Cela
est ncssit par le besoin de rduire la taille occuppe lincrment de lobjet, lobjet lui-mme
prenant trop de place.
13.4 Exercices
Exercice 13.1 Montrer que le problme de satisabilit pour CNF est NP complet.
Exercice 13.2 Montrer que le problme de satisabilit pour 3 CNF est NP complet.
Pour montrer la compltude, on rduira le problme SAT au problme 3 CNF. On pourra
dans un premier temps se dbarasser des ngations internes en les faisant descendre aux feuilles en
utilisant pour ce faire un espace de travail logarithmique. Dans un second temps, il faudra crer la
formule 3 CNF partir de la formule obtenue lissue de la premire passe. La seconde passe
consiste engendrer les disjonctions de la clause les unes aprs les autres en montrant quil suft
de n clauses et dun espace logarithmique pour les construire une par une.
Exercice 13.3 Montrer que le problme de satisabilit pour 2 CNF est dans P. Est-il complet
pour P ?
Exercice 13.4 On appelle couverture dun graphe G un sous ensemble A de ses sommets tel que
pour toute arte a, b, a A ou b A.
Montrer que le problme, tant donn un graphe G et un nombre k, de dterminer si G a une
couverture de taille k est NP-complet.
Exercice 13.5 Montrer que le problme du coloriage dun graphe avec un nombre de couleurs
minimal est NP-complet.
Exercice 13.6 On appelle circuit hamiltonien dun graphe Gun circuit passant une fois et une seule
par tout sommet de G.
Montrer que le problme, tant donn un graphe G, de dterminer sil possde un circuit hamil-
tonien est NP-complet.
Exercice 13.7 On appelle circuit eulerien dun graphe G un circuit passant une fois et une seule
par tout arc de G.
Montrer que le problme, tant donn un graphe G, de dterminer sil possde un circuit eulerien
est dans P.
Exercice 13.8 Montrer que le problme, tant donn un entier n, de dterminer sil est premier est
dans NP.
J.-P. Jouannaud Universit Paris Sud
82 BIBLIOGRAPHIE
Bibliographie
[1] Batrice Brard, Michel Bidoit, Franois Laroussinie, Antoine Petit et Philippe Schnoebelen
Vrication de logiciels : Techniques et Outils du model-checking, 1999. Vuibert Informatique.
Philippe Schnoebelen, coordinateur.
[2] John E. Hopcroft et Jeffrey D. Ullman. Introduction to Automata Theory, Languages and
Computation, 1979. Addison Wesley.
J.-P. Jouannaud Universit Paris Sud