Vous êtes sur la page 1sur 56

Universit Badji Mokhtar ANNABA

Facult des sciences


Dpartement dinformatique

Thorie des langages


Support de cours et TD

Ralis par :
Dr. T. BENOUHIBA
(Dernire mise jour : 15 avril 2011)

Table des matires


Table des figures

iv

Liste des tableaux

1 Notions fondamentales en thorie des langages

1.1

1.2

1.3

1.4

1.5

Rappels sur la thorie des ensembles . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1

Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.2

Oprations sur les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . .

Thorie des langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1

Notions sur les mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.2

Longueur dun mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.3

Concatnation des mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.4

Notions sur les langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Grammaire (systme gnrateur de langage) . . . . . . . . . . . . . . . . . . . . .

1.3.1

Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.2

Dfinition formelle des grammaires . . . . . . . . . . . . . . . . . . . . . .

1.3.3

Classification de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . .

Les automates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.1

Configuration dun automate . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.4.2

Classification des automates . . . . . . . . . . . . . . . . . . . . . . . . . .

11

Exercices de TD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2 Les automates tats finis (AEF)


2.1

2.2

14

Gnralits sur les AEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2.1.1

Reprsentation par table . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.1.2

Reprsentation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

Les automates et le dterminisme . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2.1

Notion de dterminisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2.2

Dterminisation dun automate tats fini . . . . . . . . . . . . . . . . . .

17

ii

2.3

2.4

2.5

2.2.3

Dterminisation dun AEF sans -transition . . . . . . . . . . . . . . . . .

18

2.2.4

Dterminisation avec les -transitions . . . . . . . . . . . . . . . . . . . . .

19

Minimisation dun AEF dterministe . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.3.1

Les tats inaccessibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.3.2

Les tats -quivalents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

2.3.3

Minimiser un AEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

Oprations sur les automates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.4.1

Le complment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.4.2

Produit dautomates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.4.3

Le langage miroir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

Exercices de TD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

3 Les langages rguliers


3.1

3.2

3.3

3.4

Les expressions rgulires E.R . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

3.1.1

Utilisation des expressions rgulires . . . . . . . . . . . . . . . . . . . . .

31

3.1.2

Expressions rgulires ambigus . . . . . . . . . . . . . . . . . . . . . . . .

31

3.1.3

Comment lever lambigut dune E.R ? . . . . . . . . . . . . . . . . . . . .

32

Les langages rguliers, les grammaires et les automates tats finis . . . . . . .

32

3.2.1

Passage de lautomate vers lexpression rgulire . . . . . . . . . . . . . .

32

3.2.2

Passage de lexpression rgulire vers lautomate . . . . . . . . . . . . . .

33

3.2.3

Passage de lautomate vers la grammaire . . . . . . . . . . . . . . . . . . .

36

3.2.4

Passage de la grammaire vers lautomate . . . . . . . . . . . . . . . . . . .

36

Proprits des langages rguliers . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

3.3.1

Stabilit par rapport aux oprations sur les langages . . . . . . . . . . . .

37

3.3.2

Lemme de la pompe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

Exercices de TD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

4 Les langages algbriques


4.1
4.2

4.3
4.4

30

42

Les automates piles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

4.1.1

Les automates piles et le dterminisme . . . . . . . . . . . . . . . . . . .

43

Les grammaires hors-contextes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.2.1

Arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.2.2

Notion dambigut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

4.2.3

quivalence des grammaires hors-contextes et les automates piles . . .

47

Simplification des grammaires hors-contextes . . . . . . . . . . . . . . . . . . . .

47

4.3.1

Les grammaires propres . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

Les formes normales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

iii
4.4.1

La forme normale de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . .

48

4.4.2

La forme normale de Greibach . . . . . . . . . . . . . . . . . . . . . . . . .

49

Table des figures


2.1
2.2
2.3

2.9

Lautomate de an bm (n > 0, m > 0) . . . . . . . . . . . . . . . . . . . . . . . . . .


