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 gures Liste des tableaux 1 Notions fondamentales en thorie des langages 1.1 Rappels sur la thorie des ensembles . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.3 1.3.1 1.3.2 1.3.3 1.4 1.4.1 1.4.2 1.5 Dnitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oprations sur les ensembles . . . . . . . . . . . . . . . . . . . . . . . . . . Notions sur les mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Longueur dun mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Concatnation des mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notions sur les langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dnition formelle des grammaires . . . . . . . . . . . . . . . . . . . . . . Classication de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . Conguration dun automate . . . . . . . . . . . . . . . . . . . . . . . . . . Classication des automates . . . . . . . . . . . . . . . . . . . . . . . . . . iv v 1 1 1 2 3 3 4 4 5 6 6 7 8 9 10 11 12 14 14 15 15 16 16 17

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

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

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

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

2 Les automates tats nis (AEF) 2.1 Gnralits sur les AEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.2 2.2.1 2.2.2 Reprsentation par table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reprsentation graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notion de dterminisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dterminisation dun automate tats ni . . . . . . . . . . . . . . . . . .

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

ii 2.2.3 2.2.4 2.3 2.3.1 2.3.2 2.3.3 2.4 2.4.1 2.4.2 2.4.3 2.5 Dterminisation dun AEF sans -transition . . . . . . . . . . . . . . . . . Dterminisation avec les -transitions . . . . . . . . . . . . . . . . . . . . . Les tats inaccessibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les tats -quivalents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Minimiser un AEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le complment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Produit dautomates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Le langage miroir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 19 20 20 20 21 22 22 24 25 27 30 30 31 31 32 32 32 33 36 36 37 37 38 40 42 42 43 45 45 46 47 47 47 48

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

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

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

3 Les langages rguliers 3.1 Les expressions rgulires E.R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.3 3.3.1 3.3.2 3.4 Utilisation des expressions rgulires . . . . . . . . . . . . . . . . . . . . . Expressions rgulires ambigus . . . . . . . . . . . . . . . . . . . . . . . . Comment lever lambigut dune E.R ? . . . . . . . . . . . . . . . . . . . . Passage de lautomate vers lexpression rgulire . . . . . . . . . . . . . . Passage de lexpression rgulire vers lautomate . . . . . . . . . . . . . . Passage de lautomate vers la grammaire . . . . . . . . . . . . . . . . . . . Passage de la grammaire vers lautomate . . . . . . . . . . . . . . . . . . . Stabilit par rapport aux oprations sur les langages . . . . . . . . . . . . Lemme de la pompe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

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

4 Les langages algbriques 4.1 4.2 Les automates piles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 4.2.1 4.2.2 4.2.3 4.3 4.4 4.3.1 Les automates piles et le dterminisme . . . . . . . . . . . . . . . . . . . Arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notion dambigut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . quivalence des grammaires hors-contextes et les automates piles . . . Les grammaires propres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les grammaires hors-contextes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Simplication des grammaires hors-contextes . . . . . . . . . . . . . . . . . . . . Les formes normales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

iii 4.4.1 4.4.2 La forme normale de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . La forme normale de Greibach . . . . . . . . . . . . . . . . . . . . . . . . . 48 49

Table des gures


2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 4.1 4.2 4.3 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 . . . . . . . . . . . . . . . . . . . Exemple dun arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . Un premier arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deuxime arbre de drivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 17 17 18 20 23 23 24 25 46 46 47

iv

Liste des tableaux


2.1 Table de transition de lautomate de la gure 2.2 . . . . . . . . . . . . . . . . . . . 16

Chapitre 1

Notions fondamentales en thorie des langages


1.1 Rappels sur la thorie des ensembles
1.1.1 Dnitions

