Beruflich Dokumente
Kultur Dokumente
Ralis par :
Dr. T. BENOUHIBA
(Dernire mise jour : 15 avril 2011)
iv
1.1
1.2
1.3
1.4
1.5
1.1.1
Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.3.1
Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2
1.3.3
Classification de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les automates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1
10
1.4.2
11
Exercices de TD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.2
14
14
2.1.1
15
2.1.2
Reprsentation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
16
2.2.1
Notion de dterminisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.2.2
17
ii
2.3
2.4
2.5
2.2.3
18
2.2.4
19
20
2.3.1
20
2.3.2
20
2.3.3
Minimiser un AEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
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.2
3.3
3.4
30
3.1.1
31
3.1.2
31
3.1.3
32
32
3.2.1
32
3.2.2
33
3.2.3
36
3.2.4
36
37
3.3.1
37
3.3.2
Lemme de la pompe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Exercices de TD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.3
4.4
30
42
42
4.1.1
43
45
4.2.1
Arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
4.2.2
Notion dambigut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.2.3
47
47
4.3.1
47
48
iii
4.4.1
48
4.4.2
49
2.9
4.1
4.2
4.3
2.4
2.5
2.6
2.7
2.8
iv
15
17
17
18
20
23
23
24
25
46
46
47
16
Chapitre 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.2
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.1
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 ;
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
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
n fois
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
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 ?).
fois
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.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.2
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
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.
10
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
11
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
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
15
2.1.1
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
2.1.2
Reprsentation graphique
a
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
a
0,1
2
b
0
2
2
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
a,b
a,b
a
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
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.3
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.4
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.
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.1
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
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
21
2.3.3
Minimiser un AEF
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
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.1
Le complment
23
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
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
25
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)
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
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
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
30
31
3.1.1
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)
3.1.2
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
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.
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
3.2. Les langages rguliers, les grammaires et les automates tats finis
33
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
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
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 = 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
3.2.3
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
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 ;
37
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) ;
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
(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
Chapitre 4
43
4.1.1
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
44
(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) = (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
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.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.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
47
E
1
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
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.
A N : A est productif : w V : A
w.
48
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 :
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.2
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
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.