Lautomate des mots contenant le facteur ab . . . . . . . . . . . . . . . . . . . . .
Lautomate reconnaissant les mots contenant le facteur ab (en ayant des transitions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lautomate dterministe qui reconnat les mots ayant le facteur ab . . . . . . . .
Exemple dtats -quivalents . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comment obtenir lautomate du langage complmentaire (dun automate complet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Si lautomate nest pas complet, on ne peut pas obtenir lautomate du langage
inverse. Lautomate obtenu reconnat les mots contenant au plus 1 a. . . . . . . .
Si lautomate nest pas dterministe, on ne peut pas trouver lautomate du langage complmentaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemple dintersection de produit dautomates . . . . . . . . . . . . . . . . . . .

4.1
4.2
4.3

Exemple dun arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . .


Un premier arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deuxime arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4
2.5
2.6
2.7
2.8

iv

15
17
17
18
20
23
23
24
25
46
46
47

Liste des tableaux


2.1

Table de transition de lautomate de la figure 2.2 . . . . . . . . . . . . . . . . . . .

16

Chapitre 1

Notions fondamentales en thorie des


langages
1.1 Rappels sur la thorie des ensembles
1.1.1

Dfinitions

Dfinition 1 : Un ensemble est une collection dobjets sans rptition. Si un objet appartient
un ensemble A, on dit quil est lment de cet ensemble et lon note x A. On distingue un
ensemble particulier not qui ne contient aucun lment.
Un ensemble est not par {...} o les pointills indiquent les lments de lensemble ou
une caractristique de ses lments. Il existe principalement trois moyens pour dfinir un
ensemble :
Dfinition par extension : cette dfinition consiste donner tous les lments dun
ensemble. Exemple : {0, 1, 2, 3, 4}. Cette dfinition nest valable que si lensemble est fini.
Dfinition par comprhension : cette dfinition consiste dfinir les lments dun
ensemble par les proprits qui les dfinissent. En dautres termes, on crira {x|x vrifie
une proprit P(x)}. Exemple : {n N|n 2 = 0} dfinit les nombres entiers pairs. Bien
videmment, cette dfinition permet de reprsenter des ensembles finis ou infinis mais
attention, quand mme, au paradoxe de Russel (lensemble qui contient tous les ensembles
est-il un ensemble ou quoi exactement... ?)
Dfinition par induction : cette dfinition est trs utile car elle permet de montrer facilement des proprits vrifies par les lments. La dfinition par induction consiste
dfinir un ensemble par certains lments triviaux (cest--dire des lments dont on
sait, sans dmonstration, quils appartiennent lensemble) et des rgles dinduction
permettant de retrouver dautres lments de lensemble en fonction de ceux connus
jusquici. La forme gnrale des rgles dinduction est la suivante : x A f(x) A
tel que f est un moyen permettant de construire dautres lments en fonction de largument. Exemple : lensemble des entiers peut tre reprsent comme suit : N = {0; x
N (x + 1) N}.
La dfinition par induction est utile car elle facilite la dmonstration des thormes.
Par exemple, tout le monde connat le principe de dmonstration par rcurrence dune
proprit P(n) (n N) :
1

1.1. Rappels sur la thorie des ensembles

on montre dabord que P(0) est vrifie


on montre que si P(n) est vrifie alors P(n + 1) est vrifie
Ce principe peut tre facilement tendu toute dfinition par induction. En effet, soit A
un ensemble dfini par induction par {triv(A); x A f1 (x) A, ..., x A fn (x)
A, } o triv(A) sont les lments triviaux de A. Soit dmontrer quune proprit P est
vrifie par les lments de A. On procde comme suit :
pour chacun des lments triviaux de A, sassurer que P est vrifie
pour chaque rgle dinduction x A fi (x) A, montrer que P(x) P(fi (x)) est
vrifie.
Ce type de dmonstration est appel dmonstration par induction.

1.1.2

Oprations sur les ensembles

Nous pouvons dfinir plusieurs oprations sur les ensembles. Ces oprations permettent
soit de comparer des ensembles soit de construire dautres ensembles.
Comparaison des ensembles
Les ensembles peuvent tre compars de diffrentes manires selon les lments qui les
contiennent. Nanmoins, il existe une comparaison qui peut tre applique nimporte quels
ensemble, il sagit de linclusion. Formellement, on dit quun ensemble A est inclus ou gal
un autre ensemble B, et lon note A B, si x A, x B. On dira alors que A est un sousensemble de B. Exemple : {a, b, c} {a, b, c, d}. Nous pouvons dfinir une notion encore plus
forte : lgalit. Deux ensembles A et B sont gaux (cest--dire quils contiennent les mmes
lments) si A B et B A.
On peut alors annoncer certains rsultats :
A quelque soit lensemble A
AA=
si A est dfini par {x|P(x) est vrifie} alors les lments de tout sous-ensemble de A
vrifient P.
Construction dautres ensembles
Soient A et B deux sous-ensembles quelconques de . Supposons que A (resp. B) soit
dfini par comprhension avec {x|PA (x)} (resp. {x|PB (x)}). Supposons galement que A (resp.
B) soit dfini par induction avec {triv(A); x A fA (x) A} (resp. {triv(B); x B fB (x)
B}). On dfinit alors les oprations suivantes :
Lunion, note AB, comporte tout lment appartenant A ou B (AB = {x|x Ax
B}). Cette opration peut tre dfinie par comprhension avec {x|PA (x)PB (x)}. Elle peut
mme tre dfinie par induction avec {triv(A) triv(B); x A fA (x) A, x B
fB (x) B}.
Lintersection, note A B, comporte tout lment appartenant A et B (A B = {x|x
A x B}). Elle peut tre dfinie par comprhension avec {x|PA (x) PB (x)}. Malheureusement, on ne peut pas la dfinir par induction mais on note, quand mme, que
triv(A) triv(B) peuvent tre considrs comme des lments triviaux de A B.

1.2. Thorie des langages

La diffrence, note A B, comporte tout lment appartenant A et qui nappartient


pas B (A B = {x|x A x
/ B}). Elle peut tre dfinie par comprhension avec
{x|PA (x) PB (x)}. Malheureusement, on ne peut pas la dfinir par induction.
Le complment, not A = A. On peut le dfinir par comprhension avec {x|PA (x)}.
Malheureusement, on ne peut pas le dfinir par induction.
Le produit cartsien, not AB, est lensemble des paires (a, b) telles que a A et b B.
On peut le dfinir par comprhension avec {(x, y)|PA (x) PB (y)}. Il peut galement tre
dfini par induction avec {triv(A) triv(B)|(x, y) A B (fA (x), fB (y)) A B}.
Lensemble des parties de A, not 2A , est lensemble de tous les sous-ensembles de A.
Exemple 1 : A = {a, b}, B = {a, c}, = {a, b, c} :
A B = {a} ;
A B = {a, b, c} ;
A B = {b} ;
A = {c} ;
A B = {(a, a), (a, b), (b, a), (b, c)} ;
2A = {, {a}, {b}, {a, b}}

Mesures sur les ensembles


Ces oprations ont pour objectif de construire une valeur numrique caractrisant lensemble. La mesure la plus utilise et celle de la cardinalit. Elle est note card(A) et reprsente
le nombre dlments de A. Si lensemble est infini alors sa cardinalit est .
Par ailleurs, on peut facilement montrer que card(A B) = card(A).card(B) et que
card(2A ) = 2card(A) .

1.2 Thorie des langages


La thorie des langages utilise un certain nombre de concepts ainsi quune certaine terminologie. Nous allons dabord dfinir certaines notions capitales qui sont les bases de cette
thorie.

1.2.1

Notions sur les mots

Dfinition 2 : Un symbole est une entit abstraite (par abstraite, on veut dire que le symbole
abstrait une ide). Les lettres et les chiffres sont des exemples de symboles frquemment utiliss , mais des symboles graphiques peuvent galement tre considrs comme des symboles.

Exemple 2 :
les chiffres 0,1,...,9 sont des symboles (ils servent dnombrer) ;
les lettres arabes, latines, cyrilliques, grecques, ... sont des symboles qui dnotent des
voix ;

1.2. Thorie des langages


les pictogrammes chinois sont des symboles qui dnotent des concepts, des ides, etc.

Dfinition 3 : Un alphabet est un ensemble de symboles. Il est galement appel le vocabulaire.

Dfinition 4 : Un mot (ou bien une chane) dfini sur un alphabet A est une suite finie de
symboles juxtaposs de A.
Exemple 3 :
Le mot 1011 est dfini sur lalphabet {0, 1}
Le mot 1.23 est dfini sur lalphabet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .} ;

1.2.2

Longueur dun mot

Si w est un mot, alors sa longueur est dfinie comme tant le nombre de symboles contenus
dans w, elle est not par |w|. Par exemple, |abc| = 3, |aabba| = 5. En particulier, on note le
mot dont la longueur est nulle par : || = 0.
On dfinit galement la cardinalit dun mot w par rapport un symbole a A : |w|a
comme tant le nombre doccurrence de a dans w. Par exemple, |abc|a = 1, |aabba|b = 2.

1.2.3

Concatnation des mots

Soient w1 et w2 deux mots dfinis sur lalphabet A. La concatnation de w1 et w2 est un


mot w dfini sur le mme alphabet. w est obtenu en crivant w1 suivi de w2 , en dautres
termes, on colle le mot w2 la fin du mot w1 :
w1 = a1 ...an , w2 = b1 b2 ...bm
w = a1 ...an b1 b2 ...bm
La concatnation est not par le point, mais il peut tre omis sil ny a pas de dambigut.
On crira alors : w = w1 .w2 = w1 w2 .
Proprit de la concatnation
Soient w, w1 et w2 trois mots dfinis sur lalphabet A :
|w1 .w2 | = |w1 | + |w2 | ;
a A : |w1 .w2 |a = |w1 |a + |w2 |a ;
(w1 .w2 ).w3 = w1 .(w2 .w3 ) (la concatnation est associative) ;
w. = .w = w ( est un lment neutre pour la concatnation) ;
Lexposant
Lopration w.w est note par w2 . En gnralisant, on note wn = |w...w
{z } . En particulier,
lexposant 0 fait tomber sur : w0 = (le mot w est rpt 0 fois).

n fois

1.2. Thorie des langages


Le mot miroir

Soit w = a1 a2 ...an un mot sur A. On appelle mot miroir de w et on le note par wR le mot
obtenu en crivant w lenvers, cest--dire que wR = an ...a2 a1 . Il est donc facile de voir que
(wR )R = w.
Certains mots, appels palindromes, sont gaux leur miroir. En dautres termes, on lit la
mme chose dans les deux directions. Par ailleurs, on peut facilement vrifier que : (u.v)R =
vR .uR .
Prfixe et suffixe
Soit w un mot dfini sur un alphabet A. Un mot x (resp. y) form sur A est un prfixe
(resp. suffixe) de w sil existe un mot u form sur A (resp. v form sur A) tel que w = xu (resp.
w = vy). Si w = a1 a2 ...an alors tous les mots de lensemble {, a1 , a1 a2 , a1 a2 a3 , ..., a1 a2 ...an }
sont des prfixes de w. De mme, tous les mots de lensemble {, an , an1 an , an2 an1 an , ...,
a1 a2 ...an } sont des suffixes de w.
Mots conjugus
Deux mots x et y sont dits conjugus sil existe deux mots u et v tels que : x = uv et y = vu.

1.2.4

Notions sur les langage

Dfinition 5 : Un langage est un ensemble (fini ou infini) de mots dfinis sur un alphabet
donn. videmment, un langage peut tre dfini par extension, par comprhension ou par
induction. Cette dernire manire porte une importance particulire pour les langages.
Exemple 4 :
Langage des nombre binaires dfinies sur lalphabet {0, 1} (infini) ;
Langage des mots de longueur 2 dfini sur lalphabet {a, b}={aa, ab, ba, bb} ;
Langage Pascal (quel est son alphabet ?) ;
Langue franaise (quel est son alphabet ?).

Oprations sur les langages


Les langages sont des ensembles. On peut alors leur appliquer nimporte quelle opration
ensembliste. Cependant, vu la particularit des lments constituant les langages (des mots),
certaines de leurs oprations ne peuvent tre appliques qu eux.
Soient L, L1 et L2 trois langages dfinis sur lalphabet X, on dfinit les oprations suivantes :
Lunion : note par + ou | plutt que . L1 + L2 = {w|w L1 w L2 } ;
Lintersection : L1 L2 = {w|w L1 w L2 } ;
Le complment : L = {tous les mots w sur X|w
/ L} ;
La concatnation (opration non ensembliste) : L1 .L2 = {w|u L1 , v L2 : w = uv} ;
Exposant (opration non ensembliste) : Ln = L.L...L
| {z } = {w|u1 , u2 , ...un L : w =
u1 u2 ...un } ;

fois

1.3. Grammaire (systme gnrateur de langage)

S
Fermeture transitive de Kleene (opration non ensembliste) : note L = i>0 Li . En
particulier, si L = X on obtient X cest--dire lensemble de tous les mots possibles
sur lalphabet X. On peut ainsi dfinir un langage comme tant un sous-ensemble quelconque de X ;
S
Fermeture non transitive (opration non ensembliste) : L+ = i>0 Li ;
Le langage miroir (opration non ensembliste) : LR = {w|u L : w = uR }.
Proprits des oprations sur les langages
Soit L, L1 , L2 , L3 quatre langage dfinis sur lalphabet A :
L = L+ + {} ;
L1 .(L2 .L3 ) = (L1 .L2 ).L3 ;
L1 .(L2 + L3 ) = (L1 .L2 ) + (L1 .L3 ) ;
L.L 6= L ;
L1 .(L2 L3 ) 6= (L1 L2 ).(L1 L3 ) ;
L1 .L2 6= L2 .L1 .
(L ) = L ;
L .L = L ;
L1 .(L2 .L1 ) = (L1 .L2 ) .L1 ;
(L1 + L2 ) = (L1 L2 ) ;
L1 + L2 6= (L1 + L2 )

1.3 Grammaire (systme gnrateur de langage)


Nous avons dit plus haut que la dfinition des langages par induction revte une importance particulire. En effet, une telle dfinition permet de construire un langage infini avec
un nombre restreint de concepts. De plus, elle facilite normment les processus de dmonstration des thormes grce au principe de dmonstration par induction (vu dans la section
1).
Cependant, lavantage le plus important des dfinitions inductives est quelles permettent
de comprendre les structures dun langage ce qui facilite son apprhension. En effet, sans
le contexte des langages, la rgles dinduction possde un autre nom : la grammaire. Ainsi,
une grammaire est un moyen permettant de dcrire la construction des mots dun langage.
Elle a plusieurs avantages : elle permet de raisonner sur le langage, elle permet de construire
des algorithmes efficaces pour le traitement des langages et enfin, et cest ce qui est le plus
important dans le vie courante, elle facilite lapprentissage des langages.
Afin de mieux comprendre ce quest une grammaire et estimer rellement sa valeur, nous
allons prendre un exemple.

1.3.1

Exemple introductif

Pour analyser une classe de phrases simples en franais, on peut supposer quune phrase
est construite de la manire suivante :
PHRASE ARTICLE SUJET VERBE ARTICLE COMPLEMENT
SUJET "garon" ou "fille"

1.3. Grammaire (systme gnrateur de langage)

VERBE "voit" ou "mange" ou "porte"


COMPLEMENT ARTICLE NOM ADJECTIF
ARTICLE "un" ou "le"
NOM "livre" ou "plat" ou "wagon"
ADJECTIF "bleu" ou "rouge" ou "vert"
En faisant des substitutions (on remplace les parties gauches par les parties droites) on
arrive gnrer les deux phrases suivantes.
Le garon voit un livre rouge
Une fille mange le plat vert
De mme, partir des phrases, on peut retrouver la catgorie de chaque mot en utilisant ces
rgles. On dit ici que PHRASE, ARTICLE, SUJET sont des concepts du langage ou encore des
symboles non-terminaux (car ils ne figurent pas dans la phrase aux quelles on sintresse).
Leur rle consiste construire les phrases du langage. Les symboles GARCON, FILLE, VOIT,
MANGE, etc sont des terminaux puisquils figurent dans le langage final (les phrases).
Le processus de gnration de la phrase partir de ces rgles est appel drivation. Voici,
un exemple :
PHRASE ARTICLE SUJET VERBE ARTICLE COMPLEMENT "le" SUJET VERBE ARTICLE COMPLEMENT "le" "garon" SUJET VERBE ARTICLE COMPLEMENT "le" "garon" "voit" ARTICLE COMPLEMENT "le" "garon" "voit" "le" COMPLEMENT "le" "garon" "voit" "le" "livre"

1.3.2

Dfinition formelle des grammaires

Dfinition 6 : On appelle grammaire le quadruplet (V, N, X, R)


V est un ensemble fini de symboles dits terminaux, on lappelle galement vocabulaire
terminal ;
N est un ensemble fini (disjoint de V) de symboles dits non-terminaux ou encore concepts ;
S un non-terminal particulier appel axiome (point de dpart de la drivation) ;
R est un ensemble de rgles de productions de la forme g d tel que g (V + N)+ et
d (V + N) . La notation g d est appele une drivation et signifie que g peut tre
remplac par d.
Par convention, on utilisera les lettres majuscules pour les non-terminaux, et les lettres
minuscules pour reprsenter les terminaux. Les rgles de la forme sont interdites.
Pourquoi ?

Soit une suite de drivations : w1 w2 w3 ... wn alors on crira : w1


wn . On
dit alors quil y a une chane de drivation qui mne de w1 vers wn .
Exemple 5 : Soit la grammaire G = ({a}, {S}, S, {S aS|}). On peut construire la chane de
drivation suivante : S aS aaS aaaS...
Dfinition 7 : Soit une grammaire G = (V, N, S, R). On dit que le mot u appartenant V est
driv (ou bien gnr) partir de G sil existe une suite de drivation qui, partant de laxiome

1.3. Grammaire (systme gnrateur de langage)

S, permet dobtenir u : S
u (on appelle S
u). Le langage de tous les mots gnrs par
la grammaire G est not L(G). Notez quun expression, drive partir de laxiome, nest
considre appartenant L(G) que si elle ne comporte aucun non-terminal.
Exemple 6 : Soit la grammaire G = ({a, b}, {S, T }, S, {S aS|aT , T bT |b}). Elle gnre les
mots abb et aab parce que S aT abT abb et S aS aaT aab. On peut
facilement voir alors que le langage gnr par cette grammaire est : tous les mots sur {a, b}
de la forme am bn avec m, n > 0.
Dfinition 8 : tant donne une grammaire G = (V, N, S, R), les arbres de syntaxe de G sont
des arbres o les noeuds internes sont tiquets par des symboles de N, et les feuilles tiquets
par des symboles de V, tels que, si le nud p apparat dans larbre et si la rgle p a1 ...an
(ai terminal ou non terminal) est utilise dans la drivation, alors le nud p possde n fils
correspondant aux symboles ai .
Si larbre syntaxique a comme racine S, alors il est dit arbre de drivation du mot u tel que
u est le mot obtenu en prenant les feuilles de larbre dans le sens gauchedroite et bashaut.
Exemple 7 : Soit la grammaire G = ({a, b}, {S, T }, S, {S aS|aT , T bT |b}). Elle gnre le
mot aab selon la chane de drivation S aS aaT aab. Ce qui donne donc larbre
syntaxique suivant :
S
a

S
a

T
b

1.3.3

Classification de Chomsky

La classification de Chomsky est un moyen permettant de matriser la complexit des


langages ainsi que de celle des grammaires qui les gnrent. En effet, certains langage sont
plutt simples et peuvent tre dcrits par des grammaires facilement comprhensibles (comme
lexemple prcdent). Cependant, il existe des langages dune telle complexit que les grammaires qui les gnrent sont trop difficile apprhender (par exemple, {an |n est premier}).
Il faut savoir que plus une grammaire est complexe dfinir, plus les algorithmes qui la
manipulent (si jamais ils existent) sont difficiles apprendre et mettre en uvre. On arrive
alors une conclusion bien simple et pleine de bon sens : "utiliser des algorithmes simples
pour des langages simples gnrs par des grammaires simples et rserver les algorithmes
difficiles aux langages et grammaires complexes".
Une question cl apparat alors : comment mesurer la complexit dune grammaire ou dun
langage ? On peut, dores et dj, carter la cardinalit dun langage puisquelle ne permet
pas de distinguer langage simple dun langage complexe. Noam Chomsky a eu le gnie de

1.4. Les automates

remarquer que la complexit dune grammaire (et celle du langage aussi) dpend de la forme
des rgles de production de celle-ci. Chomsky a ainsi propos quatre classes (hirarchiques)
de grammaires (et de langages) de sorte quune grammaire de type i gnre un langage de
type j tel que j > i.
Soit G = (V, N, S, R) une grammaire, les classes de grammaires de Chomsky sont :
Type 3 ou grammaire rgulire ( droite 1 ) : toutes les rgles de production sont de la
forme g d o g N et d = aB tel que a appartient V et B appartient N {} ;
Type 2 ou grammaire hors-contexte : toutes les rgles de production sont de la forme
g d o g N et d (V + N) ;
Type 1 ou grammaire contextuelle : toutes les rgles sont de la forme g d tel que
g (N + V)+ , d (V + N) et |g| 6 |d|. De plus, si apparat droite alors la partie
gauche doit seulement contenir S (laxiome). On peut aussi trouver la dfinition suivante
des grammaires de type 1 : toutes les rgles sont de la forme B tel que
, (V + N) , B X et (V + N) ;
Type 0 : aucune restriction. Toutes les rgles sont de la forme : d g, g (V + N)+ ,
d (V + N)
Il existe une relation dinclusion entre les types de grammaires selon la figure suivante :

Type3
Type2
Type1
Type0

Le type retenu pour une grammaire est le plus petit qui satisfait les conditions. Pour
trouver la classe dun langage on procde cependant comme suit :
Chercher une grammaire de type 3 qui le gnre, si elle existe, le langage est de type 3
(ou rgulier)
Sinon, chercher une grammaire de type 2 qui le gnre, si elle existe, le langage est de
type 2 (ou algbrique)
Sinon, chercher une grammaire de type 1 qui le gnre, si elle existe, le langage est de
type 1 (ou contextuel)
Sinon, le langage est de type 0.

1.4 Les automates


Les grammaires reprsentent un moyen qui permet de dcrire un langage dune manire
inductive. Elles montrent comment les mots du langage sont construits.
Considrons prsent un langage L, on se propose de rpondre la question w L. On
peut rpondre cette question de plusieurs faons. Dabord, on peut vrifier lexistence de w
1. Il existe galement une forme rgulire gauche

10

1.4. Les automates

Bande en entre
Tte de L/E
Organe
de
commande

Mmoire
auxiliaire

dans la liste des mots de L (impossible raliser si le langage est infini). Si L est dfini par
comprhension, on peut alors vrifier si w respecte la proprit du langage. Si L est dfini par
une grammaire, on vrifie lexistence dune chane de drivation pour w, le cas chant on
conclut que w L.
Il existe en ralit un autre moyen permettant de rpondre cette question : les automates.
Un automate est une machine qui, aprs avoir excut un certain nombre doprations sur le
mot, peut rpondre cette question par oui ou non.
Dfinition 9 : Un automate est une machine abstraite qui permet de lire un mot et de
rpondre la question : "un mot w appartient-il un langage L ?" par oui ou non. Aucune garantie nest cependant apporte concernant le temps de reconnaissance ou mme la possibilit
de le faire.
Un automate est compos de :
Une bande en entre finie ou infinie sur laquelle sera inscrit le mot lire ;
Un organe de commande qui permet de grer un ensemble fini de pas dexcution ;
Eventuellement, une mmoire auxiliaire de stockage.
Formellement, un automate contient au minimum :
Un alphabet pour les mots en en entre not X ;
Un ensemble non vide dtats not Q ;
Un tat initial not q0 Q ;
Un ensemble non vide dtats finaux qf Q ;
Une fonction de transition (permettant de changer dtat) note .

1.4.1

Configuration dun automate

Le fonctionnement dun automate sur un mot se fait travers un ensemble de configurations.


Dfinition 10 : On appelle configuration dun automate en fonctionnement les valeurs de
ses diffrents composants, savoir la position de la tte L/E, ltat de lautomate et ventuellement le contenu de la mmoire auxiliaire (lorsquelle existe). Il existe deux configurations
spciales appeles configuration initiale et configuration finale.

11

1.4. Les automates

Dfinition 11 : La configuration initiale est celle qui correspond ltat initial q0 et o la tte
de L/E est positionne sur le premier symbole du mot lire.
Dfinition 12 : Une configuration finale est celle qui correspond un des tats finaux qf et
o le mot a t entirement lu.
On dit quun mot est reconnu par un automate si, partir dune configuration initiale, on
arrive une configuration finale travers une succession de configurations intermdiaires .
On dit aussi quun langage est reconnu par un automate lorsque tous les mots de ce langage
sont reconnus par lautomate.

1.4.2

Classification des automates

Comme les grammaires, les automates peuvent tre classs en 4 classes selon la hirarchie de Chomsky. Il ne faut surtout pas oublier que la classification de Chomsky est une
classification de complexit. Par consquent, les automates reconnaissant les langages simples
(par exemple ceux de la classe 3) sont plus simples que les automates reconnaissant les langages complexes. La classification de Chomsky pour les automates consiste dfinir, pour
chaque classe de langage, lautomate minimal permettant de rpondre la question "un mot
w appartient-il un langage ?"
Nous avons quatre classes dautomates :
Type 3 ou automate tats fini (AEF) : il reconnat les langages de type 3. Sa structure
est la suivante :
bande en entre finie ;
sens de lecture de gauche droite ;
Pas dcriture sur la bande et pas de mmoire auxiliaire.
Type 2 ou automate pile : il reconnat les langages de type 2. Sa structure est similaire
lAEF mais dispose en plus dune mmoire organise sous forme dune pile infinie ;
Type 1 ou automate bornes linaires (ABL) : il reconnat les langages de type 1. Sa
structure est la suivante :
Bande en entre finie accessible en lecture/criture ;
Lecture dans les deux sens ;
Pas de mmoire auxiliaire.
Type 0 ou machine de Turing : il reconnat les langages de type 0. Sa structure est la
mme que lABL mais la bande en entre est infinie.
Le tableau suivant rsume les diffrentes classes de grammaires, les langages gnrs et
les types dautomates qui les reconnaissent :
Grammaire
Type 0
Type 1 ou contextuelle
Type 2 ou hors-contexte
Type 3 ou rgulire

Langage
Rcursivement numrable
Contextuel
Algbrique
Rgulier ou rationnel

Automate
Machine de Turing
Machine de Turing borne linaire
Automate pile
Automate tats fini

1.5. Exercices de TD

12

1.5 Exercices de TD
Exercice 1 : Dterminez lalphabet pour chacun des langages suivants :
Les nombres hexadcimaux ;
Les nombres romains ;
Les nombres rels en Pascal ;
Les identificateurs en Pascal ;
Le langage Pascal ;
Exercice 2 : Trouvez les langages correspondants aux dfinitions suivantes :
Tous les mots sur {a, b, c} de longueur 2 contenant un a ou un b mais pas les deux ;
Tous les mots sur {a, b} contenant au maximum deux a ou bien un b ;
Tous les mots sur {a, b} qui contiennent plus de a que de b ;
Le langage L dfini comme suit : {; u L aaub L}
Exercice 3 : On note par Conj(w) lensemble des conjugus de w. Trouvez Conj(w) pour
w = , w = aacb, w = an bn .
Exercice 4 : On note par Pref(L) lensemble suivant : {u|w L : u est prfixe de w}. Calculez
Pref(L) dans chacun des cas suivants : L = {ab, ac, }, L = {an bm |n, m > 0}, L = {an bm |n >
m}.
On note par Suf(L) lensemble suivant : {u|w L : u est suffixe de w}. Calculez Suf(L)
pour les langages prcdents.
Exercice 5 : Dfinissez la fermeture de Kleene (L ) pour chacun des langages suivants :
L = {} ;
L = {a, aa} ;
L = {b, ab} ;
L = {a, bb} ;
Exercice 6 : Soit X un alphabet, trouvez les mots w X qui vrifient :
w2 = w3 ;
v X : w3 = v2 ;
Exercice 7 : Prcisez le type de chacune des grammaires suivantes ainsi que les types des
langages qui en drivent :
G = ({a, b}, {S, T }, S, {S aabS|aT , T bS|}) ;
G = ({a, b, c}, {S, T , U}, S, {S bST a|aT b, T abS|cU, U S|}) ;
G = ({x, +, }, {S}, S, {S S + S|S S|x}) ;
G = ({0, 1, 2}, {S, T , C, Z, U}, S, {S T Z, T 0U1, T 01, U 0U1C|01C, C1 1C, CZ
Z2, 1Z 12})
G = ({0, 1, 2}, {S, C, Z, T }, S, {S T Z, T 0T 1C|, C1 1C, CZ Z2, 1Z 1}) ;
G = ({a, b, c}, {S, T }, S, {S T a|Sa, T T b|Sb|})

1.5. Exercices de TD

13

Exercice 8 : Donnez, sans dmonstration, les langages gnrs par les grammaires suivantes.
Dites, chaque fois, de quel type sagit-il ? :
G = ({a}, {S}, S, {S abS|b}) ;
G = ({a}, {S}, S, {S aSa|}) ;
G = ({a}, {S}, S, {S aSb|}) ;
G = ({a, b}, {S}, S, {S aSa|bSb|}) ;
Exercice 9 : Donnez les grammaires qui gnrent les langages suivants :
Les nombres binaires ;
Les mots sur {a, b} qui contiennent le facteur aa
Exercice 10 : Soient G et G deux grammaires qui gnrent respectivement les langages L et
L . Donnez une construction qui permet de trouver la grammaire de :
L.L ;
L + L ;
L ;

Chapitre 2

Les automates tats finis (AEF)


Les AEF sont les plus simples des machines de reconnaissance de langages car ils ne comportent pas de mmoire. Par consquent, les langages reconnus par ce type dautomates sont
les plus simples des quatre classes de Chomsky, savoir les langages rguliers (type 3). Par
ailleurs, les automates tats finis peuvent tre utiliss pour modliser plusieurs problmes
dont la solution nest pas trs vidente. La srie de TD propose quelques exercices dans ce
sens.

2.1 Gnralits sur les AEF


Dfinition 13 : Un automate tats finis est une machine abstraite dfinie par le quintuplet
(X, Q, q0 , F, ) tel que :
X est lensemble des symboles formant les mots en entre (lalphabet du mot reconnatre) ;
Q est lensemble des tats possibles ;
q0 est ltat initial ;
F est lensemble des tats finaux (F 6= , F Q). F reprsente lensemble des tats dacceptation ;
est une fonction de transition qui permet de passer dun tat un autre selon lentre
en cours :
: Q (X {}) 7 2Q
(qi , a) = {qj1 , ..., qjk } ou ( signifie que la configuration nest pas prise en charge)
Un mot est accept par un AEF si, aprs avoir lu tout le mot, lautomate se trouve dans un
tat final (qf F). En dautres termes, un mot est rejet par un AEF dans deux cas :
Lautomate est dans ltat qi , lentre courante tant a et la transition (qi , a) nexiste
pas (on dit que lautomate est bloqu) :
Lautomate arrive lire tout le mot mais ltat de sortie nest pas un tat final.
Un AEF A est donc un sparateur (ou classifieur) des mots de X en deux parties : lensemble des mots reconnus par lautomate (notons le par L(A)) et le reste des mots (le complmentaire de L ou encore X L(A)).
Un AEF peut tre reprsent de deux manires : soit par une table dfinissant la fonction
de transition soit par graphe orient.
14

15

2.1. Gnralits sur les AEF

2.1.1

Reprsentation par table

La table possde autant de lignes quil y dtats dans lautomate de telle sorte que chaque
ligne correspond un tat. Les colonnes correspondent aux diffrents symboles de lalphabet.
Si lautomate est dans ltat i et que le symbole a est le prochain lire, alors lentre (i, a)
de la table donne ltat auquel lautomate passera aprs avoir lu a. Notons la donne de la
table nest suffisante pour dfinir tout lautomate puisquil faut prciser ltat initial et les tats
finaux.
Exemple 8 : Lautomate qui reconnat les mots de la forme an bm (n > 0, m > 0) est le
suivant : ({a, b}, {0, 1}, 0, {1}, ) tel que est donne par la table :
tat
0
1

a
0
-

b
1
1

Essayons prsent danalyser certains mots par cet automate.


le mot ab : (0, a) (0, b) 1, ab est accept parce quil a t entirement lu et ltat de
sortie est tat final ;
le mot ba : (0, b) (1, b), ba est rejet car il na pas t entirement lu.
le mot a : (0, a) 1, a est rejet car ltat de sortie nest pas final bien que le mot soit
entirement lu.

2.1.2

Reprsentation graphique

La reprsentation graphique consiste reprsenter lautomate par un graphe orient.


Chaque tat de lautomate est schmatis par un rond (ou sommet). Si la transition (qi , a) =
qj est dfinie, alors on raccorde le sommet qi au sommet qj par un arc dcor par le symbole
a. Ltat initial est dsign par une flche entrante au sommet correspondant tandis que les
tats finaux sont marqus un double rond. Le schma suivant reprend lautomate prcdent :
b

a
0

Figure 2.1 Lautomate de an bm (n > 0, m > 0)

Lorsquil y a plusieurs symboles a1 , ...ak tels que (qi , al ) = qj (l = 1..k) alors on se permet
de dcorer larc (qi , qj ) par lensemble a1 , ..., ak .

16

2.2. Les automates et le dterminisme


tat
0
1
2

a
0,1
2

b
0
2
2

Table 2.1 Table de transition de lautomate de la figure 2.2

2.2 Les automates et le dterminisme


2.2.1

Notion de dterminisme

En gnral, nous avons un certain nombre dides de ce quest un programme informatique. Parmi ces ides, on conoit gnralement que lon connat, tout moment et avec prcision, les tapes futures de lexcution du programme. Cependant, cette vision est trs nave et
ne prend pas en considration les environnements complexes dans lesquels peut sexcuter le
programme. Dans la plupart des cas, d la complexit des environnements, leur caractre
alatoire et labsence dune vision globale, la connaissance des tapes futures ne peut tre
quapproximative. Le problme est encore plus accru si lon utilise des algorithmes caractre alatoire. Dans ces situation, il arrive que lexcution puisse avoir plusieurs volution et
que lon ne puisse pas savoir a priori laquelle choisir. On dit alors que le programme est non
dterministe (dans le cas contraire, on parle de programme dterministe).
Un AEF, tant une forme spciale dun programme informatique, peut tre dterministe
ou non. Par dterministe, on entend que lon peut connnatre les tats par lesquels passera
lautomate avec une seule lecture du mot. Ceci revient dire que si lautomate est dans ltat
qi et que lentre courante est a alors il existe au plus un tat qj tel que (qi , a) = qj .
Dans le cas inverse, lautomate doit choisir une action (un des tats possibles) et la tester
terme, si la reconnaissance nest pas possible lautomate doit tester les autres ventualits. On
saperoit alors que les automates non dterministes sont moins efficaces que les automates
dterministes.
Cependant, en pratique, il est souvent plus facile de concevoir des automates non dterministes. Heureusement, cela ne nuit en rien au fonctionnement des automates. En effet, on verra
plus tard un thorme nonant que tout automate non dterministe peut tre transform en
un automate dterministe.
Le non dterminisme peut galement provenir des transitions (arcs). En effet, rien ninterdit dans la dfinition des AEF davoir des -transitions, cest--dire des transitions dcores
avec . Lexistence dune -transition entre les tats qi et qj signifie que lon na pas besoin
de lire un symbole pour passer de qi vers qj (attention ! linverse nest pas possible). Voyons
maintenant une dfinition formelle de la notion du dterminisme pour les AEF.
Dfinition 14 : Un AEF (X, Q, q0 , F, ) est dit dterministe si les deux conditions sont vrifies :
qi Q, a X, il existe au plus un tat qj tel que (qi , a) = qj ;
Lautomate ne comporte pas de -transitions.
Exemple 9 : Soit le langage des mots dfinis sur {a, b} possdant le facteur ab. La construction
dun AEF non dterministe est facile. La table 2.1 donne la fonction de transition (ltat initial
est ltat 0 et ltat 2 est final). La figure 2.2 reprend le mme automate :

17

2.2. Les automates et le dterminisme

a,b

a,b
a

Figure 2.2 Lautomate des mots contenant le facteur ab

Exemple 10 : Lautomate donn par la figure 2.3 reconnat le mme langage que le prcdent
mais en utilisant des -transitions.

8
b

Figure 2.3 Lautomate reconnaissant les mots contenant le facteur ab (en ayant des -transitions)

2.2.2

Dterminisation dun automate tats fini

Dans la section prcdente, nous avons prsent la notion de dterminisme pour un automate 2 . Il est en gnral plus facile de concevoir des automates non dterministes surtout
lorsque lon utilise les expressions rgulires pour dnoter les langages rguliers. Nous allons
maintenant noncer un thorme qui nous sera dune grande utilit lorsquon travaille avec
des AEF non dterministes (la dmonstration de ce thorme sort du cadre de ce cours).
Thorme 1 : (appel encore thorme de Rabin et Scott) Tout langage accept par un AEF
non dterministe est galement accept par un AEF dterministe.
Une consquence trs importante de ce thorme peut dj tre cite (en ralit, elle dcoule plutt de la dmonstration de ce thorme) :
Proposition 1 : Tout AEF non dterministe peut tre transform en un AEF dterministe.
Ce rsultat tablit que si lon veut construire lautomate tats fini dterministe qui reconnat les mots dun certain langage, alors on peut commencer par trouver un AEF non
dterministe (ce qui est plus facile). Il suffit de le transformer, aprs, pour obtenir un automate tats finis dterministe.
2. Notons que cette notion nest pas limites aux seuls AEF

18

2.2. Les automates et le dterminisme

2.2.3

Dterminisation dun AEF sans -transition

En ralit, lalgorithme de dterminisation dun AEF est gnral, cest--dire quil fonctionne dans tous les cas (quil y ait des -transitions ou non). Cependant, il est plus facile de
considrer cet algorithme sans les -transitions. Dans cette section, on suppose que lon a un
AEF A ne comportant aucune -transition.
Algorithme : Dterminiser un AEF sans les -transitions
Principe : considrer des ensembles dtats plutt que des tats (dans lalgorithme suivant,
chaque ensemble dtats reprsente un tat du futur automate).
1- Partir de ltat initial E(0) = {q0 } (cest ltat initial du nouvel automate) ;
2- Construire E(1) lensemble des tats obtenus partir de E(0) par la transition a :
S
E(1) = q E(0) (q , a)
3- Recommencer ltape 2 pour toutes les transitions possibles et pour chaque
nouvel ensemble E(i) ;
S
E(i) = q E(i1) (q , a)
4- Tous les ensembles contenant au moins un tat final du premier automate
deviennent finaux ;
5- Renumroter les tats en tant qutats simples.
Pour illustrer cet algorithme, nous allons lappliquer lautomate donn par la figure 2.2.
La table suivante illustre les tapes dapplication de lalgorithme (les tats en gras sont des
tats finaux) :
tat
0
0,1
0,2
0,1,2

a
0,1
0,1
0,1,2
0,1,2

b
0
0,2
0,2
0.2

tat
0
1
2
3

a
1
1
3
3

b
0
2
2
2

La figure 2.4 donne lautomate obtenu. Cet automate nest pas vident trouver mais grce
lalgorithme de dterminisation, on peut le construire automatiquement.
a

b
Figure 2.4 Lautomate dterministe qui reconnat les mots ayant le facteur ab

19

2.2. Les automates et le dterminisme

2.2.4

Dterminisation avec les -transitions

La dterminisation dun AEF contenant au moins une -transition est un peu plus compliqu puisquelle fait appel la notion de l-fermeture dun ensemble dtats. Nous commenons donc par donner sa dfinition.
Dfinition 15 : Soit E un ensemble dtats. On appelle -fermeture de E lensemble des tats
incluant, en plus de ceux de E, tous les tats accessibles depuis les tats de E par un chemin
tiquet par le mot .
La construction des -transitions se fait donc dune manire rcursive. Ltudiant peut, en
guise dexercice, crire lalgorithme permettant de construire un tel ensemble.
Exemple 11 : Considrons lautomate donn par la figure 2.3, calculons un ensemble dfermetures :
-fermeture({0}) = {0, 1, 2, 3}
-fermeture({1, 2}) = {1, 2}
-fermeture({3}) = {0, 1, 2, 3}
Algorithme : Dterminisation dun AEF comportant des -transitions
Le principe de cet algorithme repose sur lutilisation des -fermetures qui reprsenteront
les tats du nouvel automate.
1- Partir de l-fermeture de ltat initial (elle reprsente le nouvel tat initial) ;
2- Rajouter dans la table de transition toutes les -fermetures des nouveaux
tats produits avec leurs transitions ;
3- Recommencer ltape 2 jusqu ce quil ny ait plus de nouvel tat ;
4- Tous les -fermetures contenant au moins un tat final du premier automate
deviennent finaux ;
5- Renumroter les tats en tant qutats simples.

Exemple 12 : Appliquons maintenant ce dernier algorithme lautomate de la figure 2.3.


tat
0,1,2,3
0,1,2,3,4
0,1,2,3,5,6,7,8
0,1,2,3,4,5,6,7,8

a
0,1,2,3,4
0,1,2,3,4
0,1,2,3,4,5,6,7,8
0,1,2,3,4,5,6,7,8

b
0,1,2,3
0,1,2,3,5,6,7,8
0,1,2,3,5,6,7,8
0,1,2,3,5,6,7,8

ce qui produit (surprise) lautomate suivant (cest le mme que celui donn par la figure 2.4) :

tat
0
1
2
3

a
1
1
3
3

b
0
2
2
2

20

2.3. Minimisation dun AEF dterministe

2.3 Minimisation dun AEF dterministe


Dune manire gnral, moins un automate contient dtats, moins il prendra du temps
reconnatre un mot (par exemple, en dterminisant un AEF, on tombe le plus souvent sur
un automate comportant plus dtats quil nen faut). De plus, il prendra moins despace en
mmoire sil est question de le sauvegarder. Il est donc logique de vouloir minimiser ce temps
en essayant de rduire le nombre dtats. Si on peut trouver une multitude dautomates pour
reconnatre le mme langage, on ne peut trouver nanmoins quun seul automate minimal
reconnaissant le mme langage. La minimisation seffectue en liminant les tats dits inaccessibles et en confondant (ou fusionnant) les tats reconnaissant le mme langage.

2.3.1

Les tats inaccessibles

Dfinition 16 : Un tat est dit inaccessible sil nexiste aucun chemin permettant de latteindre
partir de ltat initial.
Daprs la dfinition, les tats inaccessibles sont improductifs, cest--dire quils ne participeront jamais la reconnaissance dun mot. Ainsi, la premire tape de minimisation dun
AEF consiste liminer ces tats. Ltudiant peut, en guise dexercice, crire lalgorithme qui
permet de trouver les tats inaccessibles dun AEF.

2.3.2

Les tats -quivalents

Dfinition 17 : Deux tats qi et qj sont dits -quivalents sils permettent datteindre les
tats finaux en utilisant les mmes mots. On crit alors : qi qj .
Par le mme mot, on entend que lon lit la mme squence de symboles pour atteindre
un tat final partir de qi et qj . Par consquent, ces tats reconnaissent le mme langage.
La figure 2.5 montre un exemple dtats -quivalents car ltat qi atteint les tats finaux via
le mot a, de mme pour ltat qj . Lalgorithme de minimisation consiste donc fusionner
simplement ces tats pour nen faire quun.

qi

qj

qf

q'f

Figure 2.5 Exemple dtats -quivalents

Remarque 1 : La relation -quivalence est une relation dquivalence. De plus, x X


(X tant lalphabet), (qi , x) et (qj , x) sont galement -quivalents (puisque qi et qj reconnaissent le mme langage). La relation -quivalence est donc dite une relation de congruence.

21

2.3. Minimisation dun AEF dterministe

Remarque 2 : Le nombre de classes dquivalence de la relation -quivalence est gal au


nombre des tats de lautomate minimal car les tat de chaque classe dquivalence reconnaissent le mme langage (ils seront fusionns).

2.3.3

Minimiser un AEF

La mthode de rduction dun AEF est la suivante :


1. Nettoyer lautomate en liminant les tats inaccessibles ;
2. Regrouper les tats congruents (appartenant la mme classe dquivalence).
Algorithme : Regroupement des tats congruents
Dans cet algorithme, chaque classe de congruence reprsentera un tat dans lautomate
minimal. Il faut cependant noter que cet algorithme ne peut sappliquer que si lautomate
est dterministe.
1- Faire deux classes : A contenant les tats finaux et B contenant les tats non finaux ;
2- Sil existe un symbole a et deux tats qi et qj dune mme classe tel que (qi , a)
et (qj , a) nappartiennent pas la mme classe, alors crer une nouvelle classe et
sparer qi et qj . On laisse dans la mme classe tous les tats qui donnent un tat
darrive dans la mme classe ;
3- Recommencer ltape 2 jusqu ce quil ny ait plus de classes sparer ;
Les paramtres de lautomate minimal sont, alors, les suivants :
Chaque classe de congruence est un tat de lautomate minimal ;
La classe qui contient lancien tat initial devient ltat initial de lautomate minimal ;
Toute classe contenant un tat final devient un tat final ;
La fonction de transition est dfinie comme suit : soient A une classe de congruence
obtenue, a un symbole de lalphabet et qi un tat qi A tel que (qi , a) est dfinie. La
transition (A, a) est gale la classe B qui contient ltat qj tel que (qi , a) = qj .
Exemple 13 : Soit minimiser lautomate suivant (les tats finaux sont les tats 1 et 2 tandis
que ltat 1 est initial) :
tat
1
2
3
4
5
6
7

a
2
2
3
5
4
6
5

b
5
4
2
3
6
1
7

La premire tape consiste liminer les tats inaccessibles, il sagit juste de ltat 7. Les
tapes de dtermination des classes de congruences sont les suivantes :
1. A = {1, 2}, B = {3, 4, 5, 6} ;

22

2.4. Oprations sur les automates

2. (3, b) = 2 A,(4, b) = 3 B ainsi il faut sparer 4 du reste de la classe B. Alors, on


cre une classe C contenant ltat 4 ;
3. (3, b) = 2 A, (5, b) = 6 A ainsi il faut sparer 5 du reste de la classe B. Mais inutile
de crer une autre classe puisque (4, a) = 5 B, (5, a) = 4 B et (4, b) = 3 B et
(5, b) = 6 B, il faut donc mettre 5 dans la classe C. C = {4, 5} et B = {3, 6} ;
4. Aucun autre changement nest possible, alors on arrte lalgorithme.
Le nouvel automate est donc le suivant (ltat initial est A) :
Etat
A
B
C

a
A
B
C

b
C
A
A

Remarque 3 : Lautomate obtenu est minimal et est unique, il ne peut plus tre rduit. Si
aprs rduction on obtient le mme automate, alors cela signifie quil est dj minimal.

2.4 Oprations sur les automates


Notons dabord que les oprations suivantes ne concernent pas que les AEF, elles peuvent
tre tendues tout automate. Cependant, la complexit de ces oprations augmente inversement avec le type du langage.

2.4.1

Le complment

Soit A un automate dterministe dfini par le quintuplet (X, Q, q0 , F, ) reconnaissant le


langage L. Lautomate reconnaissant le langage inverse (cest--dire L ou X L) est dfini par
le quintuplet (X, Q, q0 , Q F, ) (en dautres termes, les tats finaux deviennent non finaux et
vice-versa).
Cependant, cette proprit ne fonctionne que si lautomate est complet : la fonction est
compltement dfinie pour toute paire (q, a) Q X comme le montre les exemples suivants.
Exemple 14 : Soit le langage des mots dfinis sur lalphabet {a, b, c} contenant le facteur
ab. Il sagit ici dun automate complet, on peut, donc, lui appliquer la proprit prcdente
pour trouver lautomate des mots qui ne contiennent pas la facteur ab (notons que ltat 2
du deuxime automate correspond une sorte dtat derreur auquel lautomate se branche
lorsquil dtecte le facteur ab. On dit que cest un tat improductif tant donn quil ne peut
pas gnrer de mots).
Soit maintenant le langage des mots dfinis sur {a, b, c} contenant exactement deux a
(figure 2.7). Lautomate nest pas complet, donc, on ne peut pas appliquer la proprit prcdente moins de le transformer en un automate complet. Pour le faire, il suffit de rajouter un
tat non final E (on le dsignera comme un tat derreur) tel que (2, a) = E.
Considrons la fin lautomate de la figure 2.8. Les deux automates reconnaissent le mot
a ce qui signifie que les deux automates ne reconnaissent pas des langages complmentaires.

23

2.4. Oprations sur les automates

a,b,c

b,c

c
l'inverse
a,b,c

b,c

c
Figure 2.6 Comment obtenir lautomate du langage complmentaire (dun automate complet)

b,c

b,c

b,c

l'inverse? (pas
vraiment)