Dnition 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 dnir un ensemble : Dnition par extension : cette dnition consiste donner tous les lments dun ensemble. Exemple : {0, 1, 2, 3, 4}. Cette dnition nest valable que si lensemble est ni. Dnition par comprhension : cette dnition consiste dnir les lments dun ensemble par les proprits qui les dnissent. En dautres termes, on crira {x|x vrie une proprit P(x)}. Exemple : {n N|n 2 = 0} dnit les nombres entiers pairs. Bien videmment, cette dnition permet de reprsenter des ensembles nis ou innis mais attention, quand mme, au paradoxe de Russel (lensemble qui contient tous les ensembles est-il un ensemble ou quoi exactement... ?) Dnition par induction : cette dnition est trs utile car elle permet de montrer facilement des proprits vries par les lments. La dnition par induction consiste dnir 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 dnition 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 vrie on montre que si P(n) est vrie alors P(n + 1) est vrie Ce principe peut tre facilement tendu toute dnition par induction. En effet, soit A un ensemble dni 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 vrie par les lments de A. On procde comme suit : pour chacun des lments triviaux de A, sassurer que P est vrie pour chaque rgle dinduction x A fi (x) A, montrer que P(x) P(fi (x)) est vrie. Ce type de dmonstration est appel dmonstration par induction.

1.1.2

Oprations sur les ensembles

Nous pouvons dnir 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 dnir 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 dni par {x|P(x) est vrie} alors les lments de tout sous-ensemble de A vrient P. Construction dautres ensembles Soient A et B deux sous-ensembles quelconques de . Supposons que A (resp. B) soit dni par comprhension avec {x|PA (x)} (resp. {x|PB (x)}). Supposons galement que A (resp. B) soit dni par induction avec {triv(A); x A fA (x) A} (resp. {triv(B); x B fB (x) B}). On dnit alors les oprations suivantes : Lunion, note A B, comporte tout lment appartenant A ou B (A B = {x|x A x B}). Cette opration peut tre dnie par comprhension avec {x|PA (x) PB (x)}. Elle peut mme tre dnie par induction avec {triv(A) triv(B); x A fA (x) A, x B f B ( x ) B }. Lintersection, note A B, comporte tout lment appartenant A et B (A B = {x|x A x B}). Elle peut tre dnie par comprhension avec {x|PA (x) PB (x)}. Malheureusement, on ne peut pas la dnir 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 dnie par comprhension avec {x|PA (x) PB (x)}. Malheureusement, on ne peut pas la dnir par induction. Le complment, not A = A. On peut le dnir par comprhension avec {x|PA (x)}. Malheureusement, on ne peut pas le dnir par induction. Le produit cartsien, not A B, est lensemble des paires (a, b) telles que a A et b B. On peut le dnir par comprhension avec {(x, y)|PA (x) PB (y)}. Il peut galement tre dni 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 inni 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 dnir certaines notions capitales qui sont les bases de cette thorie.

1.2.1

Notions sur les mots

Dnition 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.

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

Dnition 4 : Un mot (ou bien une chane) dni sur un alphabet A est une suite nie de symboles juxtaposs de A. Exemple 3 : Le mot 1011 est dni sur lalphabet {0, 1} Le mot 1.23 est dni 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 dnie 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 dnit 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 dnis sur lalphabet A. La concatnation de w1 et w2 est un mot w dni sur le mme alphabet. w est obtenu en crivant w1 suivi de w2 , en dautres termes, on colle le mot w2 la n 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 dnis 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 . 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 vrier que : (u.v)R = v R .u R . Prxe et sufxe Soit w un mot dni sur un alphabet A. Un mot x (resp. y) form sur A est un prxe (resp. sufxe) 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 prxes de w. De mme, tous les mots de lensemble {, an , an1 an , an2 an1 an , ..., a1 a2 ...an } sont des sufxes 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

Dnition 5 : Un langage est un ensemble (ni ou inni) de mots dnis sur un alphabet donn. videmment, un langage peut tre dni par extension, par comprhension ou par induction. Cette dernire manire porte une importance particulire pour les langages. Exemple 4 : Langage des nombre binaires dnies sur lalphabet {0, 1} (inni) ; Langage des mots de longueur 2 dni 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 dnis sur lalphabet X, on dnit 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 = {w|u1 , u2 , ...un L : w = u1 u2 ...un } ;
n

fois

1.3. Grammaire (systme gnrateur de langage)

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 dnir un langage comme tant un sous-ensemble quelconque de X ; 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 dnis sur lalphabet A : L = L + + { } ; L1 .( L2 .L3 ) = ( L1 .L2 ) .L3 ; L1 .( L2 + L3 ) = ( L1 .L2 ) + ( L1 .L3 ) ; L.L = L ; L1 .( L2 L3 ) = ( L1 L2 ) .( L1 L3 ) ; L1 .L2 = L2 .L1 . ( L ) = L ; L .L = L ; L1 .( L2 .L1 ) = ( L1 .L2 ) .L1 ; ( L1 + L2 ) = ( L 1 L2 ) ; L1 + L2 = ( L1 + L2 )

1.3 Grammaire (systme gnrateur de langage)


Nous avons dit plus haut que la dnition des langages par induction revte une importance particulire. En effet, une telle dnition permet de construire un langage inni 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 dnitions 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 efcaces pour le traitement des langages et enn, et cest ce qui est le plus important dans le vie courante, elle facilite lapprentissage des langages. An 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 "lle"

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 lle 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 gurent 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 gurent dans le langage nal (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

Dnition formelle des grammaires

Dnition 6 : On appelle grammaire le quadruplet (V , N, X, R) V est un ensemble ni de symboles dits terminaux, on lappelle galement vocabulaire terminal ; N est un ensemble ni (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 signie 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... Dnition 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. Dnition 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 ls 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 a S T b

1.3.3

Classication de Chomsky

La classication 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 difcile apprhender (par exemple, {an |n est premier}). Il faut savoir que plus une grammaire est complexe dnir, plus les algorithmes qui la manipulent (si jamais ils existent) sont difciles 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 difciles 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| |d|. De plus, si apparat droite alors la partie gauche doit seulement contenir S (laxiome). On peut aussi trouver la dnition 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 gure 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 vrier lexistence de w
1. Il existe galement une forme rgulire gauche

1.4. Les automates

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 inni). Si L est dni par comprhension, on peut alors vrier si w respecte la proprit du langage. Si L est dni par une grammaire, on vrie 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. Dnition 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 nie ou innie sur laquelle sera inscrit le mot lire ; Un organe de commande qui permet de grer un ensemble ni 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 naux qf Q ; Une fonction de transition (permettant de changer dtat) note .

1.4.1

Conguration dun automate

Le fonctionnement dun automate sur un mot se fait travers un ensemble de congurations. Dnition 10 : On appelle conguration 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 congurations spciales appeles conguration initiale et conguration nale.

1.4. Les automates

11

Dnition 11 : La conguration initiale est celle qui correspond ltat initial q0 et o la tte de L/E est positionne sur le premier symbole du mot lire. Dnition 12 : Une conguration nale est celle qui correspond un des tats naux qf et o le mot a t entirement lu. On dit quun mot est reconnu par un automate si, partir dune conguration initiale, on arrive une conguration nale travers une succession de congurations 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

Classication 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 classication de Chomsky est une classication 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 classication de Chomsky pour les automates consiste dnir, 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 ni (AEF) : il reconnat les langages de type 3. Sa structure est la suivante : bande en entre nie ; 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 innie ; Type 1 ou automate bornes linaires (ABL) : il reconnat les langages de type 1. Sa structure est la suivante : Bande en entre nie 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 innie. 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 ni

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 identicateurs en Pascal ; Le langage Pascal ; Exercice 2 : Trouvez les langages correspondants aux dnitions 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 dni 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 prxe 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 sufxe de w}. Calculez Suf(L) pour les langages prcdents. Exercice 5 : Dnissez 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 vrient : 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 nis (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 nis 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


Dnition 13 : Un automate tats nis est une machine abstraite dnie 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 naux (F = , 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 { }) 2 Q (qi , a) = {qj1 , ..., qjk } ou ( signie que la conguration 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 nal (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 nal. Un AEF A est donc un sparateur (ou classieur) 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 dnissant la fonction de transition soit par graphe orient. 14

2.1. Gnralits sur les AEF

15

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 sufsante pour dnir tout lautomate puisquil faut prciser ltat initial et les tats naux. Exemple 8 : Lautomate qui reconnat les mots de la forme an bm (n suivant : ({a, b}, {0, 1}, 0, {1}, ) tel que est donne par la table : tat 0 1 a 0 b 1 1 0, m > 0) est le

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 nal ; 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 nal 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 dnie, alors on raccorde le sommet qi au sommet qj par un arc dcor par le symbole a. Ltat initial est dsign par une che entrante au sommet correspondant tandis que les tats naux sont marqus un double rond. Le schma suivant reprend lautomate prcdent :
b 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 .

2.2. Les automates et le dterminisme tat 0 1 2 a 0,1 2 b 0 2 2

16

Table 2.1 Table de transition de lautomate de la gure 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 efcaces 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 dnition des AEF davoir des -transitions, cest--dire des transitions dcores avec . Lexistence dune -transition entre les tats qi et qj signie que lon na pas besoin de lire un symbole pour passer de qi vers qj (attention ! linverse nest pas possible). Voyons maintenant une dnition formelle de la notion du dterminisme pour les AEF. Dnition 14 : Un AEF (X, Q, q0 , F, ) est dit dterministe si les deux conditions sont vries : 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 dnis 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 nal). La gure 2.2 reprend le mme automate :

2.2. Les automates et le dterminisme

17

a,b a

a,b

Figure 2.2 Lautomate des mots contenant le facteur ab

Exemple 10 : Lautomate donn par la gure 2.3 reconnat le mme langage que le prcdent mais en utilisant des -transitions.
6 7 b a 8

1 2

a 3 b a 4 b 5

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

2.2.2

Dterminisation dun automate tats ni

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 ni dterministe qui reconnat les mots dun certain langage, alors on peut commencer par trouver un AEF non dterministe (ce qui est plus facile). Il suft de le transformer, aprs, pour obtenir un automate tats nis dterministe.
2. Notons que cette notion nest pas limites aux seuls AEF

2.2. Les automates et le dterminisme

18

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 : E(1) = q E(0) (q , a) 3- Recommencer ltape 2 pour toutes les transitions possibles et pour chaque nouvel ensemble E(i) ; E(i) = q E(i1) (q , a) 4- Tous les ensembles contenant au moins un tat nal du premier automate deviennent naux ; 5- Renumroter les tats en tant qutats simples. Pour illustrer cet algorithme, nous allons lappliquer lautomate donn par la gure 2.2. La table suivante illustre les tapes dapplication de lalgorithme (les tats en gras sont des tats naux) : 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 gure 2.4 donne lautomate obtenu. Cet automate nest pas vident trouver mais grce lalgorithme de dterminisation, on peut le construire automatiquement.
a b a

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

2.2. Les automates et le dterminisme

19

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 dnition. Dnition 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 gure 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 nal du premier automate deviennent naux ; 5- Renumroter les tats en tant qutats simples.

Exemple 12 : Appliquons maintenant ce dernier algorithme lautomate de la gure 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 gure 2.4) :

tat 0 1 2 3

a 1 1 3 3

b 0 2 2 2

2.3. Minimisation dun AEF dterministe

20

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

Dnition 16 : Un tat est dit inaccessible sil nexiste aucun chemin permettant de latteindre partir de ltat initial. Daprs la dnition, 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

Dnition 17 : Deux tats qi et qj sont dits -quivalents sils permettent datteindre les tats naux 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 nal partir de qi et qj . Par consquent, ces tats reconnaissent le mme langage. La gure 2.5 montre un exemple dtats -quivalents car ltat qi atteint les tats naux via le mot a, de mme pour ltat qj . Lalgorithme de minimisation consiste donc fusionner simplement ces tats pour nen faire quun.
a

qi

qf

qj

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.

2.3. Minimisation dun AEF dterministe

21

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 naux et B contenant les tats non naux ; 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 nal devient un tat nal ; La fonction de transition est dnie 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 dnie. 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 naux 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} ;