b,c

b,c

b,c

Figure 2.7 Si lautomate nest pas complet, on ne peut pas obtenir lautomate du langage inverse.
Lautomate obtenu reconnat les mots contenant au plus 1 a.

24

2.4. Oprations sur les automates

0
a,b

a
2
l'inverse?
b

0
a,b

a
2

Figure 2.8 Si lautomate nest pas dterministe, on ne peut pas trouver lautomate du langage
complmentaire.

Remarque 4 : Le fait quun AEF ne soit pas dterministe ne reprsente pas un obstacle pour
trouver lautomate du langage inverse. En effet, on pourra toujours le construire en procdant
une transformation. Laquelle ?
Remarque 5 : Lalgorithme de dduction de lautomate du complmentaire peut en ralit
tre appliqu un automate incomplet. Il suffit juste de le transformer en un automate complet
et de lui appliquer, ensuite, lalgorithme. Comment rendre un automate complet ?

2.4.2

Produit dautomates

Dfinition 18 : Soit A = (X, Q, q0 , F, ) et A = (X , Q , q0 , F , ) deux automates tats


finis. On appelle produit des deux automates A et A lautomate A (X , Q , q0 , F , ) dfini
comme suit :
X = X X ;
Q = Q Q ;
q0 = (q0 , q0 ) ;
F = F F ;
((q, q ) , a) = ((q, a), (q , a))
Cette dfinition permet de synchroniser la reconnaissance dun mot par les deux automates. On pourra facilement dmontrer que si w est un mot reconnu par A alors il lest par