2.4. Oprations sur les automates

22

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 signie 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 dni par le quintuplet (X, Q, q0 , F, ) reconnaissant le langage L. Lautomate reconnaissant le langage inverse (cest--dire L ou X L) est dni par le quintuplet (X, Q, q0 , Q F, ) (en dautres termes, les tats naux deviennent non naux et vice-versa). Cependant, cette proprit ne fonctionne que si lautomate est complet : la fonction est compltement dnie pour toute paire (q, a) Q X comme le montre les exemples suivants. Exemple 14 : Soit le langage des mots dnis 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 dnis sur {a, b, c} contenant exactement deux a (gure 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 suft de rajouter un tat non nal E (on le dsignera comme un tat derreur) tel que (2, a) = E. Considrons la n lautomate de la gure 2.8. Les deux automates reconnaissent le mot a ce qui signie que les deux automates ne reconnaissent pas des langages complmentaires.

2.4. Oprations sur les automates

23

b,c

a,b,c

c l'inverse b,c a a,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.

2.4. Oprations sur les automates

24

b a

0 a,b a 2

l'inverse? b a

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 suft juste de le transformer en un automate complet et de lui appliquer, ensuite, lalgorithme. Comment rendre un automate complet ?

2.4.2

Produit dautomates

, F , ) deux automates tats Dnition 18 : Soit A = (X, Q, q0 , F, ) et A = (X , Q , q0 , F , ) dni nis. On appelle produit des deux automates A et A lautomate A (X , Q , q0 comme suit : X = X X ; Q = Q Q ; = (q , q ) ; q0 0 0 F = F F ; ((q, q ) , a) = ((q, a), (q , a))

Cette dnition 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

2.4. Oprations sur les automates

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 gure 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 nal 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 (1) a,b,c a,b,c a,b,c 0,0' 0 a 1 a 2 a,b,c (2) a,b,c 1,0' a,b,c a 2,0' 2' a,b,c a,b,c (3) a,b,c b a b b 0,1' a 1,1' a 2,1' b b 0,2' a 1,2' a,b,c a,b,c a,b,c a,b,c

a,b,c

a,b,c a b 2,2'

0'

1'

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 suft juste dinverser les sens des arcs de lautomate et le statut initial/nal des tats initiaux et naux. Notons, par ailleurs, que lautomate AR peut contenir plusieurs tats initiaux ce qui signie quil est le plus souvent non dterministe. Pour liminer le problme des multiples tats initiaux, il suft de rajouter un nouvel tat initial et de le raccorder aux anciens tats naux 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 modier lalgorithme prcdent comme suit : si lautomate de base possde plusieurs tats naux, 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 naux). 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.