25

2.4. Oprations sur les automates

A, ceci est galement le cas pour lautomate A . Ainsi, si L(A) est le langage reconnu par A
et L(A ) est le langage reconnu par le langage A alors lautomate A reconnat lintersection
des deux langages : L(A) L(A ).
Exemple 15 : Considrons la figure 2.9. Lautomate (1) reconnat les mots sur {a, b, c} contenant deux a, lautomate (2) reconnat les mots sur {a, b, c} contenant deux b, lautomate (3)
reprsente le produit des deux automates. Remarquons que dans lautomate (3), tout chemin
qui mne de ltat initial vers ltat final passe forcment par deux a et deux b (tout ordre
est possible). Or, ceci est exactement le langage rsultant de lintersection des deux premiers
langages.
b

a,b,c

a,b,c

a,b,c

0,0'
0

0'

1,0'

(2)
a,b,c

1'

a,b,c

a
2,0'

0,1'

1,1'
a

2,1'

0,2'
a

a
a,b,c

a,b,c

a,b,c

a,b,c

a,b,c

(1)

1,2'

a,b,c a
b

a,b,c

2,2'

2'
a,b,c

a,b,c

a,b,c

(3)

Figure 2.9 Exemple dintersection de produit dautomates

2.4.3

Le langage miroir