2.5. Exercices de TD

27

2.5 Exercices de TD
Exercice 1 : Soit lautomate suivant :
a 0 a 2 a a b 1 b

Dterminisez et minimisez-le si ncessaire. Exercice 2 : Dterminisez et minimisez si ncessaire lautomate suivant :


b a, a b 2 a

0 b 3

1 b

Exercice 3 : Minimisez lautomate suivant (ltat initial est 1, les tats naux 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 nis 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 ;

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)).

28

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 gure suivante.
4 Zone autorise 3 2
H

Position possible

1 0 0

G B D

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 nis. 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


Dnition 19 : Soit X un alphabet quelconque ne contenant pas les symboles {, +, |, ., (, )}. Une expression rgulire est un mot dni 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 2. (a|b) 0) ; : 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

3.1. Les expressions rgulires E.R

31

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 chiers 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 Signication 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 n 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 dnition des expressions rgulires donnes par la section 3.1.

3.1.2

Expressions rgulires ambigus

Dnition 20 : Une expression rgulire est dite ambigu sil existe au moins mot pouvant tre mis en correspondance avec lexpression rgulire de plusieurs faons. Cette dnition 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 : aa
a

b
b

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

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 = abaab = ab .a. ab
(a|b) (a|b)

aba .a.
(a|b)

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 xe 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 nis
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 ni 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 nis

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 suft 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 gure suivante :
b a 0 b b 1 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 Dnition 21 : Soit w un mot dni 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 nis Proprits des drives
n ( 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 .

34

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 nal ; 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 nal) : 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 vrier 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 ni. En dautres termes, lapplication de la mthode des drives un langage non rgulier produit un nombre inni 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 nis
a

35

Si r = st alors il suft de trouver lautomate As qui reconnat s et lautomate At qui reconnat t. Il faudra, ensuite relier chaque tat nal de As ltat initial de At par une -transition. Les tats naux de As ne le sont plus et ltat initial de At ne lest plus :
s ... ... ... t ...

Si r = s|t alors il suft 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 ... ... t ... ...

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

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

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

36

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

3.2.3

Passage de lautomate vers la grammaire

Du fait de lquivalence des automates tats nis 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 nal 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 dnie 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 suft dappliquer lalgorithme suivant : 1. Associer un tat chaque non terminal de N ; 2. Ltat initial est associ laxiome ;