Soit A = (X, Q, q0 , F, ) un automate reconnaissant le langage L(A). Lautomate qui reconnat le langage (L(A))R est reconnu par lautomate AR = (X, Q, F, {q0 }, R ) tel que : R (q , a) =
q si (q, a) = q .
En dautres termes, il suffit juste dinverser les sens des arcs de lautomate et le statut
initial/final des tats initiaux et finaux. Notons, par ailleurs, que lautomate AR peut contenir
plusieurs tats initiaux ce qui signifie quil est le plus souvent non dterministe. Pour liminer
le problme des multiples tats initiaux, il suffit de rajouter un nouvel tat initial et de le
raccorder aux anciens tats finaux par des -transitions.
Minimisation par double dterminisation
Lalgorithme permettent dobtenir lautomate du langage miroir semble simple mais il
permet, nanmoins, de raliser des oprations trs astucieuses. En particulier, il est bien utile
pour minimiser un automate mme si ce dernier nest dterministe. Toutefois, pour que la
construction fonctionne, il nous faudra modifier lalgorithme prcdent comme suit : si lautomate de base possde plusieurs tats finaux, alors lautomate du langage miroir possdera

2.4. Oprations sur les automates

26

plusieurs tats initiaux (on supprime laction consistant crer un nouvel tat initial si lautomate possde plusieurs tats finaux).
Lalgorithme de minimisation dun automate A est alors le suivant :
1. construire lautomate du langage miroir partir de A, soit AR lautomate obtenu ;
2. dterminiser AR , soit AR
d lautomate obtenu ;
3. construire lautomate du langage miroir partir de AR
d , soit And lautomate obtenu ;
4. dterminiser And , lautomate obtenu est lautomate minimal recherch.
Par ailleurs, nous pouvons galement noncer les rsultats suivants :
Si L et M sont deux langages reconnus pas deux AEF, alors L + M est galement reconnu
par un AEF ;
Si L et M sont deux langages reconnus par deux AEF, alors L.M est galement reconnu
par un AEF ;
Si L est un langage reconnu par un AEF, alors L est galement reconnu par un AEF ;
Le chapitre suivant traite des langages rguliers et des expressions rgulires. On y abordera les oprations prcdentes avec plus de dtails tant donn quelles reprsentent les
oprations de base lorsquon travaille avec les expressions rgulires.

27

2.5. Exercices de TD

2.5 Exercices de TD
Exercice 1 : Soit lautomate suivant :
b

a
a

1
a

Dterminisez et minimisez-le si ncessaire.


Exercice 2 : Dterminisez et minimisez si ncessaire lautomate suivant :
b

a,
a

b
3

1
b

2
a

Exercice 3 : Minimisez lautomate suivant (ltat initial est 1, les tats finaux sont {3, 6, 8}) :
tat
1
2
3
4
5
6
7
8
9

a
2
1
1
2
4
4
4
9
7

b
3
5
5
6
7
5
5
3
3

c
4
6
6
1
8
3
3
6
9

Exercice 4 : Donnez les automates tats finis qui reconnaissent les langages suivants :
1. Tous les mots sur {a, b, c} commenant par c ;
2. Tous les mots sur {a, b, c} dont le premier et le dernier symbole sont les mmes ;
3. Tous les mots sur {a, b, c} qui contiennent le facteur ab ou ac ;
4. Tous les mots sur {a, b, c} qui ne contiennent pas le facteur aba ;

28

2.5. Exercices de TD
5. Tous les mots sur {a, b, c} qui ne contiennent pas le facteur bca ;
6. Tous les mots sur {a, b, c} qui ne contiennent ni le facteur aba ni le facteur bca ;
7. Tous les mots sur {a, b} o tout facteur de longueur 3 contient au moins un a ;
8. Tous les mots sur {a, b} de la forme ap bq tel que p + q est multiple de 2 ((p, q > 0)).

Exercice 5 : Donnez lautomate qui reconnat tous les mots sur {a} qui contiennent un nombre
impair de a. Dduisez lautomate qui reconnat le langage de tous les mots sur {a, b} contenant
un nombre impair de a et un nombre pair de b. Donnez alors lautomate reconnaissant tous
les mots sur {a, b, c} contenant un nombre impair de a et un nombre pair de b.
Exercice 6 : Considrons lensemble des nombres binaires, donnez les automates qui reconnaissent :
Les nombres multiples de 2 ;
Les nombres multiples de 4 ;
Les nombres multiples de 2 mais pas 4.
Exercice 7 : Donnez lautomate qui reconnat les nombres binaires multiples de 3. Donnez ensuite deux faons pour construire lautomate qui reconnat les multiples de 6. Peut-on dduire
lautomate des multiples de 9 partir de lautomate des multiples de 3 ?
Exercice 8 : Soit un mobile pouvant bouger dans un environnement sous forme dune matrice
{0, 1, 2, 3} {0, 1, 2, 3} selon la figure suivante.
Position possible

4
Zone autorise 3
2
H
G

0
0

Les mouvements possibles sont D (droite), G (gauche), H (haut) et B (bas). Le mobile prend
ses ordres sous forme de mots composs sur lalphabet {D, G, H, B} (tout dplacement se fait
dune unit). Par exemple, si le mobile se trouve sur le point (0, 0), alors le mot DHHG va situer
le mobile sur le point (0, 2). Ainsi, on peut parler de langages de dplacements permettant
deffectuer telle ou telle tche. Donnez, si possible, les automates des dplacements (langages)
suivants (on suppose que le mobile se trouve, au dpart, au point (0, 0)) :
Tout chemin assurant que le mobile reste dans la zone autorise ;
Les chemins qui nentrent pas dans le carr {1, 2} {1, 2} ;
Les dplacements qui font revenir le mobile vers lorigine des coordonnes.

2.5. Exercices de TD

29

Exercice 9 : Donnez un automate reconnaissant une date de la forme jour/mois. Faites attention aux dates invalides du type 30/02 (on considre que la date 29/02 est valide).
Exercice 10 : Donnez un automate dterministe reconnaissant les nombres rels en langage
Pascal.

Chapitre 3

Les langages rguliers


Les langages rguliers sont les langages gnrs par des grammaires de type 3 (ou encore grammaires rgulires). Ils sont reconnus grce aux automates tats finis. Le terme
rgulier vient du fait que les mots de tels langages possdent une forme particulire pouvant
tre dcrite par des expressions dites rgulires. Ce chapitre introduit ces dernires et tablit
lquivalence entre les trois reprsentations : expression rgulire, grammaire rgulire et AEF.

3.1 Les expressions rgulires E.R


Dfinition 19 : Soit X un alphabet quelconque ne contenant pas les symboles {, +, |, ., (, )}.
Une expression rgulire est un mot dfini sur lalphabet X {, +, |, ., (, )} permettant de
reprsenter un langage rgulier de la faon suivante :
Lexpression rgulire dnote le langage vide (L = {}) ;
Lexpression rgulire a (a X) dnote le langage L = {a} ;
Si r est une expression rgulire qui dnote L alors (r) (resp. (r)+ ) est lexpression
rgulire qui dnote L (resp. L+ ) ;
Si r est une expression rgulire dnotant L et s une expression rgulire dnotant L
alors (r)|(s) est une expression rgulire dnotant L + L . Lexpression rgulire (r).(s)
(ou simplement (r)(s)) dnote le langage L.L .
Les expressions rgulires sont galement appeles expressions rationnelles. Lutilisation
des parenthses nest pas obligatoire si lon est sr quil ny ait pas dambigut quant
lapplication des oprateurs , +, |, .. Par exemple, on peut crire (a) ou a puisque lon est
sr que sapplique juste a. Par ailleurs, on convient utiliser les priorits suivantes pour
les diffrents oprateurs : 1), +, 2). et 3)|.
Exemple 16 :
1. a : dnote le langage rgulier an (n > 0) ;
2. (a|b) : dnote les mots dans lesquels le symbole a ou b se rptent un nombre quelconque de fois. Elle dnote donc le langage de tous les mots sur {a, b} ;
3. (a|b) ab(a|b) : dnote tous les mots sur {a, b} contenant le facteur ab.

30

31

3.1. Les expressions rgulires E.R

3.1.1

Utilisation des expressions rgulires

Les expressions rgulires sont largement utilises en informatique. On les retrouve plus
particulirement dans les shell des systmes dexploitation o ils servent indiquer un ensemble de fichiers sur lesquels on est appliqu un certain traitement. Lutilisation des expressions rgulires en DOS, reprise et tendue par WINDOWS, est trs limite et ne concerne
que le caractre "*" qui indique zro ou plusieurs symboles ou le caractre " ?" indiquant un
symbole quelconque. Ainsi, lexpression rgulire "f*" indique un mot commenant par f suivi
par un nombre quelconque de symboles, "*f*" indique un mot contenant f et "*f*f*" indique un
mot contenant deux f. Lexpression "f ?" correspond nimporte quel mot de deux symboles
dont le premier et f.
Lutilisation la plus intressante des expressions rgulires est celle faite par UNIX. Les
possibilits offertes sont trs vastes. Nous les rsumons ici :
Expression
[abc]
[^abc]
[a e]
.
a
a+
a?
a|bc
a{2, }
a{, 5}
a{2, 5}
\x

Signification
les symboles a,b ou c
aucun des symboles a, b et c
les symboles de a jusqu e (a, b, c, d, e)
nimporte quel symbole sauf le symbole fin de ligne
a se rptant 0 ou plusieurs fois
a se rptant 1 ou plusieurs fois
a se rptant 0 ou une fois
le symbole a ou b suivi de c
a se rptant au moins deux fois
a se rptant au plus cinq fois
a se rptant entre deux et cinq fois
La valeur relle de x (un caractre spcial)

Nous allons prendre des exemples intressants :


[^ab] : les mots qui ne comportent ni a ni b
[ab] : tous les mots sur {a, b}
([^a] a[^a] a[^a]) les mots comportant un nombre pair de a
(ab{, 4}) les mots commenant par a o chaque a est suivi de quatre b au plus.
A prsent, nous allons quitter le merveilleux monde de UNIX et revenir ce cours. Nous
allons, donc, reprendre la dfinition des expressions rgulires donnes par la section 3.1.

3.1.2

Expressions rgulires ambigus

Dfinition 20 : Une expression rgulire est dite ambigu sil existe au moins mot pouvant
tre mis en correspondance avec lexpression rgulire de plusieurs faons.
Cette dfinition fait appel la correspondance entre un mot et une expression rgulire.
Il sagit, en fait, de lopration qui permet de dire si le mot appartient au langage dcrit par
lexpression rgulire. Par exemple, prenons lexpression rgulire a b . Soit dcider si le
mot aab est dcrit ou non par cette expression. On peut crire :
b
aa |{z}
|{z}
a

3.2. Les langages rguliers, les grammaires et les automates tats finis

32

Ainsi, le mot est dcrit par cette E.R. Il ny a quune seule faon qui permet de le faire correspondre. Ceci est valable pour tous les mots de ce langage. LE.R nest donc pas ambigu.
Considrons maintenant lexpression (a|b) a(a|b) dcrivant tous les mots sur {a, b} contenant le facteur a. Soit faire correspondre le mot aab, on a :
abaab =

ab .a. |{z}
ab
|{z}

(a|b)

abaab =

(a|b)

aba
b
|{z} .a. |{z}

(a|b)

(a|b)

Il existe donc au moins deux faons pour faire correspondre aab lexpression prcdente,
elle est donc ambigu.
Lambigut pose un problme quant linterprtation dun mot. Par exemple, supposons
que, dans lexpression (a|b) a(a|b) , lon veut comparer la partie gauche du facteur a la
partie droite du mot. Selon la mthode de correspondance, le rsultat est soit vrai ou faux ce
qui est inacceptable dans un programme cohrent.

3.1.3

Comment lever lambigut dune E.R ?

Il nexiste pas une mthode prcise pour lever lambigut dune E.R. Cependant, on peut
dire que cette opration dpend de ce que lon veut faire avec lE.R ou plutt dune hypothse
de reconnaissance. Par exemple, on peut dcider que le facteur fixe soit le premier a du mot
reconnatre ce qui donne lexpression rgulire : b a(a|b) . On peut galement supposer que
cest le dernier a du mot reconnatre ce qui donne lexpression rgulire (a|b) ab . La srie
de TD propose quelques exercices dans ce sens.

3.2 Les langages rguliers, les grammaires et les automates tats


finis
Le thorme suivant tablit lquivalence entre les AEF, les grammaires rgulires et les
expressions rgulires :
Thorme 2 : (Thorme de Kleene) Soient reg lensemble des langages rguliers (gnrs
par des grammaires rgulires), rat lensemble des langages dcrits par toutes les expressions rgulires et AEF lensemble de tous les langages reconnus par un AEF. Nous avons,
alors, lgalit suivante :
reg = rat = AEF

Le thorme annonce que lon peut passer dune reprsentation une autre du fait de
lquivalence entre les trois reprsentations. Les sections suivantes expliquent comment passer
dune reprsentation une autre.

3.2.1

Passage de lautomate vers lexpression rgulire

Soit A = (X, Q, q0 , F, ) un automate tats fini quelconque. On note par Li le langage


reconnu par lautomate si son tat initial tait qi . Par consquent, trouver le langage reconnu
par lautomate revient trouver L0 tant donn que la reconnaissance commence partir

3.2. Les langages rguliers, les grammaires et les automates tats finis

33

de ltat initial q0 . Lautomate permet dtablir un systme dquations aux langages de la


manire suivante :
si (qi , a) = qj alors on crit : Li = aLj ;
si qi F, alors on crit : Li =
si Li = et Li = alors on crit : Li = | ;
Il suffit ensuite de rsoudre le systme en prcdant des substitutions et en utilisant la
rgle suivante : la solution de lquation L = L| (
/ ) est le langage L = (attention ! si
vous obtenez L = L alors cest la preuve dune faute de raisonnement).
Exemple 17 : Soit lautomate donn par la figure suivante :
b
a

b
0
b

a
2
a

Trouvons le langage reconnu par cet automate. Le systme dquations est le suivant :
1) L0 = aL0 |bL1 ;
2) L1 = bL1 |aL2 ;
3) L2 = aL2 |bL0 |
Appliquons la deuxime rgle sur les quations, on obtient alors aprs substitutions :
4) L0 = a bL1 ;
5) L1 = b aL2 = b a+ bL0 |b a+ ;
6) L2 = a bL0 |a
En remplaant 5) dans 4) on obtient : L0 = a b+ a+ bL0 |a b+ a+ ce qui donne alors L0 =
(a b+ a+ b) a b+ a+ (remarquez que lon pouvait dduire la mme chose partir de lautomate...).

3.2.2

Passage de lexpression rgulire vers lautomate

Il existe deux mthodes permettant de raliser cette tche. La premire fait appel la
notion de drive tandis que la deuxime construit un automate comportant des -transitions
en se basant sur les proprits des langages rguliers.
Drive dun langage
Dfinition 21 : Soit w un mot dfini sur un alphabet X. On appelle drive de w par rapport
u X le mot v X tel que w = uv. On note cette opration par : v = w||u.
On peut tendre cette notion aux langages. Ainsi la drive dun langage par rapport un
mot u X est le langage L||u = {v X |w L : w = uv}.
Exemple 18 :
L = {1, 01, 11}, L||1 = {, 1}, L||0 = {1}, L||00 =

3.2. Les langages rguliers, les grammaires et les automates tats finis

34

Proprits des drives


P
Pn
( n
i=1 Li )||u =
i=1 (Li ||u) ;

L.L ||u = (L||u).L + f(L).(L ||u) tel que f(L) = {} si L et f(L) = sinon ;
(L )||u = (L||u)L .
Mthode de construction de lautomate par la mthode des drives
Soit r une expression rgulire (utilisant lalphabet X) pour laquelle on veut construire
un AEF. Lalgorithme suivant donne la construction de lautomate :
1. Driver r par rapport chaque symbole de X ;
2. Recommencer 1) pour chaque nouveau langage obtenu jusqu ce quil ny ait plus
de nouveaux langages ;
3. Chaque langage obtenu correspond un tat de lautomate. Ltat initial correspond r. Si appartient un langage obtenu alors ltat correspondant est final ;
4. si Li ||a = Lj alors on cre une transition entre ltat associ Li et ltat associ Lj
et on la dcore par a.
Exemple 19 : Considrons le langage (a|b) a(a|b) . On sait que :
(a|b)||a = donc (a|b) ||a = (a|b)
Commenons lapplication de lalgorithme :
[(a|b) a(a|b) ]||a = ((a|b) a(a|b) )|(a|b) ;
[(a|b) a(a|b) ]||b = (a|b) a(a|b) ;
[((a|b) a(a|b) )|(a|b) ]||a = ((a|b) a(a|b) )|(a|b) ;
[((a|b) a(a|b) )|(a|b) ]||b = ((a|b) a(a|b) )|(a|b) ;
Il ny a plus de nouveaux langages, on sarrte alors. Lautomate comporte deux tats q0
(associ (a|b) a(a|b) ) et q1 (associ ((a|b) a(a|b) )|(a|b) ), il est donn par la table
suivante (ltat initial est q0 et ltat q1 est final) :
tat a
b
q0
q1 q0
q1
q1 q1
La mthode des drive ne permet pas seulement de construire lAEF dun langage, elle
permet mme de vrifier si un langage est rgulier ou non. Pour cela, nous allons accepter le
thorme suivant :
Thorme 3 :
Un langage est rgulier si et seulement si le nombre de langages trouvs par la mthode
des drives est fini. En dautres termes, lapplication de la mthode des drives un langage
non rgulier produit un nombre infini des langages (ou encore dtats).

Mthode de Thompson
La mthode de Thompson permet de construire un automate en procdant la dcomposition de lexpression rgulire selon les oprations utilises. Soit r une E.R, alors lalgorithme
utiliser est le suivant :
Si r = a (un seul symbole) alors lautomate est le suivant :

3.2. Les langages rguliers, les grammaires et les automates tats finis

35

Si r = st alors il suffit de trouver lautomate As qui reconnat s et lautomate At qui


reconnat t. Il faudra, ensuite relier chaque tat final de As ltat initial de At par une
-transition. Les tats finaux de As ne le sont plus et ltat initial de At ne lest plus :
t

...

...

...

...

Si r = s|t alors il suffit de crer un nouvel tat initial et le relier avec des -transitions
aux tats initiaux de Ar et As qui ne le sont plus :
s
...
...

...
...

Si r = s+ alors il suffit de relier les tats finaux de As par des -transitions son tat
initial :
s

...

...

Si r = s alors il suffit de relier les tats finaux de As par des -transitions son tat
initial puis relier ce dernier chacun des tats finaux par des -transitions :
s

...

...

36

3.2. Les langages rguliers, les grammaires et les automates tats finis

Exemple 20 : Soit construire lautomate du langage (a|b) a(a|b) , la mthode de Thompson


donne lautomate suivant :

3.2.3

Passage de lautomate vers la grammaire

Du fait de lquivalence des automates tats finis et les grammaires rgulires, il est possible de passer dune forme une autre. Le plus facile tant le passage de lautomate vers
la grammaire. Le principe de correspondance entre automates et grammaires rgulires est
trs intuitif : il correspond lobservation que chaque transition dans un automate produit
exactement un symbole, de mme que chaque drivation dans une grammaire rgulire normalise. Soit A = (X, Q, q0 , F, ) un AEF, la grammaire qui gnre le langage reconnu par A est
g = (V, N, S, R) :
V = X;
On associe chaque tat de Q un non terminal. Ceci permet davoir autant de nonterminaux quil existe dtats dans A ;
Laxiome S est le non-terminal associ ltat initial q0 ;
Soit A le non terminal associ qi et B le non-terminal associ qj , si (qi , a) = qj alors
la grammaire possde la rgle de production : A aB ;
Si qi est final et A est le non-terminal associ qi alors la grammaire possde la rgle
de production : A .
Il sagit ici dune grammaire rgulire droite. Ltudiant peut, en guise dexercice, trouver une mthode permettant de construire la grammaire rgulire gauche. Notons, par le
passage, que lon sintresse gnralement une forme normalise des grammaires rgulires.
Celle-ci est dfinie comme suit : soit G = (V, N, S, R) une grammaire rgulire droite, elle est
dite normalise si toutes les rgles de production sont de lune des formes suivantes :
A a, A N, a V ;
A aB, A, B N, a V ;
A , A N
Voir la paragraphe suivant pour transformer une grammaire rgulire en sa forme normale.

3.2.4

Passage de la grammaire vers lautomate

Daprs la section prcdente, il existe une forme de grammaires rgulires pour lesquelles
il est facile de construire lAEF correspondant. En effet, soit G = (V, N, S, R) une grammaire
rgulire droite, si toutes les rgles de production sont de la forme : A aB ou A B
(A, B N, a V {}) alors il suffit dappliquer lalgorithme suivant :
1. Associer un tat chaque non terminal de N ;
2. Ltat initial est associ laxiome ;

3.3. Proprits des langages rguliers

37

3. Pour chaque rgle de production de la forme A , ltat qA est final ;


4. Pour chaque rgle de production de la forme A a (a V), alors crer un nouvel tat
final qf et une transition partant de ltat qA vers ltat qf avec lentre a ;
5. Pour chaque rgle A aB alors crer une transition partant de qA vers ltat qB en
utilisant lentre a ;
6. Pour chaque rgle A B alors crer une -transition partant de qA vers ltat qB ;
Cependant, cet algorithme ne peut pas sappliquer toutes les grammaires rgulires. On
peut nanmoins transformer toute grammaire rgulire la forme donne ci-dessus. Lalgorithme de transformation est le suivant. Soit G = (V, N, S, R) une grammaire rgulire :
1. Pour chaque rgle de la forme A wB (A, B N et w V) tel que |w| > 1, crer
un nouveau non-terminal B et clater la rgle en deux : A aB et B uB tel que
w = au et a V ;
2. Pour chaque rgle de la forme A w (A N et w V) tel que |w| > 1, crer un
nouveau non-terminal B et clater la rgle en deux : A aB et B u tel que w = au
et a V ;
3. Recommencer 1) et 2) jusqu ce quil ny ait plus de nouveaux non terminaux ;
Enfin, llimination des rgles A B (A, B N), on applique lalgorithme suivant (il faut bien
entendu enlever toute rgle de la forme A A) :
1. Pour chaque rgle A B tel que B 1 |2 |...|n
Rajouter une rgle A 1 |2 |...|n
Supprimer la rgle A B
2. Refaire ltape 1) jusqu ce quil ny ait plus de rgles de la forme A B
Exemple 21 : Soit la grammaire rgulire G = ({a, b}, {S, T }, S, {S aabS|bT , T aS|bb}). Le
processus de transformation est le suivant :
clater S aabS en S aS1 et S1 abS ;
clater S1 abS en S1 aS2 et S2 bS ;
clater T bb en T1 bT1 et T1 b ;

3.3 Proprits des langages rguliers


3.3.1

Stabilit par rapport aux oprations sur les langages