3.3. Proprits des langages rguliers 3. Pour chaque rgle de production de la forme A , ltat qA est nal ;

37

4. Pour chaque rgle de production de la forme A a (a V ), alors crer un nouvel tat nal 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 ; Enn, 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 nal/non nal 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/nal 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 nie de langages rguliers reprsente un langage rgulier. Ainsi, on peut dire que tout langage ni reprsente un langage rgulier. Lunion innie 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 dafrmer si un langage est rgulier ou non. Avant toute discussion, on peut dj annoncer que tout langage ni 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 ni quelconque, sa grammaire ainsi que lE.R qui le reprsente. A prsent, nous allons annoncer un critre dont la vrication permet de juger si un langage nest pas rgulier. Il sagit en fait dune condition sufsante 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 inni dni 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| n ; xyi z L pour tout i > 0. Il est noter que cette condition est sufsante et non ncessaire. Il existe, en effet, des langages non rguliers vriant ce critre. Il existe nanmoins une condition ncessaire et sufsante 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 vrions le critre de la pompe. Soit un mot w = ak bl (k + l 1). Si k > 0 alors il suft 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 suft de prendre x = , y = b et z = bl1 pour vrier 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 vrie 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| n, y = 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.

3.3. Proprits des langages rguliers

39

(i 1)l est 1, ce qui signie 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 suft 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 inni dni 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.

3.4. Exercices de TD

40

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 identicateurs en Pascal ; les noms de chiers 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 b 3 a

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

3.4. Exercices de TD

41

b,c a 0 b,c b 1 a

a 2

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 vri, 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 nis, 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 nis. Ils utilisent une (et une seule) pile pour reconnatre les mots en entre. Dnition 22 : Un automate pile est dni 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 signiant que la pile est vide ; Q est lensemble des tats possibles ; q0 est ltat initial ; F est lensemble des tats naux (F = , F Q) ; est une fonction de transition permettant de passer dun tat un autre : : Q (X {}) Q ( {}) (qi , a, b) = (qj , c) ou ( signie que la conguration 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 ni 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 conguration dun automate pile consiste donc dnir 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) signie 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) signie 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) signie 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) signie 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 , ) signie 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 nal. 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 nal. 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 ({a, b}, {A, }, {q0 , q1 , q2 }, q0 , {q2 }, ) tel que est dnie 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 : 0) est le suivant : A =

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 nal 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 nis, la notion du dterminisme nest pas propre ceux-l. Elle est galement prsente dans le paradigme des automates piles. On peut donc dnir un automate pile dterministe par : Dnition 23 : Soit lautomate pile dni 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 (qi , a, A) = (qj , B).

44

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 nal) : (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 : Dnition 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 dnition, 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. Dnition 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 ls 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 gure 4.1.

4.2. Les grammaires hors-contextes

46

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, dni une expression rgulire ambigu comme tant une expression rgulire pouvant coller un mot de plusieurs manire. Par analogie, nous dnissons 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 (gures 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 1 E * E 0

Figure 4.2 Un premier arbre de drivation


4. Nous considrons le contexte de lalgbre de Boole

4.3. Simplication des grammaires hors-contextes


E E * E

47

E 1

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 Simplication des grammaires hors-contextes


4.3.1 Les grammaires propres
Une grammaire hors-contexte (V , N, S, R) est dite propre si elle vrie : A u R : u = ou A = S ; A u R : S ne gure pas dans u ; A u R : u / N; Tous les non terminaux sont utiles, cest--dire quils vrient : A N : A est atteignable depuis S : , (N + V ) : S A ; A N : A est productif : w V : A w.

4.4. Les formes normales

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 : 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 suft 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})

4.4. Les formes normales

49

La procdure de transformation est trs simple. Si w1 = alors il suft 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 (nale) A a (nale) U Sb qui sera transforme en : U SB (nale) B b (nale) Transformation de S abS S AX (nale) X bS qui sera transforme en : X BS (nale) Transformation de S bSa S BY (nale) Y Sa qui sera transforme en : Y SA (nale) Transformation de S baS S BZ (nale) Z aS qui sera transforme en : Z AS (nale)

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 prxe 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 rafnement de la grammaire. Nous choisissons de ne pas laborder dans ce cours.

Vous aimerez peut-être aussi