Les langages rguliers sont stables par rapport aux oprations de lunion, lintersection, le
complmentaire, la concatnation et la fermeture de Kleene. La dmonstration de ce rsultat
est trs simple. Soient L et M deux langages rguliers dsigns respectivement par les E.R r
et s et respectivement reconnus par les automates Ar et As . tant donne lquivalence entre
les langages rguliers et les AEF, nous avons :
L + M est rgulier : lAEF correspondant sobtient en utilisant lalgorithme de construction de lautomate de reconnaissance de lE.R r|s ;
L M est rgulier : lAEF correspondant sobtient en calculant le produit de Ar et As
(voir le chapitre prcdent) ;
L est rgulier : lAEF correspondant sobtient en rendant lautomate Ar complet puis en
inversant le statut final/non final des tats (voir le chapitre prcdent) ;

3.3. Proprits des langages rguliers

38

LR est rgulier : lAEF correspondant sobtient en inversant le sens des arcs dans Ar et
en inversant le statut initial/final des tats (voir le chapitre prcdent) ;
L.M est rgulier : lAEF correspondant sobtient en utilisant lalgorithme de construction
de lautomate de r.s ;
L (resp. L+ ) est rgulier : lAEF correspondant sobtient en utilisant lalgorithme de
construction de lautomate de r (resp. r+ ) ;
Lunion finie de langages rguliers reprsente un langage rgulier. Ainsi, on peut dire
que tout langage fini reprsente un langage rgulier.
Lunion infinie de langages rguliers peut ou non tre un langage rgulier.

3.3.2

Lemme de la pompe

Dans cette section, nous prsentons les critres permettant daffirmer si un langage est
rgulier ou non. Avant toute discussion, on peut dj annoncer que tout langage fini est un
langage rgulier. En effet, la construction dun AEF reconnaissant ce type de langages est
facile. Ltudiant peut en guise dexercice trouver une mthode permettant de trouver lAEF
dun langage fini quelconque, sa grammaire ainsi que lE.R qui le reprsente.
A prsent, nous allons annoncer un critre dont la vrification permet de juger si un langage nest pas rgulier. Il sagit en fait dune condition suffisante et non ncessaire pour quun
langage soit rgulier. La dmonstration de ce rsultat sort du cadre du cours.
Proposition 2 : Soit L un langage rgulier infini dfini sur lalphabet X. Il existe alors un
entier n tel que pour tout mot w L et |w| > n, il existe x, z X et y X+ tels que :
w = xyz ;
|xy| 6 n ;
xyi z L pour tout i > 0.
Il est noter que cette condition est suffisante et non ncessaire. Il existe, en effet, des
langages non rguliers vrifiant ce critre. Il existe nanmoins une condition ncessaire et
suffisante que lon va noncer aprs avoir prsent un exemple dutilisation du lemme de la
pompe.
Exemple 22 : Soit le langage L = ak bl (ou encore a b , il sagit donc dun langage rgulier).
Prenons n = 1 et vrifions le critre de la pompe. Soit un mot w = ak bl (k + l > 1). Si k > 0
alors il suffit de prendre x = ak1 , y = a et z = bl , ainsi tout mot de la forme xyi z = ak+i1 bl
appartient au langage. Si k = 0 alors il suffit de prendre x = , y = b et z = bl1 pour vrifier
le critre de la pomme.
Exemple 23 : Soit le langage L = ak bk (avec k > 0) 3 . Supposons que le langage est rgulier
et appliquons le lemme de la pompe. Supposons que lon a trouv n qui vrifie le critre,
ceci implique que pour tout mot w L, on peut le dcomposer en trois sous-mots x, y et z
tel que : |xy| 6 n, y 6= et xyi z L. Considrons le mot an+1 bn+1 , toute dcomposition
de ce mot produire les mots x = aj , y = al et z = an+1jl bn+1 , l > 0 (si xy contient n
symboles alors x et y ne contiennent que des a tant donn quil y a (n + 1) a). Maintenant,
le lemme de la pompe stipule que xyi z L pour tout i > 0 donc tout mot de la forme
aj ail an+1jl bn+1 = a(i1)l+n+1 bn+1 appartient L. Pour i = 2 la borne infrieure de
3. Attention, lexpression ak bk nest pas rgulire.

39

3.3. Proprits des langages rguliers

(i 1)l est 1, ce qui signifie que le nombre de a est diffrent du nombre de b. Contradiction.
Donc, le langage ak bk nest pas rgulier.
Exemple 24 : Soit maintenant soit L b un langage non rgulier arbitraire. Le langage :
a+ L|b
satisfait le lemme de la pompe. Il suffit de prendre avec les notations du lemme, n = 1. Cet
exemple illustre donc le fait que le lemme prcdent ne constitue pas une condition ncessaire
pour dcider de la rgularit dun langage.
Proposition 3 :
Soit L un langage infini dfini sur lalphabet X. L est rgulier si et seulement sil existe un
entier n > 0 tel que pour tout mot w X et |w| > n, il existe x, z X et y X+ tels que :
w = xyz ;
u X : wv X xyi zu L.

40

3.4. Exercices de TD

3.4 Exercices de TD
Exercice 1 : Donnez une description de chacune des E.R suivantes, puis donnez leurs quivalents en UNIX :
a(a|b) (b|) ;
(aaa) ;
(a|ab|abb)
a(a|b) (aa|bb)+
(b|ab)
Exercice 2 : Donnez les expressions rgulires UNIX pour les langages suivants :
les identificateurs en Pascal ;
les noms de fichiers en DOS ;
les nombres entiers multiples de 5 ;
les mots sur {a, b, c} contenant le facteur a1000 .
Exercice 3 : Donnez une expression rgulire pour chacun des langages suivants ainsi quune
expression rgulire en UNIX. Dduisez chaque fois lautomate correspondant en utilisant
la mthode de Thompson ou celle des drives :
1. Tous les mots sur {a, b, c} ne commenant pas par a ;
2. Tous les mots sur {a, b, c} dont le premier et le dernier symbole sont les mmes ;
3. Tous les mots sur {a, b, c} contenant exactement trois a ;
4. Tous les mots sur {a, b, c} contenant au moins trois a ;
5. Tous les mots sur {a, b, c} contenant au plus trois a ;
6. Tous les mots sur {a, b, c} ne contenant pas la facteur bc ;
7. Tous les mots sur {a, b, c} ne contenant pas le facteur acc
8. Tous les entiers (en base dix) multiples de 5.
Exercice 4 : Soit lautomate suivant :
b
2
a
0

b
1

a
b

Trouvez le langage reconnu par cet automate ainsi quune grammaire rgulire qui le
gnre.
Exercice 5 : Soit lautomate suivant :

41

3.4. Exercices de TD

b,c
a
0

b,c
b

1. Trouvez le langage rgulier reconnu par cet automate ;


2. Trouvez lautomate du langage complmentaire et dduire son expression rgulire.

Exercice 6 : Soit le grammaire rgulire : G = ({a, b}, {S, T }, S, {S aaS|bbS|bT |aT |, T


bT |aT |aaS|bbS}). Trouvez lautomate reconnaissant le langage gnr par cette grammaire
puis en dduire son expression rgulire.
Exercice 7 : En utilisant le lemme de la pompe, dites si les langages suivants sont rguliers.
Si le critre de la pompe est vrifi, donnez un AEF ou une grammaire rgulire gnrant le
langage pour tre sr de la rgularit :
an bm ,n > 0, m > 0 ;
a2n+1 , n > 0 ;
an bm , n, m > 0 et n + m est pair ;
a2n bn , n > 0
2
an , n > 0 ;
2
bm an + ak , n, k > 0, m > 0
Exercice 8 : Donnez une expression rgulire dcrivant les langages suivants ainsi que leurs
quivalents en UNIX :
tous les mots sur {a, b} o chaque a est prcd dun b ;
tous les mots sur {a, b} contenant la fois les facteurs aa et bb ;
tous les mots sur {a, b} contenant soit aa soit bb mais pas les deux la fois ;
tous les mots sur {a, b} ne contenant pas deux a conscutifs ;
tous les mots sur {a, b, c} o le nombre de a est multiple de 2 ;
Exercice 9 : Dites si les expressions rationnelles suivantes sont ambigus. Si oui, levez lambigut :
(ab) (ba)+ ;
((aa)+ b ) ;
(a|b) ab(a|b)

Chapitre 4

Les langages algbriques


Malgr la panoplie dalgorithmes existants pour travailler sur les automates tats finis,
ceux-l sont limits aux seuls langages rguliers. Par exemple, dans le chapitre prcdent,
nous avons montr que le langage {an bn |n > 0} nest pas rgulier et, par consquent, ne peut
pas tre reconnu par un AEF. Ce chapitre largit un peu le champ dtude en sintressant aux
langages algbriques qui reprsentent la couche qui suit immdiatement celle des langages
rguliers dans la hirarchie de Chomsky. Remarquons, cependant, que le niveau de complexit
est inversement proportionnel au type du langage et, par consquent, le nombre dalgorithmes
existants tend diminuer en laissant la place plus dintuition.

4.1 Les automates piles


Les automates piles sont une extension des automates tats finis. Ils utilisent une (et
une seule) pile pour reconnatre les mots en entre.
Dfinition 22 : Un automate pile est dfini par le sextuple A = (X, , Q, q0 , F, ) tel que :
X est lensemble des symboles formant les mots en entre (alphabet des mots reconnatre) ;
est lensemble des symboles utiliss pour crire dans la pile (lalphabet de la pile). Cet
alphabet doit forcment inclure le symbole signifiant que la pile est vide ;
Q est lensemble des tats possibles ;
q0 est ltat initial ;
F est lensemble des tats finaux (F 6= , F Q) ;
est une fonction de transition permettant de passer dun tat un autre :
: Q (X {}) 7 Q ( {})
(qi , a, b) = (qj , c) ou ( signifie que la configuration nest pas prise en charge)
b est le sommet de la pile et c indique le nouveau contenu de la pile relativement
ce quil y avait
Par consquent, tout automate tats fini est en ralit un automate pile la seule
diffrence que la pile du premier reste vide ou au mieux peut tre utilise dans une certaine
limite.
Une configuration dun automate pile consiste donc dfinir le triplet (q, a, b) tel que q
est ltat actuel, a et le symbole actuellement en lecture et b est le sommet actuel de la pile.
42

4.1. Les automates piles

43

Lorsque b = " ", alors la pile est vide.


Les exemples suivants illustrent comment peut-on interprter une transition :
(q0 , a, ) = (q1 , B) signifie que si lon est dans ltat q0 , si le symbole actuellement lu
est a et si la pile est vide alors passer ltat q1 et empiler le symbole B ;
(q0 , a, A) = (q1 , BA) signifie que si lon est dans ltat q0 , si le symbole actuellement lu
est a et si le sommet de la pile est A alors passer ltat q1 et empiler le symbole B ;
(q0 , , A) = (q1 , BA) signifie que si lon est dans mtat q0 , sil ne reste plus rien lire
et que le sommet de la pile est A alors passer ltat q1 et empiler le symbole B ;
(q0 , a, A) = (q1 , A) signifie que si lon est dans ltat q0 , si le symbole actuellement lu
est a et si le sommet de la pile est A alors passer ltat q1 et ne rien faire avec la pile ;
(q0 , a, A) = (q1 , ) signifie que si lon est dans ltat q0 , si le symbole actuellement lu
est a et si le sommet de la pile est A alors passer ltat q1 et dpiler un symbole de la
pile.
Un mot w est accept par un automate pile si aprs avoir lu tout le mot w, lautomate se
trouve dans un tat final. Le contenu de la pile importe peu du fait que lon peut toujours la
vider (comment ?). Par consquent, un mot est rejet par un automate pile :
Si lorsque aucune transition nest possible, lautomate na pas pu lire tout le mot ou bien
il se trouve dans un tat non final.
Si une opration incorrecte est mene sur la pile : dpiler alors que la pile est vide.
Exemple 25 : Lautomate reconnaissant les mots an bn (avec n > 0) est le suivant : A =
({a, b}, {A, }, {q0 , q1 , q2 }, q0 , {q2 }, ) tel que est dfinie par :
(q0 , a, ) = (q0 , A)
(q0 , a, A) = (q0 , AA)
(q0 , b, A) = (q1 , )
(q1 , b, A) = (q1 , )
(q1 , , ) = (q2 , )
(q0 , , ) = (q2 , )
Dtaillons la reconnaissance de quelques mots :
1. Le mot aabb : (q0 , a, ) (q0 , a, A) (q0 , b, AA) (q1 , b, A) (q1 , , ) (q2 , , ).
Le mot est reconnu ;
2. Le mot aab : (q0 , a, ) (q0 , a, A) (q0 , b, AA) (q1 , , A). Le mot nest pas reconnu car il ny a plus de transitions possibles alors que ltat de lautomate nest pas
final
3. Le mot abb : (q0 , a, ) (q0 , b, A) (q1 , b, ). Le mot nest pas reconnu car on narrive
pas lire tout le mot ;
4. Le mot : (q0 , , ) (q2 , , ). Le mot est reconnu.

4.1.1

Les automates piles et le dterminisme

Comme nous lavons signal dans le chapitre des automates tats finis, la notion du
dterminisme nest pas propre ceux-l. Elle est galement prsente dans le paradigme des
automates piles. On peut donc dfinir un automate pile dterministe par :
Dfinition 23 : Soit lautomate pile dfini par A = (X, , Q, q0 , F, ). A est dit dterministe
si qi Q, a (X {}), A , il existe au plus une paire (qj , B) (Q ) tel que

4.1. Les automates piles

44

(qi , a, A) = (qj , B).


En dautres termes, un automate pile non dterministe possde plusieurs actions entreprendre lorsquil se trouve dans une situation dtermine. La reconnaissance se fait donc
en testant toutes les possibilits jusqu trouver celle permettant de reconnatre le mot.
Exemple 26 : Considrons le langage suivant : wcwR tel que w (a|b) . La construction
dun automate pile est facile, son ide consiste empiler tous les symboles avant le c et de
les dpiler dans lordre aprs (ltat q2 est final) :
(q0 , a, ) = (q0 , A)
(q0 , b, ) = (q0 , B)

(q0 , a, A) = (q0 , AA)


(q0 , a, B) = (q0 , AB)
(q0 , b, A) = (q0 , BA)
(q0 , b, B) = (q0 , BB)

(q0 , c, A) = (q1 , A)
(q0 , c, B) = (q1 , B)
(q0 , c, ) = (q1 , )

(q1 , a, A) = (q1 , )
(q1 , b, B) = (q1 , )
(q1 , , ) = (q2 , )
Considrons maintenant le langage wwR tel que w (a|b) , les mots de ce langage sont
palindromes mais on ne sait quand est-ce quil faut arrter dempiler et procder au dpilement. Il faut donc supposer que chaque symbole lu reprsente le dernier symbole de w, le
dpiler, continuer la reconnaissance si cela ne marche pas, il faut donc revenir empiler, et ainsi
de suite :
(q0 , a, ) = (q0 , A)
(q0 , b, ) = (q0 , B)

(q0 , a, A) = (q0 , AA)


(q0 , a, B) = (q0 , AB)
(q0 , b, A) = (q0 , BA)
(q0 , b, B) = (q0 , BB)

(q0 , a, A) = (q1 , )
(q0 , b, B) = (q1 , )
(q0 , a, B) = (q1 , )
(q0 , b, A) = (q1 , )

(q1 , a, A) = (q1 , )
(q1 , b, B) = (q1 , )
(q1 , , ) = (q2 , )
Malheureusement, nous ne pouvons pas transformer tout automate piles non dterministe en un automate dterministe. En effet, la classe des langages reconnus par des automates

4.2. Les grammaires hors-contextes

45

piles non dterministes est beaucoup plus importantes que celle des langages reconnus par
des automates dterministes. Si LDET est lensemble des langages reconnus par des automates
piles dterministes et LNDET est lensemble des langages reconnus par des automates piles
non dterministes, alors :
LDET LNDET
Nous allons prsent nous intresser aux grammaires qui gnrent les langages algbriques puisque cest la forme de ces grammaires qui nous permettra de construire des automates pile.

4.2 Les grammaires hors-contextes


Nous avons dj voqu ce type de grammaires dans le premier chapitre lorsque nous
avons prsent la hirarchie de Chomsky. Rappelons-le quand mme :
Dfinition 24 : Soit G = (V, N, S, R) une grammaire quelconque. G est dite hors-contexte
ou de type de 2 si tous les rgles de production sont de la forme : tel que N et
(V + N) .
Un langage gnr par une grammaire hors-contexte est dit langage hors-contexte. Notons
que nous nous intressons, en particulier, ce type de langages (et par consquence ce type
de grammaires) du fait que la plupart des langages de programmation sont hors-contextes.
Ceci est d au fait que le temps danalyse des mots gnrs par certaines grammaires horscontextes est linaire.
Exemple 27 : Soit la grammaire gnrant le langage an bn (n > 0) : G = ({a, b}, {S}, S, R) tel
que R comporte les rgles : S aSb|. Daprs la dfinition, cette grammaire est hors-contexte
et le langage an bn est hors-contexte.

4.2.1

Arbre de drivation

Vu la forme particulire des grammaires hors-contextes (prsence dun seul symbole non
terminal gauche), il est possible de construire un arbre de drivation pour un mot gnr.
Dfinition 25 : Etant donne une grammaire G = (V, N, S, R), les arbres de syntaxe de G sont
des arbres dont les noeuds internes sont tiquets par des symboles de N, les feuilles tiquets
par des symboles de V, tels que : si le nud p apparat dans larbre et si la rgle p a1 ...an
(ai terminal ou non terminal) est utilise dans la drivation, alors le nud p possde n fils
correspondant aux symboles ai .
Si larbre syntaxique a comme racine S, alors il est dit arbre de drivation du mot u tel que
u est le mot obtenu en prenant les feuilles de larbre dans le sens gauchedroite et bashaut.

Exemple 28 : Reprenons lexemple prcdent, le mot aabb est gnr par cette grammaire
par la chane : S aSb aaSbb aabb = aabb. Larbre de drivation est donne par la
figure 4.1.

46

4.2. Les grammaires hors-contextes

Figure 4.1 Exemple dun arbre de drivation

4.2.2

Notion dambigut

Nous avons dj voqu la notion de lambigut lorsque nous avons prsent les expressions rgulires. Nous avons, alors, dfini une expression rgulire ambigu comme tant une
expression rgulire pouvant coller un mot de plusieurs manire.
Par analogie, nous dfinissons la notion de lambigut des grammaires. Une grammaire
est dite ambigu si elle peut gnrer au moins un mot de plus dune manire. En dautres
termes, si on peut trouver un mot gnr par la grammaire et possdant au moins deux
arbres de drivation, alors on dit que la grammaire est ambigu. Notons que la notion de
lambigut na rien avoir avec celle du non dterminisme. Par exemple, la grammaire G =
({a, b}, {S}, S, {S aSb|bSa|}) gnre les mots wwR tel que w (a|b) . Bien quil nexiste
aucun automate pile dterministe reconnaissant les mots de ce langage, tout mot ne possde
quun seul arbre de drivation.
Lambigut de certaines grammaires peut tre leve comme le montre lexemple suivant :
Exemple 29 : Soit la grammaire G = ({0, 1, +, }, {E}, E, {E E + E|E E|(E)|0|1}). Cette grammaire est ambigu car le mot 1+1*0 possde deux arbres de drivation (figures 4.2 et 4.3). La
grammaire est donc ambigu. Or ceci pose un problme lors de lvaluation de lexpression
(rappelons que lvaluation se fait toujours de gauche droite et bas en haut) 4 . Le premier
arbre value lexpression comme tant 1+(1*0) ce qui donne 1. Selon le deuxime arbre, lexpression est value comme tant (1+1)*0 ce qui donne 0 ! Or, aucune information dans la
grammaire ne permet de prfrer lune ou lautre forme.
E
E

E
0

Figure 4.2 Un premier arbre de drivation


4. Nous considrons le contexte de lalgbre de Boole

47

4.3. Simplification des grammaires hors-contextes


E

E
1

Figure 4.3 Deuxime arbre de drivation

Dune manire gnrale, pour lever lambigut dune grammaire, il ny a pas de mthodes
qui fonctionne tous les coups. Cependant, lide consiste gnralement introduire une
hypothse supplmentaire (ce qui va changer la grammaire) en esprant que le langage gnr
soit le mme. Par exemple, la grammaire G = ({+, , 0, 1}, {E, T , F}, E, {E E + T |T , T
T F|F, F (E)|0|1}) gnre le mme langage que G mais a lavantage de ne pas tre ambigu.
La transformation introduite consiste donner une priorit loprateur * par rapport
loprateur +.

4.2.3

quivalence des grammaires hors-contextes et les automates piles

Le thorme suivant tablit lquivalence entre les grammaires hors-contextes et les automates piles. Nanmoins, ni le thorme ni sa preuve ne fournissent des moyens pour le
passage dune forme une autre.
Thorme 4 : Tout langage hors-contexte est un langage algbrique et vice-versa. En dautres
termes, pour tout langage gnr par une grammaire hors-contexte, il existe un automate
pile (dterministe ou non) qui le reconnat. Rciproquement, pour tout langage reconnu par
un automate pile, il existe une grammaire hors-contexte qui le gnre.
Dans le paradigme des langages algbriques, il est plus intressant de sintresser aux
grammaires (rappelons quil nexiste pas dexpression rgulire ici !). Ceci est d lexistence
de nombreux algorithmes et outils traitant plutt des formes particulires de grammaires
(Chomsky, Greibach) cherchant ainsi faciliter la construction des arbres de drivation.

4.3 Simplification des grammaires hors-contextes


4.3.1

Les grammaires propres

Une grammaire hors-contexte (V, N, S, R) est dite propre si elle vrifie :


A u R : u 6= ou A = S ;
A u R : S ne figure pas dans u ;
A u R : u
/ N;
Tous les non terminaux sont utiles, cest--dire quils vrifient :

A N : A est atteignable depuis S : , (N + V) : S


A ;

A N : A est productif : w V : A
w.

48

4.4. Les formes normales

Il est toujours possible de trouver une grammaire propre pour toute grammaire horscontexte. En effet, on procde comme suit :
1. Rajouter une nouvelle rgle S S tel que S est le nouvel axiome ;
2. liminer les rgles A :

Calculer lensemble E = {A N {S }|A


} ;
Pour tout A E, pour toute rgle B A de R
Rajouter la rgle B
Enlever les rgles A

3. Eliminer les rgles A


B, on applique la procdure suivante sur R prive de S :

Calculer toutes les paires (A, B) tel que A


B
Pour chaque paire (A, B) trouve
Pour chaque rgle B u1 |...|un rajouter la rgle A u1 |...|un
Enlever toutes les rgles A B
4. Supprimer tous les non-terminaux non-productifs
5. Supprimer tous les non-terminaux non-atteignables.

4.4 Les formes normales


4.4.1

La forme normale de Chomsky

Soit G = (V, N, S, R) une grammaire hors-contexte. On dit que G est sous forme normale
de Chomsky si les rgles de G sont toutes de lune des formes suivantes :
A BC, A N, B, C N {S}
A a, A N, a V
S
Lintrt de la forme normale de Chomsky est que les arbres de drivations sont des arbres
binaires ce qui facilite lapplication de pas mal dalgorithmes.
Il est toujours possible de transformer nimporte quelle grammaire hors-contexte pour
quelle soit sous la forme normale de Chomsky. Notons dabord que si la grammaire est
propre, alors cela facilitera normment la procdure de transformation. Par consquent, on
suppose ici que la grammaire a t rendue propre. Donc toutes les rgles de S sont sous lune
des formes suivantes :
S
A w, w V +
A w, w ((N {S}) + V)
La deuxime forme peut tre facilement transforme en A BC. En effet, si
w = au, u V +
alors il suffit de remplacer la rgle par les trois rgles A A1 A2 , A1 a et A2 u. Ensuite,
il faudra transformer la dernire rgle de manire rcursive tant que |u| > 1.
Il reste alors transformer la troisime forme. Supposons que :
w = w1 A1 w2 A2 ...wn An wn+1 avec wi V et Ai (N {S})

49

4.4. Les formes normales

La procdure de transformation est trs simple. Si w1 6= alors il suffit de transformer cette


rgle en :
A B1 B2
B1 w1
B2 A1 w2 A2 ...wn An wn+1
sinon, elle sera transforme en :
A A1 B
B w2 A2 ...wn An wn+1
Cette transformation est applique de manire rcursive jusqu ce que toutes les rgles soient
des rgles normalises.
Exemple 30 : Soit la grammaire dont les rgles de production sont : S aSbS|bSaS|, on
veut obtenir sa forme normalise de Chomsky. On commence par la rendre propre, donc on
cre un nouvel axiome et on rajoute la rgle S S puis on applique les transformations
cites plus haut. On obtient alors la grammaire suivante : S S, S aSb|abS|bSa|baS. En
liminant les formes A B, on obtient alors la grammaire propre S aSb|abS|bSa|baS, S
aSb|abS|bSa|baS. Nous allons prsent transformer juste les productions de S tant donn
quelles sont les mmes que celles de S .
Transformation de S aSb
S AU (finale)
A a (finale)
U Sb qui sera transforme en :
U SB (finale)
B b (finale)
Transformation de S abS
S AX (finale)
X bS qui sera transforme en :
X BS (finale)
Transformation de S bSa
S BY (finale)
Y Sa qui sera transforme en :
Y SA (finale)
Transformation de S baS
S BZ (finale)
Z aS qui sera transforme en :
Z AS (finale)

4.4.2

La forme normale de Greibach

Soit G = (V, N, S, R) une grammaire hors-contexte. On dit que G est sous la forme normale
de Greibach si toutes ses rgles sont de lune des formes suivantes :
A aA1 A2 ...An , a V, Ai N {S}
A a, a V
S
Lintrt pratique de la mise sous forme normale de Greibach est qu chaque drivation, on
dtermine un prfixe de plus en plus long form uniquement de symboles terminaux. Cela

4.4. Les formes normales

50

permet de construire plus aisment des analyseurs permettant de retrouver larbre danalyse
associ un mot gnr. Cependant, la transformation dune grammaire hors-contexte en une
grammaire sous la forme normale de Greibach ncessite plus de travail et de raffinement de
la grammaire. Nous choisissons de ne pas laborder dans ce cours.