Você está na página 1de 85

Licence dinformatique

Universit de Marne-la-Valle e e

AUTOMATES ET GRAMMAIRES Edition 20042005 Jean Berstel

Table des mati`res e

Table des mati`res e

1 Mots, langages, quations, codes e 1.1 Mots . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Langages . . . . . . . . . . . . . . . . . . . . . 1.3 Equations . . . . . . . . . . . . . . . . . . . . . 1.3.1 Complments sur les quations . . . . . e e 1.4 Codes . . . . . . . . . . . . . . . . . . . . . . . 1.4.1 Dnition des codes . . . . . . . . . . . e 1.4.2 Messages courts . . . . . . . . . . . . . . 1.4.3 Unicode . . . . . . . . . . . . . . . . . . 1.4.4 Unicode et UTF . . . . . . . . . . . . . 1.4.5 Complment : algorithme de Sardinas et e

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Patterson

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 4 5 6 7 8 8 9 10 11 11 14 14 15 15 16 17 21 22 22 23 26 27 30 30 33 35 36 38 39 40 43 45 45 46

2 Automates 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . 2.2 Automates nis . . . . . . . . . . . . . . . . . . . . . 2.2.1 Dnition . . . . . . . . . . . . . . . . . . . . e 2.2.2 Exemples . . . . . . . . . . . . . . . . . . . . 2.2.3 Automates dterministes . . . . . . . . . . . . e 2.2.4 Automates asynchrones . . . . . . . . . . . . 2.3 Langages rationnels . . . . . . . . . . . . . . . . . . . 2.3.1 Langages rationnels : dnitions . . . . . . . e 2.3.2 Expressions rationnelles . . . . . . . . . . . . 2.3.3 Algorithme de Thompson . . . . . . . . . . . 2.3.4 Le thor`me de Kleene . . . . . . . . . . . . . e e 2.3.5 Complment : lalgorithme de McNaughton et e 2.3.6 Syst`mes dquations linaires . . . . . . . . . e e e 2.4 Le lemme ditration . . . . . . . . . . . . . . . . . . e 2.5 Oprations . . . . . . . . . . . . . . . . . . . . . . . e 2.5.1 Morphismes et substitutions . . . . . . . . . . 2.5.2 La puissance des Lp,q . . . . . . . . . . . . . 2.6 Automate minimal . . . . . . . . . . . . . . . . . . . 2.6.1 Quotients . . . . . . . . . . . . . . . . . . . . 2.6.2 Equivalence de Nerode . . . . . . . . . . . . . 2.7 Calcul de lautomate minimal . . . . . . . . . . . . . 2.7.1 Calcul de Moore . . . . . . . . . . . . . . . . 2.7.2 Algorithme de Moore . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Yamada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Version 19 septembre 2004

Table des mati`res e 2.8 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.1 Editeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.2 Digicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 49 49 51 53 53 53 53 56 56 58 58 58 61 62 63 63 65 67 67 68 72 72 76 79 80

3 Grammaires 3.1 Gnralits . . . . . . . . . . . . . . . . . . . . . e e e 3.1.1 Introduction . . . . . . . . . . . . . . . . 3.1.2 Dnition . . . . . . . . . . . . . . . . . . e 3.1.3 Arbre de drivation . . . . . . . . . . . . e 3.1.4 Drivations gauche et droite . . . . . . . . e 3.1.5 Drivations et analyse grammaticale . . . e 3.2 Oprations . . . . . . . . . . . . . . . . . . . . . e 3.2.1 Lemmes . . . . . . . . . . . . . . . . . . . 3.2.2 Oprations . . . . . . . . . . . . . . . . . e 3.3 Complment : syst`mes dquations . . . . . . . . e e e 3.4 Vrications . . . . . . . . . . . . . . . . . . . . . e 3.4.1 Grammaires rduites . . . . . . . . . . . . e 3.4.2 Grammaires propres . . . . . . . . . . . . 3.5 Formes normales . . . . . . . . . . . . . . . . . . 3.5.1 Forme normale de Chomsky . . . . . . . . 3.5.2 Forme normale de Greibach . . . . . . . . 3.6 Automates a pile . . . . . . . . . . . . . . . . . . ` 3.6.1 Dnition et exemples . . . . . . . . . . . e 3.6.2 Langages algbriques et automates a pile e ` 3.6.3 Equivalences . . . . . . . . . . . . . . . . 3.7 Lemme ditration . . . . . . . . . . . . . . . . . e

Version 19 septembre 2004

Chapitre 1. Mots, langages, quations, codes e

Chapitre 1

Mots, langages, quations, codes e

Ce chapitre introductif contient les dnitions des notions lies aux mots et aux lane e gages. Nous avons ajout une digression sur les quations, et la dnition des codes. e e e Une derni`re section contient un expos de lalgorithme de Sardinas et Patterson. e e

1.1

Mots

Un alphabet est un ensemble dont les lments sont des lettres. Les alphabets sont ee toujours supposs nis. Un mot est une suite nie de lettres que lon note par simple e juxtaposition : w = a 1 a2 a n , a i A . Le mot vide est le seul mot compos daucune lettre. Il est not ou 1. La longueur e e dun mot w est le nombre de lettres qui le composent, et est note |w|. Le mot vide est e le seul mot de longueur 0. Le produit de concatnation de deux mots x = a 1 a2 an et y = b1 b2 bm est le mot e xy obtenu par juxtaposition : xy = a1 a2 an b1 b2 bm . Bien entendu, on a |xy| = |x| + |y|. On note A lensemble des mots sur A. Exemple 1.1. Les g`nes sont des mots sur lalphabet ACGT, les protines sont des e e mots sur un alphabet a 20 lettres. Les entiers naturels, crits en base 10, sont des mots ` e sur lalphabet des dix chires dcimaux. En criture hexadcimale, sy ajoutent les e e e chires A F . Les codes dentre dans les immeubles appels digicodes sont des e e mots crits sur un alphabet a 12 symboles. e ` Soit A un alphabet. Soit B une partie de A. Pour tout mot w A , la longueur en B de w est le nombre doccurrences de lettres de B dans le mot w. Ce nombre est not |w| B . e

Version 19 septembre 2004

1.2. Langages

En particulier, |w| = |w|A . Pour toute lettre a A, |w|a est le nombre doccurrences de a dans w. On a |w|b . |w|B =
bB

Soit w = a1 an , avec a1 , . . . , an A. Le mot miroir de w est le mot not w ou w e dni par e w = an a 1 Evidemment, (uv) = v u et (w ) = w. Un mot u est prxe ou facteur gauche dun mot v sil existe un mot x tel que ux = v. e Le mot u est prxe strict ou propre si, de plus, u = v. De mani`re symtrique, u est e e e suxe ou facteur droit de v si xu = v pour un mot x. Si u = v, alors u est suxe propre ou strict. Le nombre de prxes dun mot v non vide est 1 + |v|. e Un mot u est facteur dun mot v sil existe x, y tels que v = xuy. Le mot aabab sur A = {a, b} a 12 facteurs. Lemme 1.2. (Lemme de Levy) Soient x, y, z, t des mots tels que xy = zt . Alors il existe un mot w tel que ou bien xw = z et y = wt ; ou bien x = zw et wy = t. Il en rsulte en particulier que si |x| = |z|, le mot w est vide, et donc x = z et y = t. e En dautres termes, un mono libre est simpliable a gauche et a droite. de ` ` Preuve. Posons x = a1 an , y = an+1 am avec ai A et de mme z = b1 bp , e bp+1 bq avec bi A. Comme xy = zt, on a m = q et ai = bi pour i = 1, . . . , m, de sorte que z = a1 ap et t = ap+1 am . Si |z| = p n = |x|, posons w = xp+1 xn . Alors x = zw et wy = t . Si |z| > |x|, posons w = un+1 xp . Alors xw = z et y = wt .

1.2

Langages

Les sous-ensembles de A sont appels des langages formels. Par exemple, pour A = e {a, b}, lensemble {an bn | n 0} est un langage. On dnit sur les langages plusieurs oprations. Les oprations boolennes sont lunion, e e e e lintersection, la complmentation et la dirence qui sen dduit. Si X et Y sont deux e e e parties de A , alors X Y X Y Xc X\Y = {z A | z X ou z Y } = {z A | z X et z Y } = A \ X = {z A | z X} / = X Y c = {z A | z X et z Y } / Version 19 septembre 2004

Chapitre 1. Mots, langages, quations, codes e

Le produit (de concatnation) de deux langages X et Y est le langage e XY = {xy | x X, et y Y } On a en particulier X{} = {}X = X. On vrie que e X(Y Z) = XY XZ, La deuxi`me inclusion est en gnral stricte. e e e Les puissances de X sont dnies par X 0 = {}, X 1 = X, et X n+1 = X n X pour n 1. e En particulier, si A est un alphabet, A n est lensemble des mots de longueur n. Ltoile de X est lensemble e X =
n0

X(Y Z) XY XZ

X n = {x1 xn | n 0, x1 , . . . xn X}

Lopration plus est dnie de mani`re similaire. e e e X+ =


n>0

X n = {x1 xn | n > 0, x1 , . . . xn X}

Exemple 2.1. Soit X = {a, ba}. Les mots de X , classs par longeuur, sont e 0 1 2 3 4 5 a aa, ba aaa, aba, baa aaaa, aaba, abaa, baaa, baba aaaaa, aaaba, aabaa, abaaa, ababa, baaaa, baaba, babaa

1.3

Equations

Proposition 3.1. Soient u et v deux mots non vides. Les conditions suivantes sont quivalentes : e (1) uv = vu ; (2) il existe deux entiers n, m 1 tels que u n = v m ; (3) il existe un mot w non vide et deux entiers k, 1 tels que u = w k , v = w . Preuve. (1) (3). Si |u| = |v|, alors u = v et limplication est vidente. En raisonnant e par rcurrence sur |uv|, supposons |u| > |v|. Soit alors w tel que u = vw. En reportant e dans lquation uv = vu, on obtient vwv = vvw, do` en simpliant wv = vw. Par e u rcurrence, il existe un mot x et des entiers k, 1 tels que v = w k , w = x , do` e u u = xk+ . (3) (2). Si u = w k et v = w , alors u = v k . (2) (1). La conclusion est vidente si u = v. Supposons donc |u| > |v|, et soit w tel e que u = vw. Alors un v = (vw)n v = v(wv)n = v m+1 Version 19 septembre 2004

1.3. Equations

et en simpliant la derni`re galit, (wv) n = v m . Comme v m = un = (vw)n , on a e e e (wv)n = (vw)n , donc wv = vw, ou encore uv = vu. (2) (1) (variante). On a galement u 2n = v 2m . Or e u2n = un+1 un1 = uv m un1 = v 2m = v m+1 v m1 = vun v m1 et ce mot commence par uv et par vu, donc uv = vu.

1.3.1

Complments sur les quations e e

Soient V et A deux alphabets disjoints. Une quation sur A est un couple e = (, ) e de mots de (V A) . Une quation e = (, ) est non triviale si = . e Une solution de lquation e est un morphisme h : (V A) A invariant sur A tel e que h() = h() . Une solution h est cyclique sil existe un mot w tel que h(x) w pour toute variable x. Une quation est sans constante si , V . e La proposition prcdente arme que les solutions de lquation sans constante xy = yx e e e en deux variables x, y sont cycliques. La proposition suivante en donne une extension. Proposition 3.2. Soit e = (, ) une quation non triviale, sans constante, en deux e variables x et y. Alors toute solution de e est cyclique. En dautres termes, si deux mots u et v vrient nimporte quelle relation non triviale, e ils sont puissances dun mme mot. e Preuve. Clairement, si ou est le mot vide, la seule solution est celle qui envoit x ou y (ou les deux) sur le mot vide. On peut donc supposer les deux mots non vides, et on peut supposer quils commencent et nissent pas des lettres direntes. On est donc e ramen aux quations e e xx = y y ou xy = y x La preuve est par rcurrence sur la longueur |h(x| + |h(y)| dune solution. Considrons e e une solution h(x) = u, h(y) = v de lune des quations. Si |u| = |v|, alors u = v. Sinon, e supposons |u| > |v| et posons u = vw. On obtient alors les galits e e wh()vw = vh( )v ou wh()v = vh( )vw Ceci montre que (v, w) est solution dune quation = , o` toute occurrence de x e u est remplace par xy. Comme |v| + |w| < |h(x| + |h(y)|, cette solution de la derni`re e e quation est cyclique, et donc h galement. e e Voici dautres exemples dquations : e x2 y 2 = z 2 x3 y 3 = z 3 xy = yz Version 19 septembre 2004

Chapitre 1. Mots, langages, quations, codes e

Voici maintenant deux syst`mes dquations : e e (x1 x2 x3 )i = xi xi xi 1 2 3 (x1 x2 x3 x4 )i = xi xi xi xi 1 2 3 4 i = 2, 3 i = 2, 3, 4

Ces deux syst`mes nont que des solutions cycliques. Considrons en eet le premier e e syst`me, et notons 1, 2, 3 les composantes dune solution. On a pour i = 2 apr`s sime e plication 2312 = 1223 (1) et, pour i = 3 223312 = 122233 231122 = 112223 (2) (3)

Si 1 est prxe de 23, alors 1x = 23 pour un mot x, et (2), qui dbute par 223, dbute e e e par 21x. Comme (2) dbute aussi par 12, on a e 21 = 12 Ainsi 1, 2, 12 et 23 (par lquation (1) sont puissances dun mme mot, donc 1, 2 et 3 e e galement. On raisonne de mme si 3 est suxe de 12 : on a 12 = y3, et alors (3) se e e termine par 122 = y32 et par 23, donc 23 = 32. Reste le cas o` 23 est prxe propre de 1 et 12 est suxe propre de 3. Ceci est impossible u e car alors |3| < |1| < |3| La preuve pour le deuxi`me est similaire. On conna des rsultats plus gnraux dans e t e e e cette direction, a savoir : ` Lquation e xn xn x n = y n 1 2 k pour n k na que des solutions cycliques. (Appel, Djorup, Trans. Amer. Math. Soc. 134 (1968), 461470).

1.4
1.4.1

Codes
Dnition des codes e

On appelle code toute partie C dun mono libre A qui vrie la condition suivante : de e pour tout x1 , . . . , xn , y1 , . . . ym C, x1 xn = y1 ym = n = m, xi = yi , i = 1, . . . , n En dautres termes, C est un code si tout mot de C se factorise, de mani`re unique, e en un produit de mots de C. Lorsquun ensemble nest pas un code, on sen aperoit c en gnral assez facilement, en exhibant une double factorisation. Il est plus dicile e e dtablir quun ensemble est eectivement un code. e Version 19 septembre 2004

1.4. Codes

Exemple 4.1. Lensemble {a, ab, ba} nest pas un code puisque le mot aba scrit a la e ` fois comme produit a ba et comme produit ab a. Lensemble C = {b, ab, baa, abaa, aaaa} est un code. En eet, un mot de C qui aurait deux factorisations commencerait par baa ou par abaa. Regardons le premier cas (le deuxi`me est en fait similaire). Lune des factorisations commencerait par b et lautre e par baa. Pour complter ces factorisations, il faut compenser lexc`s de la deuxi`me e e e factorisation, soit le mot aa. Pour cela, on doit ajouter a la premi`re factorisation le ` e seul mot de C commenant par aa, a savoir a 4 . La premi`re factorisation commence c ` e donc par (b, aaaa). Mais alors, la deuxi`me factorisation ne peut tre complte que e e ee 4 , et devient (baa, aaaa). On est alors revenu au point de dpart, et il ny a donc par a e pas de double factorisation possible. Les codes les plus simples sont les codes uniformes. Ce sont des ensembles dont tous les mots ont mme longueur. Par exemple, lensemble A n des mots de longueur n est e un code, si n 1. Le code ASCII qui associe a certains caract`res des mots binaires de ` e longueur 7 est un code. Une autre famille importante de codes est forme des codes prxes. Une partie X e e est dit prxe si deux lments distincts de X sont incomparables pour lordre de A e ee prxiel, donc si x, xu X implique u = 1. Une partie prxe contenant le mot vide e e est rduite au mot vide. Tout autre partie prxe est un code, appel code prxe. En e e e e + une partie prxe. Si elle ntait pas un code, il existerait des mots eet, soit X A e e x, y X, z, t X tels que xz = yt, avec x = y. Mais alors, le lemme de Levy implique que x et y sont comparables dans lordre prxiel, contradiction. e Par passage a limage miroir, on obtient la classe des codes suxes. Un code qui est a ` ` b est un la fois prxe et suxe est biprxe ou bixe. Par exemple, lensemble a ba e e code bixe.

1.4.2

Messages courts

Le service des messages courts (SMS, pour short message service) est disponible sur le tlphone. Un message est tap avec les touches des chires du clavier. A chacune ee e des touches correspondent en gnral trois lettres. Ainsi, a la touche 2 correspondent e e ` les lettres a, b et c, et a la touche 8 correspondent le t, u et v. Pour obtenir la lettre ` a, on tape 2, et pour obtenir b ou c, on tape deux ou trois fois le 2. Ainsi, pour crire e bonjour, on tape 22 pour b, 666 pour o puis une petite pause, puis 66 pour n, pour 5 (j) 666 (o) 88 (u) et 777 (r), soit en tout 22666 66566688777 Ceci est bien laborieux, et cest pourquoi il existe une version intuitive qui propose, au fur et a mesure de la frappe, le mot le plus plausible possible (ou dautres si on ` appuie sur la touche adquate). e La version normale est bien un code, au sens de la thorie des codes. Le code nest pas e prxe, puisque 66 et 666 par exemple sont des mots du code. Il y a un mot spcial dans e e le code, lespace ou blanc, qui sert de sparateur. Le code SMS, sil nest pas prxe, e e Version 19 septembre 2004

10

Chapitre 1. Mots, langages, quations, codes e

est a dlai de dchirage 1. Par dnition, ceci signie quil sut de conna la lettre ` e e e tre suivante pour savoir si ce que lon vient de lire est un mot du code ou non. Par exemple, si on a vu un 6, cela peut tre un m ou le dbut dun n ou dun o. Le symbole suivant e e permet de dcider si cest le code dun m : cest le cas si le symbole suivant est tout e sauf un 6.

1.4.3

Unicode

Les caract`res dun texte sont reprsents, dans les supports lectroniques, sous forme e e e e de squences de bits, en gnral groups en octets. e e e e Historiquement, les premiers codes de caract`res sont US-ASCII et ISO-8859-1. Le e premier code 128 symboles sur 7 bits, le deuxi`me code sur 8 bits 256 caract`res. Ce e e que lon appelle Unicode ou UCS (Universal Character Set) est une convention de codage de caract`res sur 16 bits. e En fait, lensemble de caract`res Unicode est dni, maintenu et dvelopp par deux e e e e entits qui heureusement coop`rent et qui dnomment de deux faons direntes e e e c e (presque) la mme chose : e Unicode standard est gr par le Unicode Consortium (Californie), une organisaee tion sans but lucratif nance par les constructeurs informatique amricains e e ISO/IEC 10646 Universal Multiple-Octet Coded Character Set (UCS) est gr par ee le Joint technical committee numro 1 de lISO (International Organization for e Standardization) et IEC (International Electronical Commission). Lunicode dun caract`re est donc de 16 bits. Les codes des caract`res sont choisis avec e e soin. Ainsi, pour les 128 caract`res qui gurent dans le code ASCII, le premier octet de e lunicode est nul et le deuxi`me est le code ASCII usuel. De mme pour ISO-8859-1. e e En fait, chaque caract`re est dni par un nom (par exemple Latin capital letter A, et e e un numro (par exemple U+0041) qui est son indice dans la table. Il faut distinguer le e caract`re (aussi appel script) de son image telle quelle appara par exemple sur une e e t feuille de papier (aussi appel glyph). La forme (italique, sans jambage, taille, etc) ne e gure pas dans lunicode. En revanche, il y a une dirence entre le a latin et le grec, e entre majuscules et minuscules, etc. Unicode ne concerne que le texte crit, a lexception notable de la notation musicale. e ` Les 65536 entres ne sont pas toutes remplies (la version 3.0 de Unicode contient 49194 e caract`res), mais d`s a prsent, ne susent pas pour couvrir lensemble des besoins e e ` e prvus. Un mcanisme dextension est dj` en vue. En fait, le comit ISO avait envisag, e e ea e e au dpart, le codage de chaque caract`re sur 31 bits. Le codage sur 16 bits est considr e e ee comme le premier BMP (Basic Multilingual Plane). Dans la pratique, des sous-ensembles ne contenant que des caract`res utiliss frqueme e e ment ont t dnis. Ainsi ee e Windows Glyph List (version 4 : WGL4) contient 650 caract`res. e Des sous-ensembles europens MES-1, MES-2, MES-3 ont t dnis. Dans MES-1 e ee e il y a 335 caract`res latins, correspondant aux caract`res contenus dans ISO 8859, e e parties 1, 2, 3, 4, 9, 10, 15. MES-2 contient 1024 caract`res, MES-3 en contient 2819. e JIS est un ensemble de caract`res pour le japonais. e Version 19 septembre 2004

1.4. Codes

11

1.4.4

Unicode et UTF

Reprsenter un texte en unicode est une perte de place, dans la plupart des cas. En e eet, en gnral on crit en franais ou en anglais avec un jeu de caract`res qui e e e c e tient sur 8 bits, voire sur 7 bits. Le codage UTF (Unicode Transformation Format, ou Uniform Transfert Format) re mdie a cet inconvnient. Le codage prsent ici est UTF-8, dautres variantes existent. e ` e e e Le codage est a longueur variable. A chaque caract`re unicode (sur 2 octets) est associ ` e e un codage UTF sur 1, 2, ou 3 octets, selon la rpartition suivante e les caract`res de 0 a 127 (de U+0000 a U+007F) sont cods sur un octet ; e ` ` e les caract`res de 128 a 2047 (de U+0080 a U+07FF) sont cods sur deux octets ; e ` ` e les caract`res de 2048 a 65535 (de U+0800 a U+FFFF) sont cods sur trois octets. e ` ` e Le codage est comme suit. Les caract`res de 0 a 127 sont cods comme les octets de 0x00 a 0x7F. Ceci signie e ` e ` que les textes qui contiennent de lASCII sur 7 bits ont le mme codage en ASCII et e en UTF-8. Aussi, le bit le plus fort du code dun tel caract`re est nul. Il a donc la e forme 0xxxxxxx. Pour les caract`res de 128 a 2047, le premier octet commence par 110 et le deuxi`me e ` e par 10. Il reste 5 bits dans le premier octet et 6 bits dans le deuxi`me. Ces 11 e bits susent pour reprsenter les nombres jusqu` 2047. Un code a donc la forme e a 110xxxxx 10xxxxxx. Pour les caract`res de 2048 a 65535, le premier octet commence par 1110 et les deux e ` suivants par 10. Un code a donc la forme 1110xxxx 10xxxxxx 10xxxxxx.Il reste 4 + 6 + 6 = 16 bits, susants pour reprsenter les caract`res. e e Exemple 4.2. Le caract`re U+00A9 = 1010 1001 qui est le signe de copyright est e cod en 11000010 1010 1001. e Le caract`re U+2260 = 0010 0010 0110 0000 (signe dirent) est cod par les trois e e e octets 11100010 10001001 10100000 = 0xE2 0x89 0xA0. Notons que le dcodage se fait en examinant les premiers bits de chaque octet. Si le e premier bit est nul, cest le code dun caract`re ascii. Pour les octets qui commencent e par 1, il faut regarder le bit suivant. Si cest 0, il sagit dun octet qui compl`te un e caract`re. Si cest 10, cest le dbut du code dun caract`re entre 128 et 2047, et si cest e e e 110 cest un autre caract`re. Noter quil y a des octets qui ne correspondent a aucun e ` codage. En fait, le code UTF-8 est conu mme pour les caract`res du UCS complet, cest-`c e e a dire jusqu` 31 bits. Les octets de tte de tels caract`res commencent par 1 n 0 pour a e e n = 3, 4, 5, 6, les octets de suite sont les mmes. e Il existe des variantes du codage UTF-8, nomms UTF-1, UTF-7,5, UTF-7, UTF-16. e

1.4.5

Complment : algorithme de Sardinas et Patterson e

Il est en gnral facile de tester si un code est prxe ou suxe. Lorsquun ensemble nest e e e pas un code, on sen aperoit assez facilement, en exhibant une double factorisation. Il c Version 19 septembre 2004

12

Chapitre 1. Mots, langages, quations, codes e

est plus dicile dtablir quun ensemble est eectivement un code. Par exemple, des e deux ensembles X = {b, ab, baa, abaa, aaaa}, Y = {b, ab, aab, abba}

le premier est un code, le deuxi`me ne lest pas : le mot u = abbab a les deux factorie sations ab b ab = abba b. Nous allons donner un algorithme, connu sous le nom dalgorithme de Sardinas et Patterson pour tester si un ensemble est un code. Soit donc X un ensemble de mots, non vides, sur un alphabet A. On construit un graphe G(X) = (P, U ), o` P est lensemble u des prxes non vides de mots de X, et U lensemble des couples (u, v) tels que e uv X ou v X et il existe x X tel que ux = v. / Un arc crois est un arc de la premi`re esp`ce, un arc avant un arc du deuxi`me type. e e e e Exemple 4.3. Pour X = {a, bb, abbba, babab}, lensemble P contient, en plus de X, les mots {b, ab, abb, abbb, b, ba, bab, baba}. Les arcs avant sont (a, abb), (ab, abbb), (b, ba) et (bab, baba). Les arcs croiss sont (b, b), (abb, ba), (abbb, a), (ba, bab), (bab, ab) et (baba, b). e Le graphe G(X) est donn dans la gure 4.1. e bb bb bb a abbba abb abbba ba babab bab babab abbb bb ab a b babab baba

abbba

babab Fig. 4.1 Le graphe de Sardinas et Patterson pour {a, bb, abba, babab}. Les sommets correspondant aux mots de X sont doublement cercls. Les arcs croiss e e sont tracs en pointill, et les arcs avant sont tracs en trait plein. Ltiquette de chaque e e e e arc est un mot de lensemble X. Si larc (u, v) est crois, alors ltiquette est uv, sinon e e cest le mot x tel que ux = v. Dans notre exemple, il y a un chemin qui part de a et arrive en a. En vertu du thor`me suivant, lensemble X nest pas un code (il aurait e e sut dun chemin entre deux sommets quelconques de X). Nous allons montrer la proprit suivante : ee Thor`me 4.4. Lensemble X est un code si et seulement sil ny a pas de chemin e e non trivial, dans G(X), dun sommet de X a un sommet de X. ` Version 19 septembre 2004

1.4. Codes Nous commenons par un lemme. c

13

Lemme 4.5. Il y a un chemin dun sommet x X a un sommet u P X ssi il existe ` des mots y, z X tels que yu = z. Preuve. Nous prouvons le lemme par rcurrence sur la longueur du chemin. Soit (x, u) e un arc. Sil est crois, alors xu X ; sil est un arc avant, on a xx = u pour un x X. e Dans les deux cas, la conclusion est vrie. e e Supposons lexistence dun chemin de x a u, et que yu = z. Si (u, v) est un arc crois, ` e alors y(uv) = zv X , et si (u, v) est un arc avant, on a ut = v pour un t X, donc yv = zt X. Dans les deux cas, lexistence de la factorisation est montre. e Rciproquement, supposons que yu = z, pour y, z X et u P X. Il existe t X e et w X tels que z = tw, soit encore yu = tw Si u est suxe propre de w, on a vu = w pour un mot dans P . Donc (v, u) est un arc crois, et y = tv. Si au contraire w est un suxe propre de u, on a u = vw, et (v, u) est e un arc avant. Dans ce cas yv = t. Si v X, on proc`de par rcurrence. Si v X, cest / e e larc (v, u) qui constitue le chemin cherch. e Preuve du thor`me. Considrons un chemin non trivial de x X a y X. Soit (u, y) e e e ` son dernier arc qui est ncessairement crois. On a donc t = uy X et t = y. Si u X, e e alors t X X 2 et X nest pas un code. Si u P X, il existe x , y X tels que x u = y . Mais alors x t = y y, et comme t, y X et t = y, X nest pas un code. Rciproquement, si X nest pas un code, il existe y , z X et y, z X tels que e yy=zz et y = z. On peut supposer z plus long que y ; soit u tel que uy = z Alors (u, y) est un arc crois. Si u X, larc (u, y) est un chemin de la forme cherche ; e e si u P X, lgalit y u = z prouve lexistence dun chemin dun x X a u, do` e e ` u un chemin de x a y. `

Version 19 septembre 2004

14

Chapitre 2. Automates

Chapitre 2

Automates

Dans ce chapitre, nous prsentons les bases de la thorie des automates nis. Nous e e montrons lquivalence entre les automates nis et les automates nis dterministes, e e puis nous tudions des proprits de fermeture. Nous prouvons le thor`me de Kleene e ee e e qui montre que les langages reconnaissables et les langages rationnels sont une seule et mme famille de langages. Nous prouvons lexistence et lunicit dun automate e e dterministe minimal reconnaissant un langage donn, et nous prsentons un algorithme e e e de minimisation.

2.1

Introduction

Les automates nis constituent lun des mod`les de calcul les plus anciens en informae tique. A lorigine, ils ont t conus et employs comme une tentative de modlisation ee c e e des neurones ; les premiers rsultats thoriques, comme le thor`me de Kleene, datent e e e e de cette poque. Parall`lement, ils ont t utiliss en tant quoutils de dveloppement e e ee e e des circuits logiques. Les applications les plus courantes sont a prsent la modlisation ` e e de certains mcanismes de contrle et le traitement de texte, dans son sens le plus e o gnral. Lanalyse lexicale, la premi`re phase dun compilateur, est ralise par des ale e e e e gorithmes qui reproduisent le fonctionnement dun automate ni. La spcication dun e analyseur lexical se fait dailleurs en gnral en donnant les expressions rationnelles des e e mots a reconna ` tre. Dans le traitement de langues naturelles, on retrouve les automates nis sous le terme de rseau de transitions. Enn, le traitement de texte proprement e dit fait largement appel aux automates, que ce soit pour la reconnaissance de motifs ou pour la description de cha nes de caract`res, sous le vocable dexpressions rguli`res. De e e e nombreuses primitives courantes dans les syst`mes dexploitation modernes font appel, e implicitement ou explicitement, a ces concepts. ` Le concept dtat renvoit, en pratique, a une conguration donne par lensemble e ` e des valeurs, a un moment donn, dun groupe de param`tres. Cest labstraction de ce ` e e concept vers un lment dans un ensemble ni qui est a la base de la formalisation ee ` des automates en tant que machines ayant un nombre ni dtats. Tous les mod`les e e qui g`rent des ensembles dtats et les contrlent rel`vent donc, a un degr plus ou e e o e ` e moins important, des automates nis. On peut citer la modlisation UML, les circuits, e Version 19 septembre 2004

2.2. Automates nis

15

les tables logiques, et aussi la vrication des programmes, o` les automates sont en e u gnral gigantesques et donc sont donns implicitement e e e La thorie des automates a galement connu de grands dveloppements du point de vue e e e mathmatique, en liaison troite avec la thorie des mono e e e des nis, principalement sous limpulsion de M. P. Sch tzenberger. Elle a aussi des liens profonds avec les thories u e logiques.

2.2
2.2.1

Automates nis
Dnition e

Un automate ni sur un alphabet ni A est compos dun ensemble ni Q dtats, dun e e ensemble I Q dtats initiaux , dun ensemble T Q dtats terminaux ou nals et e e dun ensemble F Q A Q de `ches. Un automate est habituellement not e e A = (Q, I, T, F) Parfois, on crit plus simplement A = (Q, I, T ), lorsque lensemble des `ches est souse e entendu, mais cette notation est critiquable car lensemble des `ches est essentiel. e Ltiquette dune `che f = (p, a, q) est la lettre a. Un calcul de longueur n dans A e e est une suite c = f1 fn de `ches conscutives fi = (pi , ai , qi ), cest-`-dire telles que e e a qi = pi+1 pour i = 1, . . . , n 1. Ltiquette du calcul c est |c| = a 1 an . On crit e e galement, si w = |c|, e w c : p1 qn ou c : p1 qn Par convention, il existe un calcul vide 1 q : q q dtiquette ou 1 (le mot vide) pour e chaque tat q. Les calculs peuvent tre composs. Etant donns deux calculs c : p q e e e e et d : q r, le calcul cd : p r est dni par concatnation. On a bien entendu e e |cd| = |c| |d|. Un calcul c : i t est dit russi si i I et t T . Un mot est reconnu sil est e ltiquette dun calcul russi. Le langage reconnu par lautomate A est lensemble des e e mots reconnus par A, soit L(A) = {w A | c : i t, i I, t T, w = |c|} Une partie X A est reconnaissable sil existe un automate ni A sur A telle que X = L(A). La famille de toutes les parties reconnaissables de A est note Rec(A ). e La terminologie qui vient dtre introduite sugg`re delle-mme une reprsentation grae e e e phique dun automate ni par ce qui est appel son diagramme dtats : les tats sont e e e reprsents par les sommets dun graphe (plus prcisment dun multigraphe). Chaque e e e e `che (p, a, q) est reprsente par un arc tiquet qui relie ltat de dpart p a ltat e e e e e e e ` e darrive q, et qui est tiquet par ltiquette a de la `che. Un calcul nest autre quun e e e e e chemin dans le multigraphe, et ltiquette du calcul est la suite des tiquettes des arcs e e composant le chemin. Dans les gures, on attribue un signe distinctif aux tats initiaux e et terminaux. Un tat initial est muni dune `che qui pointe sur lui, un tat nal est e e e repr par une `che qui le quitte. Parfois, nous convenons de runir en un seul arc ee e e Version 19 septembre 2004

16

Chapitre 2. Automates

plusieurs arcs tiquets ayant les mmes extrmits. Larc porte alors lensemble de ces e e e e e tiquettes. En particulier, sil y a une `che (p, a, q) pour toute lettre a A, on tracera e e une `che unique dtiquette A. e e

2.2.2

Exemples

Lautomate de la gure 2.1 est dni sur lalphabet A = {a, b}. e a 1 a 2 b 3 b Fig. 2.1 Automate reconnaissant le langage abA . Ltat initial est ltat 1, le seul tat nal est 3. Tout calcul russi se factorise en e e e e 1 2 3 3 avec w A . Le langage reconnu est donc bien abA . Toujours sur lalphabet A = {a, b}, considrons lautomate de la gure 2.2. e a 1 b Fig. 2.2 Automate reconnaissant le langage A aba. Cet automate reconna lensemble A aba des mots qui se terminent par aba. Lautot mate de la gure 2.3 est dni sur lalphabet A = {a, b}. e a, b b a, b a 2 b 3 a 3
a b w

Fig. 2.3 Automate reconnaissant les mots contenant au moins un b. Tout calcul russi contient exactement une fois la `che (1, b, 2). Un mot est donc e e reconnu si et seulement sil contient au moins une fois la lettre b. Lautomate de la gure 2.4 reconna lensemble des mots contenant un nombre impair t de a. Un autre exemple est lautomate vide, ne contenant pas dtats. Il reconna le e t Version 19 septembre 2004

2.2. Automates nis b a 1 a Fig. 2.4 Automate reconnaissant les mots contenant un nombre impair de a. A 1 Fig. 2.5 Tous les mots sont reconnus. 2 b

17

langage vide. A linverse, lautomate de la gure 2.5 ayant un seul tat qui est a la fois e ` initial et terminal, et une `che pour chaque lettre a A reconna tous les mots. e t Enn, le premier des deux automates de la gure 2.6 ne reconna que le mot vide, t alors que le deuxi`me reconna tous les mots sur A sauf le mot vide, cest-`-dire le e t a langage A+ . A A (i) (ii)

Fig. 2.6 Automates reconnaissant (i) le mot vide et (ii) tous les mots sauf le mot vide.

2.2.3

Automates dterministes e

Un tat q Q dun automate A = (Q, I, T, F) est accessible sil existe un calcul e c : i q avec i I. De mme, ltat q est coaccessible sil existe un calcul c : q t e e avec t T . Un automate est mond si tous ses tats sont accessibles et coaccessibles. e e e Soit P lensemble des tats qui sont a la fois accessibles et coaccessibles, et soit A 0 = e ` (P, I P, T P, F P A P ). Il est clair que A 0 est mond. Comme tout calcul e e russi de A ne passe que par des tats accessibles et coaccessibles, on a L(A 0 ) = L(A). e e Emonder un automate ni revient a calculer lensemble des tats qui sont descendants ` e dun tat initial et ascendants dun tat nal. Cela peut se faire en temps linaire en e e e fonction du nombre de `ches (darcs), par les algorithmes de parcours de graphes. e Dans la pratique, les automates dterministes que nous dnissons maintenant sont les e e plus importants, notamment parce quils sont faciles a implmenter. ` e Un automate A = (Q, I, T, F) est dterministe sil poss`de un seul tat initial (cest-`e e e a dire |I| = 1) et si (p, a, q), (p, a, q ) F q = q Version 19 septembre 2004

18

Chapitre 2. Automates

Ainsi, pour tout p Q et tout a A, il existe au plus un tat q dans Q tel que e (p, a, q) F. On pose alors, pour p Q et a A, pa= On dnit ainsi une fonction partielle e QAQ appele la fonction de transition de lautomate dterministe. On ltend aux mots en e e e posant, pour p Q, p =p et pour w A , et a A, p wa = (p w) a Cette notation signie que p wa est dni si et seulement si p w et (p w) a sont e dnis, et dans larmative, p wa prend la valeur indique. e e Avec cette notation on a, avec I = {i}, L(A) = {w A | i w T }. Un automate est dit complet si, pour tout p Q et a A, il existe au moins un tat q Q tel que (p, a, q) F. Si un automate ni A nest pas complet, on peut le e complter sans changer le langage reconnu en ajoutant un nouvel tat non nal s, et e e en ajoutant les `ches (p, a, s) pour tout couple (p, a) tel que (p, a, q) F pour tout e / q Q. Rendre un automate dterministe, cest-`-dire le dterminiser, est plus dicile, e a e et donne lieu a un algorithme intressant. ` e Thor`me 2.1. Pour tout automate ni A, il existe un automate ni dterministe et e e e complet B tel que L(A) = L(B). Preuve. Soit A = (Q, I, T, F). On dnit un automate dterministe B qui a pour ene e semble dtats lensemble (Q) des parties de Q, pour tat initial I, et pour ensemble e e dtats terminaux V = {S Q | S T = }. On dnit enn la fonction de transition e e de B pour S (Q) et a A par S a = {q Q | s S : (s, a, q) F}. Nous prouvons par rcurrence sur la longueur dun mot w que e S w = {q Q | s S : s q}. Ceci est clair si w = , et est vrai par dnition si w est une lettre. Posons w = va, e avec v A et a A. Alors comme par dnition S w = (S v) a, on a q S w si et e seulement sil existe une `che (p, a, q), avec p S v, donc telle quil existe un calcul e v w s p pour un s S. Ainsi q S w si et seulement sil existe un calcul s q avec s S. Ceci prouve lassertion. Version 19 septembre 2004
w

si (p, a, q) F, sinon.

2.2. Automates nis

19

Maintenant, w L(A) si et seulement sil existe un calcul russi dtiquette w, ce qui e e signie donc que I w contient au moins un tat nal de A, en dautres termes que e I w T = . Ceci prouve lgalit L(A) = L(B). e e La dmonstration du thor`me est constructive. Elle montre que pour un automate A a e e e ` n tats, on peut construire un automate ni dterministe reconnaissant le mme langage e e e et ayant 2n tats. La construction est appele la construction par sous-ensembles (en e e anglais la subset construction ). Exemple 2.2. Sur lalphabet A = {a, b}, considrons lautomate A reconnaissant le e langage A ab des mots se terminant par ab (gure 2.7). a 1 b Fig. 2.7 Un automate reconnaissant le langage A ab. Lapplication stricte de la preuve du thor`me conduit a lautomate dterministe a 8 e e ` e ` tats de la gure 2.8. e b a 1 a b a a, b 3 a Fig. 2.8 Lautomate dterminis. e e Cet automate a beaucoup dtats inaccessibles. Il sut de se contenter des tats ace e cessibles, et si lon na pas besoin dun automate complet, il sut de considrer la e partie monde ; dans notre exemple, on obtient lautomate complet a trois tats de la e e ` e gure 2.9. 2 b b 23 a 13 12 b a b 123 a 2 b 3

a, b

En pratique, pour dterminiser un automate A, on ne construit pas lautomate dtere e ministe de la preuve en entier avant de lmonder ; on combine plutt les deux tapes e o e en une seule, en faisant une recherche des descendants de ltat initial de lautomate e Version 19 septembre 2004

20 b 1 a b a 13 a 12 b

Chapitre 2. Automates

Fig. 2.9 Lautomate dterministe et mond. e e e B pendant sa construction. Ce parcours peut se faire en largeur ou en profondeur, de faon itrative ou rcursive. c e e Pour un parcours en largeur itratif, on maintient un ensemble R dtats de B dj` e e ea construits, et un ensemble E de transitions (S, a) qui restent a explorer et qui sont ` composes dun tat de B dj` construit et dune lettre (cet ensemble est organis en e e ea e le, par exemple). A chaque tape, on choisit un couple (S, a) dans E et on construit e ltat S a de B en se servant de lautomate de dpart A. Si ltat S = S a est connu e e e parce quil gure dans R, on passe a la transition suivante ; sinon, on lajoute a R et ` ` on ajoute a lensemble E des transitions a explorer les couples (S , a), pour a A. ` ` Exemple 2.3. Reprenons lexemple ci-dessus. Au dpart, lensemble dtats de laue e tomate dterministe est rduit a {1}, et la liste E des transitions a explorer est ({1}, a), e e ` ` ({1}, b). On dbute donc avec e R = {{1}} E = ({1}, a), ({1}, b) Choisissons la premi`re transition, ce qui donne le nouvel tat {1, 2} et les nouvelles e e transitions ({1, 2}, a), ({1, 2}, b), do` u R = {{1}, {1, 2}} E = ({1}, b), ({1, 2}, a), ({1, 2}, b) Les tapes suivantes sont (noter que lon a le choix de la transition a traiter, ici on les e ` consid`re dans lordre darrive) : e e R = {{1}, {1, 2}} E = ({1, 2}, a), ({1, 2}, b) R = {{1}, {1, 2}} E = ({1, 2}, b) R = {{1}, {1, 2}, {1, 3}} E = ({1, 3}, a), ({1, 3}, b) R = {{1}, {1, 2}, {1, 3}} E = ({1, 3}, b) R = {{1}, {1, 2}, {1, 3}} E=

Comme le sugg`re la construction, il existe des automates a n tats pour lesquels e ` e n tats. Voici, pour tout tout automate dterministe quivalent poss`de de lordre de 2 e e e e entier positif n x, un automate a n + 1 tats (gure 2.10) qui reconna le langage e ` e t aAn1 sur lalphabet A = {a, b}. Ln = A Nous allons dmontrer que tout automate dterministe reconnaissant L n a au moins e e n tats. Soit en eet A = (Q, i, T ) un automate dterministe reconnaissant L . Alors 2 e e n on a, pour v, v An : iv =iv v =v (2.1) Version 19 septembre 2004

2.2. Automates nis a 0 b Fig. 2.10 Un automate a n + 1 tats. ` e a 1 a, b 2 a, b 3 a, b a, b n

21

En eet, supposons v = v . Il existe alors des mots x, x , w tels que v = xaw et v = x bw ou vice-versa. Soit y un mot quelconque tel que wy est de longueur n 1. Alors vy = xawy Ln et v y = x bwy Ln , alors que lgalit i v = i v implique que / e e i vy = i v y, et donc que vy et vy soit sont tous deux dans Ln , soit sont tous deux dans le complment de Ln . Do` la contradiction. Limplication (2.1) montre que A a e u n tats. au moins 2 e

2.2.4

Automates asynchrones

Nous introduisons maintenant une gnralisation des automates nis, dont nous mone e trons quen fait ils reconnaissent les mmes langages. Lextension rside dans le fait e e dautoriser galement le mot vide comme tiquette dune `che. Lavantage de cette e e e convention est une bien plus grande souplesse dans la construction des automates. Elle a en revanche linconvnient daccro le nondterminisme des automates. e tre e Un automate ni asynchrone A = (Q, I, T, F) est un automate tel que F Q (A ) Q . Certaines `ches peuvent donc tre tiquetes par le mot vide. Les notions de calcul, e e e e dtiquette, de mot et de langage reconnu stendent de mani`re vidente aux autoe e e e mates asynchrones. La terminologie provient de lobservation que, dans un automate asynchrone, la longueur dun calcul peut tre suprieure a la longueur du mot qui est e e ` son tiquette. Dans un automate usuel en revanche, lecture dune lettre et progression e dans lautomate sont rigoureusement synchronises. e Exemple 2.4. Lautomate asynchrone de la gure 2.11 reconna le langage a b . t a 1 b 2

Fig. 2.11 Un automate asynchrone. Soit A = (Q, I, T ) un automate asynchrone. La clture dun tat p, note C(p), est o e e lensemble des tats accessibles de p par un chemin dont ltiquette est le mot vide : e e C(p) = {q Q | p q} . Version 19 septembre 2004

22

Chapitre 2. Automates

Proposition 2.5. Pour tout automate ni asynchrone A, le langage L(A) est reconnaissable. Preuve. Soit A = (Q, I, T ) un automate ni asynchrone sur A. Soit B = (P, I, T ) lautomate ni dni comme suit. Lensemble P des tats de B est form de I et de e e e tous les tats de A qui sont extrmits terminales dune `che de A tiquete par une e e e e e e lettre. Un triplet (p, a, q) est une `che de B sil existe un tat r C(p) et une `che e e e (r, a, q) dans A. Les tats initiaux de B sont les tats initiaux de A. Enn, un tat e e e t P est nal dans B si C(p) T = . On a alors L(A) = L(B). Reprenons notre exemple de lautomate de la gure 2.11. La construction de la preuve conduit a lautomate synchrone de la gure 2.12. ` a 1 b b 2

Fig. 2.12 Lautomate prcdent synchrone . e e En eet, il existe dans lautomate dorigine un calcul de longueur 2, de ltat 1 a ltat e ` e b : le mot vide est 2, lun portant ltiquette b. Cet automate reconna le langage a e t reconnu par le nouvel tat terminal 1. e

2.3

Langages rationnels

Dans cette section, nous dnissons une autre famille de langages, les langages ratione nels, et nous prouvons quils co ncident avec les langages reconnaissables. Grce a ce a ` rsultat, d a Kleene, on dispose de deux caractrisations tr`s direntes dune mme e u` e e e e famille de langages.

2.3.1

Langages rationnels : dnitions e

Soit A un alphabet. Les oprations rationnelles sur les parties de A sont les oprations e e suivantes : union X Y ; produit XY = {xy | x X, y Y } ; toile e X = {x1 xn | n 0, x1 , . . . , xn X}. Une famille de parties de A est rationnellement ferme si elle est ferme pour les e e trois oprations rationnelles. Les langages rationnels de A sont les lments de la plus e ee petite famille rationnellement ferme de A qui contient les singletons (cest-`-dire les e a langages rduits a un seul mot) et le langage vide. Cette famille est note Rat(A ). Une e ` e expression dun langage comme combinaison nie dunions, de produits et dtoiles de e singletons est une expression rationnelle. Considrons quelques exemples. e Le langage abA , avec A = {a, b}, est rationnel : il est le produit des singletons a et b par ltoile de A qui est lui-mme lunion des deux lettres a et b. De mme, le langage e e e Version 19 septembre 2004

2.3. Langages rationnels

23

A aba est rationnel. Toujours sur A = {a, b}, le langage L des mots qui contiennent un nombre pair de a est rationnel : cest le langage L = (ab a b) .

2.3.2

Expressions rationnelles

Le fait quun langage est rationnel est immdiat si lon dispose dune expression ratione nelle qui le dcrit. e Dans ce paragraphe, nous tudions les expressions rationnelles en elles-mmes, en faie e sant une distinction entre une expression et le langage quelle dcrit, un peu comme e lon fait la dirence entre une expression arithmtique et la valeur numrique quelle e e e reprsente. Lapproche est donc purement syntaxique, et le langage reprsent par une e e e expression peut tre considr comme rsultant dune valuation de lexpression. e ee e e Les manipulations (algbriques ou combinatoires) dexpressions permettent de cone struire des automates ecaces reconnaissant le langage reprsent par des oprations e e e qui sont proches de lanalyse syntaxique, et qui ne font pas intervenir le langage luimme. Elles se prtent donc bien a une implmentation eective. Une autre application e e ` e est la recherche de motifs dans un texte, comme elle est ralise dans un traitement de e e texte par exemple. Soit A un alphabet ni, soient 0 et 1 deux symboles ne gurant pas dans A, et soient +, , trois symboles de fonctions, les deux premiers binaires, le dernier unaire. Les expressions sur A{0, 1, +, , } sont les termes bien forms sur cet ensemble de symboles. e Exemple 3.1. Sur A = {a, b} le terme a((a + a b) b) est une expression. Comme souvent, il convient de reprsenter une expression par un arbre qui, sur cet exemple, e est larbre de la gure 3.1. a + a a b b

Fig. 3.1 Lexpression rationnelle a((a + a b) b).

Les parenth`ses ne sont utilises que lorsquelles sont ncessaires, en convenant que e e e lopration a priorit sur qui a priorit sur + ; on omet galement le signe de multie e e e plication quand cela ne prte pas a confusion. e ` Version 19 septembre 2004

24

Chapitre 2. Automates

Souvent, deux expressions ne di`rent que par des dirences mineures, comme les e e expressions 0 + a et a, ou les expressions a + b et b + a. Formellement, elles sont distinctes, mais pour la manipulation de tous les jours il convient didentier deux expressions aussi semblables. Les expressions rationnelles sur A sont les lments de ee lalg`bre quotient obtenue en convenant que e (i) lopration + est idempotente, associative et commutative, e (ii) lopration est associative et distributive par rapport a lopration +, e ` e (iii) les quations suivantes sont vries pour tout terme e : e e e 0+e =e=e+0 1e =e=e1 0e =0 =e0 (iv) on a : 0 = 1 = 1 Exemple 3.2. Par exemple, (0 + a(1 + b 1)) et (ab + a) sont la mme expression e rationnelle, alors que 1 + a a et a sont deux expressions direntes (mme si elles e e dcrivent le mme langage). e e On note E(A) lalg`bre des expressions rationnelles ainsi obtenue. La convention didene tier certaines expressions selon les r`gles que nous venons ddicter all`ge tr`s cone e e e sidrablement lcriture et lexpos ; tout ce qui suit pourrait se faire galement en ne e e e e raisonnant que sur les termes ou les arbres. Limportant est toutefois que lgalit de deux expressions est facilement dcidable sur e e e les expressions elles-mmes. Pour ce faire, on met une expression, donne disons sous e e forme darbre, en forme normale en supprimant dabord les feuilles 0 ou 1 quand cest possible en appliquant les galits (iii) ci-dessus, puis en distribuant le produit e e par rapport a laddition pour faire descendre au maximum les produits. Lorsque ` les deux expressions sont en forme normale, on peut dcider rcursivement si elles sont e e gales : il faut et il sut pour cela quelles aient mme symbole aux racines, et si les e e suites dexpressions des ls obtenues en faisant jouer lassociativit de et les ensembles e dexpressions des ls modulo lassociativit, lidempotence et la commutativit de + e e sont gaux. e Exemple 3.3. En appliquant les r`gles de simplication a lexpression (0+a(1+b1)) , e ` . Par distributivit et simplication, elle donne (a + ab) , et les on obtient (a(1 + b)) e deux expressions ls de la racine sont les mmes dans cette expression, et dans (ab+a) . e

Remarque. Dans ce qui prc`de ne gure pas lopration e e + . Cest pour ne pas e e e alourdir lexpos que nous considrons cette opration comme une abrviation de ee ; e e e e on pourrait aussi bien considrer cette opration comme opration de base. e e e A chaque expression rationnelle sur A est associ naturellement un langage rationnel e sur A, par lapplication L : E(A) (A ) Version 19 septembre 2004

2.3. Langages rationnels dnie par rcurrence comme suit : e e L(0) = , L(1) = {}, L(a) = {a}, L(e + e ) = L(e) L(e ), L(e e ) = L(e)L(e ), L(e ) = L(e)

25

Pour une expression e, le langage L(e) est le langage dcrit ou dnot par e. Deux e e e expressions e et e sont dites quivalentes lorsquelles dnotent le mme langage, ceste e e a-dire lorsque L(e) = L(e ). On crit alors e e . ` e Proposition 3.4. Pour toutes expressions rationnelles e et f , on a les formules suivantes : (ef ) 1 + e(f e) f (e + f ) e (f e ) e (1 + e + . . . + ep1 )(ep ) p>1

Cette proposition est un corollaire immdiat du lemme suivant : e Lemme 3.5. Quelles que soient les parties X et Y de A , on a (XY ) = X(Y X) Y (X Y ) = X (Y X )
p1

(3.1) (3.2) )(X )


p

X = ( X X

p>1

(3.3)

Preuve. Pour tablir (3.1), montrons dabord que (XY ) X(Y X) Y . Pour cela, e soit w (XY ) . Alors w = x1 y1 xn yn pour n 0 et xi X, yi Y . Si n = 0, alors w = , sinon w = x1 vyn , avec v = y1 xn (Y X) . Ceci prouve linclusion. Linclusion rciproque se montre de mani`re similaire. e e Pour prouver (3.2), il sut dtablir e (X Y ) X (Y X ) linclusion rciproque tant vidente. Soit w (X Y ) . Il existe n 0 et z1 , . . . , zn e e e X Y tels que w = z1 zn . En groupant les zi conscutifs qui appartiennent a X, ce e ` produit peut scrire e w = x 0 y1 x1 y m xm avec x0 , . . . , xm X et y0 , . . . , ym Y . Par consquent w X (Y X ) . e Considrons enn (3.3). On a e
p1

( X X

p1

)(X ) =
k=0 m0

X k+mp = X

Version 19 septembre 2004

26

Chapitre 2. Automates

2.3.3

Algorithme de Thompson

Nous tudions ici un procd de calcul ecace dun automate reconnaissant le langage e e e dnot par une expression rationnelle, appel algorithme de Thompson. Soit A un e e e alphabet, et soit e une expression rationnelle sur A. La taille de e, note |e|, est le e nombre de symboles gurant dans e. Plus prcisment, on a e e |0| = |1| = |a| = 1 pour aA |e | = 1 + |e|

|e + f | = |e f | = 1 + |e| + |f |,

Nous allons construire, pour toute expression e, un automate reconnaissant L(e) qui a des proprits particuli`res. Un automate asynchrone A est dit normalis sil vrie les ee e e e conditions suivantes : (i) il existe un seul tat initial, et un seul tat nal, et ces deux tats sont dise e e tincts ; (ii) aucune `che ne pointe sur ltat initial, aucune `che ne sort de ltat nal ; e e e e (iii) tout tat est soit lorigine dexactement une `che tiquete par une lettre, e e e e soit lorigine dau plus deux `ches tiquetes par le mot vide . e e e Notons que le nombre de `ches dun automate normalis est au plus le double du e e nombre de ses tats. e Proposition 3.6. Pour toute expression rationnelle e de taille m, il existe un automate normalis reconnaissant L(e), et dont le nombre dtats est au plus 2m. e e Preuve. Elle est constructive. On proc`de par rcurrence sur la taille de e. e e Pour e = 0, e = 1, et e = a, o` a A, les automates de la gure 3.2 donnent des u automates normaliss ayant 2 tats. e e

Fig. 3.2 Automates pour lensemble vide, pour et pour a. Si e = e + e , soient A = (Q , i , t ) et A = (Q , i , t ) deux automates normaliss e reconnaissant des langages X = L(e ) et X = L(e ). On suppose Q et Q disjoints. Lautomate A = (Q Q {i, t}, i, t) o` i et t sont deux nouveaux tats distincts et dont les `ches sont, en plus de celles de A u e e et de A , les quatre `ches (i, , i ), (i, , i ), (t , , t), (t , , t) reconna X X = L(e) e t (voir gure 3.3). Lautomate est normalis, et |Q| 2|e|. Si e = e e , considrons e e lautomate A = ((Q \ t ) Q , i , t ) obtenu en identiant t et i , cest-`-dire en remplaant toute `che aboutissant en a c e t par la mme `che, mais aboutissant en i (voir gure 3.3). Cet automate reconna e e t Version 19 septembre 2004

2.3. Langages rationnels

27

Fig. 3.3 Les automates pour lunion, le produit et ltoile. e le langage X X ; clairement, son nombre dtats est major par 2|e|. Enn, si e = e , e e le troisi`me automate de la gure 3.3 est un automate e A = (Q {i, t}, i, t) qui, en plus des `ches de A , poss`de les quatre `ches (i, , i ), (i, , t), (t , , i ), (t , , t) e e e reconna le langage X = L(e). Il est normalis et a 2 tats de plus que A . t e e Notons le corollaire suivant de cette construction. Proposition 3.7. Soit A un alphabet. Tout langage rationnel de A est reconnaissable : Rat(A ) Rec(A ). Exemple 3.8. Pour lexpression (a + b) b(1 + a)(a + b) , la construction de la preuve produit lautomate de la gure 3.4, dans laquelle les `ches non marques portent e e comme tiquette le mot vide. Il a 21 tats et 27 `ches. Observons quil existe de e e e

a i b b

a t b

Fig. 3.4 Lautomate pour lexpression (a + b) b(a + 1)(a + b) . nombreux chemins dont ltiquette est vide. e

2.3.4

Le thor`me de Kleene e e

Le thor`me suivant est d a Kleene : e e u` Version 19 septembre 2004

28

Chapitre 2. Automates

Thor`me 3.9 (de Kleene). Soit A un alphabet ni. Alors les langages rationnels et e e reconnaissables sur A co ncident : Rat(A ) = Rec(A ). Cet nonc est remarquable dans la mesure o` il donne deux caractrisations tr`s e e u e e direntes dune mme famille de langages : lautomate ni est un moyen de calcul, e e et se donner un langage par un automate ni revient a se donner un algorithme pour ` vrier lappartenance de mots au langage. Au contraire, une expression rationnelle e dcrit la structure syntaxique du langage. Elle permet en particulier des manipulations, e et des oprations entre langages. e La dmonstration du thor`me de Kleene est en deux parties. Une premi`re partie e e e e consiste a montrer que tout langage rationnel est reconnaissable, cest-`-dire a prouver ` a ` ) Rec(A ). Cette inclusion a t prouve dans la section prcdente. linclusion Rat(A ee e e e Linclusion oppose, a savoir, Rec(A ) Rat(A ) se montre en exhibant, pour tout e ` automate ni, une expression rationnelle. Il existe plusieurs algorithmes pour obtenir cette expression. Nous prsentons une mthode appele lalgorithme BMC (dapr`s leurs auteurs, Brzoe e e e zowski et McCluskey). Algorithme BMC. Soit A = (Q, I, T, F) un automate. On cherche une expression dnotant le langage reconnu par A. On proc`de par suppression successive de `ches e e e et dtats, en remplaant dautres tiquettes par des expressions rationnelles. e c e (1) Ajouter a A deux nouveaux tats, nots et , et les `ches (, , i) pout i I et ` e e e (t, , ) pour t T . (2) Itrer les rductions suivantes tant que possible : e e sil existe deux `ches p(, e, q) et (p, f, q), les remplacer par la `che (p, e + f, q) e e supprimer un tat q (autre que et ) et remplacer, pour tous tats p, r = q, les e e g, r) `ches (p, e, q), (q, f, q), (q, g, r), par la `che (p, ef e e Cet algorithme termine, parce que lon diminue le nombre de `ches et dtats, jusqu` e e a obtenir une seule `che (, e, ). Il est clair que e est une expression pour le langage e L(A). Exemple 3.10. Considrons lautomate de la gure 3.5. e a 2 b 1 1 a a b 3 b 1

Fig. 3.5 Un automate, augment de deux tats et . e e Supprimons ltat 2. Les couples de `ches concernes sont (1, a, 2) et (2, b, 3) dune e e e part et (3, a, 2) et (2, b, 3) dautre part. Le premier couple produit une `che de 1 vers 3 e Version 19 septembre 2004

2.3. Langages rationnels aa b aa b 1 1 b Fig. 3.6 Lautomate, apr`s suppression de ltat 2. e e 3 1

29

dtiquette aa b, le deuxi`me une boucle autour de 3, aussi avec ltiquette aa b, ce qui e e e donne lautomate de la gure 3.6. Nous pouvons maintenant supprimer par exemple ltat 1. Cela donne une `che de 1 a 3 dtiquette ba + b (on crit a+ a la place de e e ` e e ` aa ), et une boucle supplmentaire, de cette tiquette, autour de 3, soit lautomate e e de la gure 3.7 Les deux boucles sont combines en une seule, dont ltiquette est e e a+ b b a+ b 3 b+ a+ b Fig. 3.7 Lautomate prcdent, apr`s suppression de ltat 1. e e e e b+ a+ b + a+ b. En fait, cette expression dnote le mme langage que b a+ b. On a donc e e plus simplement lautomate de la gure 3.8. Il ne reste plus qu` supprimer ltat 3. On a e b a+ b b a+ b 3 1 1

Fig. 3.8 Lautomate prcdent, apr`s sommation des `ches. e e e e obtient lautomate de la gure 3.9.

(b a+ b)+

Fig. 3.9 Lautomate compl`tement rduit. e e Le langage reconnu est donc (b a+ b)+ . Pour transformer cette expression en une expression plus simple, on observe que (b a+ b)+ = (b a+ b) b a+ b et que (b a+ b) b = (b + a+ b) . Comme b + a+ b = a b, on a donc (b a+ b)+ = (a b) a+ b = (a b) a ab = (a + b) ab.

Version 19 septembre 2004

30

Chapitre 2. Automates

2.3.5

Complment : lalgorithme de McNaughton et Yamada e

Voici une autre preuve de la proposition : Proposition 3.11. Soit A un alphabet ni. Tout langage reconnaissable de A est rationnel : Rec(A ) Rat(A ). Preuve. Soit A = (Q, I, T ) un automate ni sur A, et soit X le langage reconnu. Numrotons les tats de mani`re que Q = {1, . . . , n}. Pour i, j dans Q, soit X i,j = e e e w (k) {w | i j}, et pour k = 0, . . . , n, soit Xi,j lensemble des tiquettes des calculs de e longueur strictement positive de la forme i p1 . . . ps j,
(0)

s 0,
(0)

p 1 , . . . , ps k

Observons que Xi,j A, et donc que chaque Xi,j est une partie rationnelle, parce que lalphabet est ni. Ensuite, on a Xi,j
(k+1)

= Xi,j Xi,k+1 Xk+1,k+1

(k)

(k)

(k)

Xk+1,j
(k)

(k)

(3.4)

Cette formule montre, par rcurrence sur k, que chacun des langages X i,j est rationnel. e Or X (n) si i = j i,j (3.5) Xi,j = X (n) si i = j i,j et X= Xi,t (3.6)
iI tT

et par consquent les langages Xi,j sont rationnels. Donc X est galement rationnel. e e Les formules (3.4)(3.6) permettent de calculer eectivement une expression (expression rationnelle) pour le langage reconnu par un automate ni. Cette mthode est appele e e lalgorithme de MacNaughton et Yamada, dapr`s ses crateurs. Il est tr`s simple, mais e e e 3 ) expressions X (k) pour un pas tr`s ecace dans la mesure o` il faut calculer les O(n e u i,j automate a n tats. ` e

2.3.6

Syst`mes dquations linaires e e e

Une faon parfois plus commode surtout pour les calculs a la main de dterminer c ` e lexpression rationnelle du langage reconnu par un automate consiste a rsoudre un ` e syst`me dquations linaires naturellement associ a tout automate ni. e e e e` Soit A = (Q, I, T, F) un automate ni sur A. Le syst`me dquations (linaire droit) e e e associ a A est e` Xp = Ep,q Xq p,T pQ
qQ

Version 19 septembre 2004

2.3. Langages rationnels o` u

31

Ep,q = {a A | (p, a, q) F}, {} si p T p,T = sinon Considrons par exemple lautomate de la gure 3.10. e b 1 a b a 3 a 2 b

p, q Q

Fig. 3.10 Quel est le langage reconnu par cet automate ? Le syst`me dquations associ a cet automate est e e e` X1 = bX1 aX2 X2 = aX2 bX3 X3 = bX1 aX2 Une solution du syst`me dquations est une famille (L p )pQ de langages qui vrie le e e e syst`me dquations. e e Proposition 3.12. Soit A = (Q, I, T ) un automate ni sur A, et posons Lp (A) = {w A | c : p t T, |c| = w} Alors la famille (Lp (A))pQ est lunique solution du syst`me dquations associ a A. e e e` Le langage Lp (A) est lensemble des mots reconnus par A en prenant p pour tat initial, e de sorte que Lp (A) L(A) =
pI

Nous commenons par le cas particulier dun syst`me dquations rduit a une seule c e e e ` quation. La dmarche sera la mme dans le cas gnral. e e e e e Lemme 3.13 (Lemme dArden). Soient E et F deux langages. Si E, alors lqua/ e tion X = EX F poss`de une solution unique, a savoir le langage E F . e ` Preuve. Posons L = E F . Alors EL F = EE F F = (EE )F = E F = L, ce qui montre que L est bien solution de lquation. Supposons quil y ait deux solutions e L et L . Comme L L = (EL F ) L = EL L EL EL et que EL EL E(L L ), on a L L E(L L ) E n (L L ) pour tout n > 0. Mais comme le mot vide nappartient pas a E, cela signie quun mot de L L a pour ` Version 19 septembre 2004

32

Chapitre 2. Automates

longueur au moins n pour tout n. Donc L L est vide, et par consquent L L et e de mme L L. e Preuve de la proposition. Pour montrer que les langages L p (A), (p Q), constituent une solution, posons Ep,q Lq (A) p,T Lp =
qQ

et vrions que Lp (A) = Lp pour p Q. Si Lp (A), alors p T , donc p,T = {} et e Lp , et rciproquement. Soit w Lp (A) de longueur > 0 ; il existe un calcul c : p t e pour un t T dtiquette w. En posant w = av, avec a une lettre et v un mot, le calcul e a v c se factorise en p q t pour un tat q. Mais alors a Ep,q et v Lq (A), donc e w Lp . Linclusion rciproque se montre de la mme faon. e e c Pour prouver lunicit de la solution, on proc`de comme dans la preuve du lemme e e dArden. Soient (Lp )pQ et (Lp )pQ deux solutions du syst`me dquations, et posons e e Mp = Lp Lp pour p Q. Alors Mp =
qQ

Ep,q Lq p,T Lp
qQ

(Ep,q Lq Ep,q Lq )
qQ

Ep,q Mq

A nouveau, ces inclusions impliquent que M p = pour tout p. Supposons en eet le contraire, soit w un mot de longueur minimale dans M =
pQ

Mp

et soit p un tat tel que w Mp . Alors e w


qQ

Ep,q Mq

donc w est le produit dune lettre et dun mot v de M ; mais alors v est plus court que w, une contradiction. Pour rsoudre un syst`me dquations, on peut procder par limination de variables e e e e e (cest la mthode de Gauss). Dans notre exemple, on substitue la troisi`me quation e e e dans la deuxi`me, ce qui donne e X2 = (a ba)X2 b2 X1 b qui, par le lemme dArden, quivaut a lquation e ` e X2 = (a ba) (b2 X1 b) Cette expression pour X2 est substitue dans la premi`re quation du syst`me ; on e e e e obtient X1 = (b a(a ba) b2 )X1 a(a ba) b do` , a nouveau par le lemme dArden, u ` X1 = (b a(a ba) b2 ) a(a ba) b Version 19 septembre 2004

2.4. Le lemme ditration e

33

Il nest pas du tout vident que cette derni`re expression soit gale a {a, b} ab. Pour le e e e ` montrer, observons dabord que (a ba) = a (ba+ ) (rappelons que X + = XX = X X pour tout X) en utilisant la r`gle (U V ) = e (V U ) , do` U u a(a ba) b = a+ (ba+ ) b = (a+ b)+ Il en rsulte que e b a(a ba) b2 = [ (a+ b)+ ]b = (a+ b) b do` u X1 = [(a+ b) b] (a+ b) (a+ b) = (a+ b b) (a+ b) = (a b) a ab = {a, b} ab

2.4

Le lemme ditration e

Bien entendu, tout langage ne peut tre reconnu par un automate ni. On peut prouver e directement que certains langages ne sont par reconnaissables, par une discussion sur la nature des automates qui les reconna traient. Il existe une proprit, connue sous ee le terme de lemme ditration ou lemme de ltoile (en anglais pumping lemma) qui e e donne une condition ncessaire pour quun langage soit reconnaissable. Il est alors en e gnral assez commode, a laide de cette proprit, de prouver quun langage nest pas e e ` ee reconnaissable. La proprit ditration encapsule le fait que, dans automate ni, tout calcul assez long ee e doit contenir un circuit. Proposition 4.1. (Lemme ditration) Soit K un langage reconnu par un automate e a N tats. Pour tout mot z K, et pour toute factorisation z = xyx telle que |y| N , ` e il existe une factorisation y = uvw telle que (i) |uv| N (ii) v = (iii) xuv n wx K pour tout n 0 On peut illustrer lemploi de cette proposition par un protocole entre deux acteurs, disons Alice et Bob. Alice veut convaincre Bob que le langage K quelle consid`re est e reconnaissable, et Bob veut plutt prouver le contraire. La discussion suivante sengage o entre Alice et Bob : Alice K est reconnaissable ! N tats e z est dans K ? ok |y| N ? ok Voici une factorisation y = uvw Bob Combien dtats ? e Voici un mot z Voici une factorisation z = xyx |uv| N ? ok v non vide ? ok xuv n wx K pour tout n 0 ? Version 19 septembre 2004

34

Chapitre 2. Automates

Preuve. Soit A = (Q, I, T ) un automate a N tats reconnaissant le langage K, soit ` e z = xyx un mot de K avec |y| N . On pose y = a1 a2 aN y , avec a1 , . . . , aN des lettres. Le mot z tant reconnu, il existe un chemin russi c : i t dans A dtiquette e e e z. Dcomposons ce chemin : e
1 2 N c : i q0 q1 q2 qN 1 qN p t

Parmi les n + 1 tats q0 , . . . , qN , il y en a deux dgaux par le principe des tiroirs. Soient e e k, avec 0 k < N tels que qk = q . Posons alors u = a1 ak , v = ak+1 a , u v w w = a +1 aN y . On a donc q0 qk , qk q , q p. Il en rsulte quil existe des e n w pour tout entier n 0. Par consquent, tous les mots chemins q0 p dtiquette uv e e n wx , pour n 0 sont reconnus. Par ailleurs, |v| = k > 0, donc v nest pas le xuv mot vide, et |uv| = N . Voici deux exemples dutilisation du lemme ditration pour prouver quun langage e nest pas reconnaissable. Exemple 4.2. Le langage {an bn | n 0} nest pas reconnaissable. Appelons K ce langage, et soit N lentier du lemme ditration. Soit z = a N bN K et soit x = , e N , x = bN . On a |y| = N et il existe donc une factorisation y = uvw telle que y=a uv n wx K pour tout n. Or u, v, w sont des puissances de la lettre a. Posons u = a k , v = a et w = am . On a k + + m = N et = 0. Mais alors uv 2 wx = aN + b nest pas dans K. Do` la contradiction qui montre que K nest pas reconnaissable. u Exemple 4.3. Lensemble des critures binaires des nombres premiers nest pas un e langage reconnaissable. Soit L lensemble des critures binaires des nombres premiers. e Pour tout mot binaire w, on note n(w) le nombre dcrit par w. Ainsi, n(100) = 4. e Supposons que L soit reconnaissable par un automate a N tats, et soit p un nombre ` e premier tel que p > 2N . Soit z lcriture binaire de p, de sorte que n(z) = p, et e utilisons le lemme ditration avec y = z. On a |z| N parce que p > 2 N . Il existe e une factorisation z = uvw telle que n(uv n w) est un nombre premier pour tout n 0. Maintenant, le nombre q = n(uv p w) vrie e n(uv p w) = n(u)2|w|+p|v| + n(v)2|w| (1 + 2|v| + 22|v| + + 2(p1)|v| ) + n(w) Il est commode de poser k = 2|v| . On a alors lcriture plus simple e n(uv p w) = n(u)2|w| k p + n(v)2|w| (1 + k + k 2 + + k (p1) ) + n(w) Comme 2 k 2N < p, on peut utiliser le petit thor`me de Fermat qui dit que e e k p k mod p, parce que p est premier. Il en rsulte que 1+k+k 2 + +k (p1) 1 mod p e (en eet, posons f = 1 + k + k 2 + + k (p1) ; alors (k 1)f = k p 1 k 1 mod p, donc f 1 mod p). Il en rsulte que e n(uv p w) n(u)2|w| k + n(v)2|w| + n(w) = p 0 mod p et donc que p divise q et q nest pas premier.

Version 19 septembre 2004

2.5. Oprations e

35

2.5

Oprations e

Proposition 5.1. La famille des langages reconnaissables sur un alphabet A est ferme pour les oprations boolennes, cest-`-dire pour lunion, lintersection et la e e e a complmentation. e Preuve. Soient X et X deux langages reconnaissables de A , et soient A = (Q, i, T ) et A = (Q , i , T ) deux automates nis dterministes complets tels que X = L(A) et e X = L(A ). Considrons lautomate dterministe complet e e B = (Q Q , (i, i ), S) dont la fonction de transition est dnie par e (p, p ) a = (p a, p a) pour tout couple dtats (p, p ) et toute lettre a A. Alors on a e (p, p ) w = (p w, p w) pour tout mot w, comme on le vrie immdiatement en raisonnant par rcurrence e e e sur la longueur de w. Il rsulte de cette quation que pour S = T T , on obtient e e L(B) = X X , et pour S = (T Q ) (Q T ), on obtient L(B) = X X . Enn, pour S = T (Q T ), on a L(B) = X X . Corollaire 5.2. Un langage X est reconnaissable si et seulement si X {} est reconnaissable. Proposition 5.3. Si X est reconnaissable, alors X est reconnaissable ; si X et Y sont reconnaissables, alors XY est reconnaissable. Cette proposition est une consquence immdiate du thor`me de Kleene. Nous en e e e e donnons ici une autre preuve, plus constructive. Preuve. Soit X un langage reconnaissable. Soit A = (Q, I, T, F) un automate ni reconnaissant X, et soit B = (Q, I, T ) lautomate asynchrone ayant pour `ches e F (T {} I) Montrons que lon a X + = L(B). Il est clair en eet que X + L(B). Rciproquement, e w soit c : i t un calcul russi dans B. Ce calcul peut se dcomposer en e e
n 2 1 c : i 1 t1 i2 t2 i n tn k avec i = i1 , t = tn , et o` aucun des calculs ck : ik tk ne contient de `che tiquete u e e e + . Il en rsulte videmment par le mot vide. Alors w1 , w2 , . . . , wn X, et donc w X e e que X = X + 1 est reconnaissable.

Considrons maintenant deux automates nis A = (Q, I, T, F) et B = (P, J, R, G) e reconnaissant respectivement les langages X et Y . On peut supposer les ensembles dtats Q et P disjoints. Soit alors C = (Q P, I, R) lautomate dont les `ches sont e e F G (T {} J) Alors on vrie facilement que L(C) = XY . e Version 19 septembre 2004

36

Chapitre 2. Automates

2.5.1

Morphismes et substitutions

Soient A et B deux alphabets. Une application f : A B est un morphisme si f (xy) = f (x)f (y) pour tous mots x, y A . En particulier, on a f () = , car f () = f () = f ()f (), et est le seul mot gal a son carr. Il rsulte de la dnition que si e ` e e e w = a1 an o` a1 , . . . , an A, alors f (w) = f (a1 ) f (an ). Ainsi, un morphisme est u enti`rement dtermin par sa donne sur lalphabet. e e e e Exemple 5.4. Soient A = {a, b, c} et B = {0, 1}, et soit f donne par e f: a 0 b 01 c 10

On a par exemple f (abcba) = 00110010. Notons que f (ac) = f (ba) = 010, et donc que f nest pas injectif. Exemple 5.5. Soient A = {0, 1, . . . , F } lalphabet hexadcimal et B = {0, 1}. Le e morphisme 0 0000 1 0001 9 1001 A 1010 F 1111 qui remplace chaque symbole hexadcimal par son criture binaire est injectif. e e Un morphisme f : A B est non eaant si limage dune lettre nest pas le mot c vide. Il est littral si limage dune lettre est une lettre. Un morphisme littral prserve e e e les longueurs, cest-`-dire que la longueur de limage dun mot est gale a la longueur a e ` du mot. Soit f : A B . Pour toute partie K de A , on note f (K) =
wK

f (w)

Par exemple, dans lexemple 5.4, on a f (a b) = 0 01. Si f est un morphisme, on a les formules suivantes, pour K, K A : f (K K ) = f (K) f (K ) f (KK ) = f (K)f (K ) f (K ) = (f (K)) Une substitution est une gnralisation des morphismes. Une substitution de A dans e e B est une application de A dans lensemble (B ) des parties de B vriant, pour e tous x, y A (xy) = (x)(y) Version 19 septembre 2004

2.5. Oprations e et, de plus () = {} .

37

Bien noter que, dans la premi`re formule, le produit dans le membre droit est le proe duit densembles. A nouveau, (a1 an ) = (a1 ) (an ), et une substitution est enti`rement dtermine par la donne sur lalphabet. e e e e Une substitution est dite rguli`re si les langages (a), pour a A, sont rguliers. Un e e e morphisme est une substitution particuli`re, o` limage de chaque lettre est rduite a e u e ` un mot. Un morphisme est une substitution rguli`re. e e Exemple 5.6. Considrons le langage a b sur A = {a, b}, et dnissons une substitue e dans B , avec B = {0, 1}, par tion de A : a 10 b1

Cest une substitution rguli`re. On obtient (b) = {1}, (ab) = 10 1, (a2 b) = 10 10 1 e e et nalement (a b) = 1B 1 {1}. Exemple 5.7. Considrons lalphabet A = {a, b}, et deux substitutions et de A e dans lui-mme dnies par e e : a a+ bb : a {an bn | n 1} bb

La substitution est rguli`re, la substitution ne lest pas. On a e e ({an bn | n 1}) = {an1 ban2 b ank b1+k | k 1, n1 , . . . , nk 1} et (a+ b+ ) = {an1 bn1 an2 bn2 ank bnk +m | k 1, n1 , . . . , nk 1, m 1}

Proposition 5.8. Limage dun langage rgulier par une substitution rguli`re est un e e e langage rgulier. e Preuve. Soit K un langage rgulier, et e une expression rguli`re qui le dnote. Soit une e e e e substitution rguli`re, et associons a toute lettre a, une expression rguli`re e a dnotant e e ` e e e le langage (a). Alors le langage (K) est dnot par lexpression rguli`re obtenue en e e e e remplaant, dans e, toutes les occurrences de lettres par lexpression associe. c e Exemple 5.9. Pour illustrer la construction de la proposition, considrons la substie tution rguli`re e e a a : bb voisine de celle de lexemple prcdent. Pour le langage K des mots de longueur paire e e par exemple, on a lexpression rguli`re ((a + b)(a + b)) . Le langage (K) a pour e e + b)(a + b)) . expression rguli`re ((a e e Version 19 septembre 2004

38

Chapitre 2. Automates

Corollaire 5.10. Limage homomorphe dun langage rgulier est un langage re e gulier. Proposition 5.11. Soit f : A B un morphisme. Si L est un langage rgulier sur e 1 (L) est un langage rgulier sur A. B, alors f e Preuve. Soit B = (Q, I, T ) un automate ni sur B reconnaissant L. On construit un automate A = (Q, I, T ) sur A par (p, a, q) est une `che de A si et seulement sil existe e un chemin de p a q dans B dtiquette f (a). Soit K = L(A). On a K = f 1 (L). ` e Montrons dabord que K f 1 (L). Soit w K. Si w est le mot vide, alors I T = w et L. Si i y est un chemin russi pour w dans A, on remplace chaque `che e e (p, a, q) de ce chemin par le chemin p q dans B. Ceci donne un chemin russi i t e 1 (L). dans B. Donc f (w) L et w f Rciproquement soit w f 1 (L). Il existe x L tel que f (w) = x. Posons w = a 1 an , e o` a1 , . . . , an sont des lettres. On a x = x1 xn , avec xk = f (ak ) pour k = 1, . . . , n. u x Un chemin russi i t dans B se factorise en e
n 1 2 i p1 p2 pn1 t n 1 2 Pour chacun des chemins i p1 , p1 p2 , . . ., pn1 t de B, il existe par construction une `che (i, a1 , p1 ), (p1 , a2 , p2 ), . . ., (pn1 , an , t) dans lautomate A. Il existe donc e w un chemin russi i t dans A, ce qui montre que w K, do` linclusion rciproque e u e et lgalit. e e

f (a)

f (w)

2.5.2

La puissance des Lp,q

De nombreuses proprits de fermeture des langages rguliers viennent dune tude des ee e e langages reconnus par un automate ni lorsque lon change dtat initial ou terminal. e Commenons par introduire les notations : Soit A = (Q, I, T ) un automate ni sur A. c Pour tout couple dtats (p, q) on pose L p,q (A), ou Lp,q lorsque le contexte le permet, e le langage Lp,q = {w A | c : p q, w = |c|} Ainsi, Lp,q est lensemble des mots reconnus par lautomate en prenant p comme unique tat initial et q comme unique tat terminal. Bien entendu, on a e e L(A) =
iI,tT

Li,t

Une formule utile est Lp,q =


rQ

Lp,r Lr,q

En eet, si x Lp,r et y Lr,q , alors xy Lp,q , do` linclusion du membre droit dans u le membre gauche. Rciproquement, on a L p,p pour tout p, donc Lp,q Lp,pLp,q . e Proposition 5.12. Lensemble des prxes, lensemble des suxes, lensemble des e facteurs dun langage rgulier sont des langages rguliers. e e Version 19 septembre 2004

2.6. Automate minimal

39

Preuve. Avec les notations ci-dessus, et en supposant lautomate mond, lensemble e e des prxes est e Li,t
iI,tQ

lensemble des suxes est Li,t


iQ,tT

et lensemble des facteurs est Li,t


i,tQ

Proposition 5.13. Le langage obtenu en supprimant les premi`res lettres des mots e dun langage rgulier est un langage rgulier. e e Preuve. Considrons un langage Li,t . On a e Li,t \ =
(i,a,p)F

aLp,t

et le langage recherch est donc e Lp,t


(i,a,p)F ,tT

De nombreuses autres proprits peuvent se prouver de cette mani`re. En voici une. ee e La fermeture circulaire dun langage K est lensemble K = {uv A | vu K}. Par exemple, si K = a+ b+ , toutes les permutations circulaires que lon peut faire mettront une plage de b devant la plage de a ou une plage de a derri`re la plage de b. On a donc e K = a + b+ a b + a+ b . Proposition 5.14. La fermeture circulaire dun langage rgulier est un langage re e gulier. Preuve. On a K=
pQ,iI,tT

Lp,t Li,p

En eet, soit x K. Alors x = uv pour un couple (u, v) tel que vu K. Il existe donc un tat p tel que v Li,p et u Lp,t pour des tats i I, t T . Ceci prouve linclusion e e dans un sens. La rciproque se montre de la mme faon. e e c

2.6

Automate minimal

Dterminer un automate ayant un nombre minimum dtats pour un langage rationnel e e donn est tr`s intressant du point de vue pratique. Il est tout a fait remarquable e e e ` que tout langage rationnel poss`de un automate dterministe minimal unique, a une e e ` numrotation des tats pr`s. Ce rsultat nest plus vrai si lon consid`re des automates e e e e e qui ne sont pas ncessairement dterministes. e e Version 19 septembre 2004

40

Chapitre 2. Automates

Il y a deux faons de dnir lautomate dterministe minimal reconnaissant un langage c e e rationnel donn. La premi`re est intrins`que ; elle est dnie a partir du langage par une e e e e ` opration appele le quotient. La deuxi`me est plus opratoire ; on part dun automate e e e e dterministe donn, et on le rduit en identiant des tats appels insparables. Les e e e e e e algorithmes de minimisation utilisent la deuxi`me dnition. e e

2.6.1

Quotients

Soit A un alphabet. Pour deux mots u et v, on pose u1 v = {w A | uw = v}, uv 1 = {w A | u = wv}

Un tel ensemble, appel quotient gauche respectivement droit est, bien entendu, soit e vide soit rduit a un seul mot qui, dans le premier cas est un suxe de v, et dans le e ` deuxi`me cas un prxe de u. e e La notation est tendue aux parties en posant, pour X, Y A e X 1 Y =
xX yY

x1 y,

XY 1 =
xX yY

xy 1

Les quotients sont un outil important pour ltude des automates nis et des langages e rationnels. On utilise principalement les quotients gauches par un mot, cest-`-dire les a ensembles u1 X = {w A | uw X} En particulier 1 X = X pour tout ensemble X, et (uv)1 X = v 1 (u1 )X. Pour toute partie X de A , on pose Q(X) = {u1 X | u A } (6.1) Exemple 6.1. Sur A = {a, b}, soit X lensemble des mots qui contiennent au moins une fois la lettre a. Alors on a : 1 X = X, donc Q(X) = {X, A }. Proposition 6.2. Soit X A le langage reconnu par un automate ni dterministe, e | q w T }. accessible et complet A = (Q, i, T ) ; pour q Q, soit L q (A) = {w A Alors {Lq (A) | q Q} = Q(X) (6.2) Preuve. Montrons dabord que Q(X) est contenu dans {L q (A) | q Q}. Soit u A , et soit q = i u (cet tat existe parce que A est complet). Alors u 1 X = Lq (A), puisque e w u1 X uw X i uw T q w T w Lq (A) Pour montrer linclusion rciproque, soit q Q et soit u A tel que q = i u (un tel e mot existe parce que lautomate est accessible). Alors L q (A) = u1 X. Ceci prouve la proposition. Version 19 septembre 2004 a1 X = A , b1 X = X, a1 A = b1 A = A

2.6. Automate minimal

41

Exemple 6.3. Considrons lautomate A donn dans la gure 6.1. Un calcul rapide e e montre que L1 (A) = L3 (A) = L5 (A) = L6 (A) = {a, b} L0 (A) = L2 (A) = L4 (A) = b a{a, b} Lquation (6.2) est bien vrie. e e e a b 0 b 2 a b 4 b Fig. 6.1 Un automate reconnaissant X = b a{a, b} . a, b a

1 a 0

3 a, b 6 a, b

On dduit de cette proposition que, pour un langage reconnaissable X, lensemble des e quotients gauches Q(X) est ni ; nous allons voir dans un instant que la rciproque est e vraie galement. Lquation (6.2) montre par ailleurs que tout automate dterministe, e e e accessible et complet reconnaissant X poss`de au moins |Q(X)| tats. Nous allons voir e e que ce minimum est atteint, et mme, au paragraphe suivant, quil existe un automate e unique, a un isomorphisme pr`s, qui a |Q(X)| tats et qui reconna X. ` e e t Soit X A . On appelle automate minimal de X lautomate dterministe e A(X) = (Q(X), X, T (X)) dont lensemble dtats est donn par (6.1), ayant X comme tat initial, lensemble e e e T (X) = {u1 X | u X} = {u1 X | 1 u1 X} comme ensemble dtats terminaux, la fonction de transition tant dnie, pour Y Q e e e et a A par Y a = a1 Y Notons que si Y = u1 X, alors Y a = a1 (u1 X) = (ua)1 X, donc la fonction de transition est bien dnie, et lautomate est complet. e Exemple 6.4. Lautomate A(X) pour le langage X = b a{a, b} a les deux tats X e et {a, b} , le premier est initial, le deuxi`me est nal. Lautomate est donn dans la e e gure 6.2. Proposition 6.5. Le langage reconnu par lautomate A(X) est X. Version 19 septembre 2004

42 b X a a A

Chapitre 2. Automates

b Fig. 6.2 Lautomate minimal pour X = b a{a, b} . Preuve. Montrons dabord que, pour tout w A et pour tout Y Q(X), on a Y w = w1 Y . En eet, ceci est vrai si w est une lettre ou le mot vide. Si w = ua, avec a une lettre, alors Y ua = (Y u) a = (u 1 Y ) a = a1 (u1 Y ) = (ua)1 Y . Ceci prouve la formule. Il en rsulte que e w L(A(X)) X w T w 1 X T w X Donc A(X) reconna X. t Corollaire 6.6. Une partie X A est reconnaissable si et seulement si lensemble Q(X) est ni. Preuve. Si X est reconnaissable, alors (6.2) montre que Q(X) est ni. La rciproque e dcoule de la proposition prcdente. e e e On peut calculer lensemble Q(X) pour un langage rationnel, a partir dune expression ` rationnelle pour X, a laide des formules de la proposition suivante. Cela ne rsout ` e pas compl`tement le probl`me du calcul de lautomate minimal, parce quune dicult e e e majeure demeure, a savoir tester si deux expressions sont quivalentes. On en parlera ` e plus loin. Proposition 6.7. Soit a une lettre, et soient X et Y des langages. Alors on a a1 = a1 1 = a1 a = 1 a1 b = a
1

(b = a)
1

(X Y ) = a a
1

X a1 Y (6.3) (6.4) X)X

a1 (XY ) = (a1 X)Y (X 1)a1 Y X = (a


1

Preuve. Les quatre premi`res formules sont videntes. Prouvons la formule 6.3. Si w e e 1 (XY ), alors aw XY ; il existe donc x X, y Y tels que aw = xy. Si x = 1, alors a aw = y, donc w (X 1)a1 Y ; sinon, x = au pour un prxe u de w, et u a 1 X, e do` w (a1 X)Y . Linclusion rciproque se montre de la mme mani`re. u e e e Considrons la derni`re formule. Soit w a 1 X . Alors aw X , donc aw = xx , avec e e x X, x = 1, et x X . Mais alors x = au, avec u a1 X, donc w (a1 X)X . Rciproquement, on a par la formule (6.3), linclusion (a 1 X)X a1 (XX ), donc e (a1 X)X a1 X . Version 19 septembre 2004

2.6. Automate minimal Exemple 6.8. Calculons, a laide de ces formules, le langage a 1 (b aA ). On a ` a1 (b aA ) = a1 (b (aA )) = (a1 b )aA a1 (aA ) par (6.3) ; or le premier terme de lunion est vide par (6.3), do` u a1 (b aA ) = (a1 a)A (a 1)a1 A = (a1 a)A = A

43

2.6.2

Equivalence de Nerode

Dans ce paragraphe, tous les automates considrs sont dterministes, accessibles et ee e complets. Soit A = (Q, i, T ) un automate sur un alphabet A reconnaissant un langage X. Pour tout tat q, on pose e Lq (A) = {w A | q w T } Cest donc lensemble des mots reconnus par lautomate A en prenant q comme tat e initial. Bien entendu, le langage X reconnu par A co ncide avec L i (A). On a vu, au paragraphe prcdent, que e e {Lq (A) | q Q} = Q(X) La correspondance stablit par e Lq (A) = u1 X Notons que, plus gnralement, e e Lqv (A) = v 1 Lq (A) (6.5) si i u = q

En eet, w Lqv (A) si et seulement si (qv)w T donc si et seulement si vw L q (A). Lorsque lautomate est x, on crira L q au lieu de Lq (A). Deux tats p, q Q sont e e e dits insparables si Lp = Lq , ils sont sparables sinon. Ainsi, p et q sont sparables si et e e e seulement sil existe un mot w tel que p w T et q w T ou vice-versa. Si w est un / mot ayant cette proprit, on dit quil spare les tats p et q. Lquivalence de Nerode ee e e e sur Q (ou sur A) est la relation dnie par e p q p et q sont insparables e Proposition 6.9. Dans lautomate minimal, deux tats distincts sont sparables, et e e lquivalence de Nerode est lgalit. e e e Preuve. Soit Y = u1 X un tat de lautomate minimal A(X) du langage X. Comme e Y = X u, on a LY = u1 X = Y . Par consquent, deux tats distincts ne sont pas e e quivalents. e Exemple 6.10. Reprenons lautomate donn dans la gure 6.3 ci-dessous, et que nous e avons dj` considr dans le paragraphe prcdent. Puisque ea ee e e L1 = L3 = L5 = L6 = {a, b} L0 = L2 = L4 = b a{a, b} lquivalence de Nerode a donc les deux classes {0, 2, 4} et {1, 3, 5, 6}. Le mot vide e spare deux tats pris dans des classes distinctes. e e Version 19 septembre 2004

44

Chapitre 2. Automates

1 a 0 b 2 a b

3 a, b a, b a

0 b

a, b

4 b

Fig. 6.3 Un automate qui nest pas minimal. Proposition 6.11. Lquivalence de Nerode est une relation dquivalence rguli`re e e e e a droite, cest-`-dire vriant ` a e p q pu qu (u A )

De plus, une classe de lquivalence ou bien ne contient pas dtats terminaux, ou bien e e ne contient que des tats terminaux. e Preuve. Soit A = (Q, i, T ) un automate. Il est clair que la relation est une relation dquivalence. Pour montrer sa rgularit, supposons p q, et soit u A . En vue de e e e 1 L = u1 L = L (6.5), on a Lqu = u q p pu , donc p u q u. Supposons enn p q et p terminal. Alors 1 Lp , et comme Lp = Lq , on a 1 Lq , donc q est terminal. Lquivalence de Nerode sur un automate A = (Q, i, T ) tant rguli`re a droite, on e e e e ` peut dnir un automate quotient en confondant les tats dune mme classe. Plus e e e prcisment, notons [q] la classe dun tat q dans lquivalence. Lautomate quotient e e e e est alors dni par e A/ = (Q/ [i] , {[t] : t T }) , avec la fonction de transition [q a] = [q] a (6.6)

qui justement est bien dnie (indpendante du reprsentant choisi dans la classe de q) e e e parce que lquivalence est rguli`re a droite. e e e ` Dans lexemple ci-dessus, lautomate quotient a deux tats : ltat {0, 2, 4} est initial, e e et {1, 3, 5, 6} est ltat nal. La formule (6.6) permet de calculer les transitions. On e obtient lautomate de la gure 6.4. Comme le sugg`re cet exemple, lautomate quotient est en fait lautomate minimal, a e ` une renumrotation des tats pr`s. Nous avons besoin, pour le prouver, de la notion e e e disomorphisme dautomates. Soient A = (Q, i, T ) et A = (Q , i , T ) deux automates sur A. Ils sont dits isomorphes sil existe une bijection :QQ telle que (i) = i , (T ) = T , et (q a) = (q) a pour tout q Q et a A. Version 19 septembre 2004

2.7. Calcul de lautomate minimal b 024 a a 1356

45

b Fig. 6.4 Un automate quotient. Proposition 6.12. Soit A = (Q, i, T ) un automate sur un alphabet A reconnaissant un langage X. Si lquivalence de Nerode de A est lgalit, alors A et lautomate e e e minimal A(X) sont isomorphes. Preuve. Soit : Q Q(X) dnie par (q) = L q (A). Comme lquivalence de Nerode e e est lgalit, est une bijection. Par ailleurs, (i) = L i = X, et t T si et seulement e e si 1 Lt (A), donc si et seulement si Lt (A) est tat nal de A(X). Enn, on a e Lqa (A) = Lq (A) a montrant que est bien un morphisme. De cette proprit, on dduit une consquence importante : ee e e Thor`me 6.13. Lautomate minimal dun langage X est lautomate ayant le moins e e dtats parmi les automates dterministes complets qui reconnaissent X. Il est unique e e a un isomorphisme pr`s. ` e Preuve. Soit B un automate reconnaissant X et ayant un nombre minimal dtats. Alors e son quivalence de Nerode est lgalit, sinon on pourrait passer au quotient par son e e e quivalence de Nerode et trouver un automate plus petit. Par la proposition prcdente, e e e B est isomorphe a A(X). ` Lunicit de lautomate minimal ne vaut que pour les automates dterministes. Il existe e e des automates non dterministes, non isomorphes, ayant un nombre minimal dtats, e e et reconnaissant un mme langage (voir exercices). e

2.7

Calcul de lautomate minimal

Le calcul de lautomate minimal peut se faire par un procd appel lalgorithme de e e e Moore, et que nous exposons maintenant. Dans le premier paragraphe, on montre comment calculer lquivalence de Nerode de faon itrative. Ce calcul est traduit en un e c e algorithme explicite dans le deuxi`me paragraphe. e

2.7.1

Calcul de Moore

Soit A = (Q, i, T ) un automate dterministe, accessible et complet sur un alphabet A. e Pour calculer lautomate minimal, il sut de calculer lquivalence de Nerode dnie, e e rappelons-le, par p q Lp = Lq Version 19 septembre 2004

46

Chapitre 2. Automates

o` Lp = {w A | p w T }. Pour calculer cette quivalence, on proc`de par u e e approximations successives. On consid`re pour ce faire lquivalence suivante, o` k est e e u un entier naturel : (k) (k) p k q Lp = Lq avec
(k) Lp = {w Lp | |w| k}

Lquivalence de Nerode est lintersection de ces quivalences. La proposition suivante e e exprime lquivalence k au moyen de lquivalence k1 . Elle permettra de prouver e e que lon obtient bien a la limite lquivalence de Nerode, et elle donne aussi un ` e procd de calcul. e e Proposition 7.1. Pour tout entier k 1, on a p k q p k1 q Preuve. On a
(k) Lp ={w | p w T et |w| k} ={w | p w T et |w| k 1} a{v | (p a) v T et |v| k 1} aA

et

( a A,

p a k1 q a)

=L(k1) p
aA

aLpa

(k1)

Lobservation nest quune traduction de ces galits. e e Corollaire 7.2. Si les quivalences k et k+1 co e ncident, les quivalences k+l e (l 0) sont toutes gales, et gales a lquivalence de Nerode. e e ` e Preuve. De la proposition, il rsulte immdiatement que lgalit des quivalences k et e e e e e k+1 entra celle des quivalences k+1 et k+2 . Do` la premi`re assertion. Comme ne e u e p q si et seulement si p k q pour tout k 0, la deuxi`me assertion sen dduit. e e Proposition 7.3. Si A est un automate a n tats, lquivalence de Nerode de A est ` e e gale a n2 . e ` Preuve. Si, pour un entier k > 0, les quivalences k1 et k sont distinctes, le nombre e de classes de lquivalence k est k + 2. e

2.7.2

Algorithme de Moore

Dans la pratique, on applique le procd dcrit ci-dessous qui consiste a essayer de briser e e e ` des classes des quivalences k1 . Pour ce faire, on consid`re une classe P de k1 , e e et on calcule les classes auxquelles appartiennent les tats p a pour p P et a A. e Dapr`s la Proposition 7.1, deux tats p et p de P sont dans deux classes direntes e e e de k d`s que p a k1 p a pour une lettre a. e Version 19 septembre 2004

2.7. Calcul de lautomate minimal

47

De mani`re eective, chaque classe dune quivalence k1 est numrote. On dbute e e e e e avec lquivalence 0 dont les deux classes contiennent les tats terminaux respectivee e ment les tats nonterminaux. Les images p a sont calcules, et les classes correspone e dantes sont numrotes. e e Lorsque les classes de k1 ont t calcules, on calcule les tats pa et on note les classes ee e e des tats darrive. Ensuite, on inspecte, pour chaque tat p, les suites de numros de e e e e classes de p et des tats p a, pour a A. Deux suites identiques indiquent deux tats e e quivalents pour k . Le nombre de suites direntes est donc le nombre de classes de e e lquivalence k . On numrote ces classes, et on termine lorsque le nombre de classes e e naugmente plus. b 0 a b a 1 b 2 a 3 a b a 4 b a 5 a a b 7 b b 6

Fig. 7.1 Un automate a minimiser. ` Voici un exemple dtaill. On part de lautomate de la gure 7.1 dont la fonction de e e transition est la suivante : a b 0 2 1 1 2 1 2 3 2 3 5 4 4 5 4 5 6 5 6 5 7 7 6 7 On cre un tableau dont les lignes sont les dirents tats de lautomate. Chaque colonne e e e contient le numro dune classe a laquelle appartient un tat. e ` e La premi`re colonne, indice par 0 , contient, dans chaque ligne, le numro de la classe e e e a laquelle appartient ltat qui indice la ligne. Cette partition sobtient en sparant les ` e e tats terminaux des autres. On obtient donc deux classes notes I et II . e e

Version 19 septembre 2004

48

Chapitre 2. Automates

0 0 I 1 II 2 II 3 I 4 I 5 II 6 I 7 I Les colonnes suivantes sont indices par les lettres de lalphabet. Pour chaque ligne q e et chaque colonne a, lentre contient la classe a laquelle appartient ltat q a. Dans e ` e notre cas, on obtient : 0 a b 0 I II II 1 II II II 2 II I II 3 I II I 4 I II I 5 II I II 6 I II I 7 I II I Il y a 4 triplets de numros de classes dirents, a savoir (I , II , II ), (II , II , II ), (II , I , II ) e e ` et (I , II , I ). Lquivalence 1 a donc les 4 classes 0/1/25/3467. On renumrote les e e classes, et on obtient le tableau suivant : 0 1 2 3 4 5 6 7 0 I II II I I II I I a II II I II II I II II b II II II I I II I I 1 I II III IV IV III IV IV

Nous procdons maintenant de mme avec la nouvelle partition : pour chaque tat q et e e e chaque colonne a, on note le numro de la classe a laquelle appartient ltat q a. On e ` e obtient le tableau souvant : 0 a b 1 a b 0 I II II I III II 1 II II II II III II 2 II I II III IV III 3 I II I IV III IV 4 I II I IV III IV 5 II I II III IV III 6 I II I IV III IV 7 I II I IV III IV Version 19 septembre 2004

2.8. Exemples

49

On constate que pour deux tats dune mme classe de 1 , les couples de classes des e e tats darrive par les lettres a et b sont les mmes : pour les tats de la classe III , e e e e cest toujours (IV , III ), et pour les tats de la classe IV , cest toujours (III , IV ). En e dautres termes, les quivalences 1 et 2 sont les mmes. On le voit en numrotant e e e comme prcdemment les classes : e e 0 0 I 1 II 2 II 3 I 4 I 5 II 6 I 7 I a II II I II II I II II b II II II I I II I I 1 I II III IV IV III IV IV a III III IV III III IV III III b II II III IV IV III IV IV 2 I II III IV IV III IV IV

Ainsi, lquivalence de Nerode est gale a 2 . Lautomate minimal sobtient directement e e ` a partir du dernier tableau : voir la gure 7.2. ` b I a b a III a a II b IV b

Fig. 7.2 Lautomate minimis. e

2.8

Exemples

Dans cette section, nous prsentons quelques exemples pratiques dusage des autoe mates.

2.8.1

Editeurs

Les automates jouent un rle omniprsent dans les interfaces graphiques sous la forme o e dindicateurs (ags en anglais). Ces indicateurs constituent une aide pour lutilisateur, en dcrivant la situation o` il se trouve. e u Prenons lexemple dun diteur de texte. Un document en cours de traitement peut tre e e dans deux tats : modi M ou inchang I. On passe de ltat I a ltat M par toute e e e e ` e modication insertion, suppression de caract`re, collage, etc. On passe de ltat M e e Version 19 septembre 2004

50

Chapitre 2. Automates

a ltat I essentiellement par la sauvegarde (certains diteurs permettent de revenir a ` e e ` ltat I par annulation de commandes). On est donc en prsence dun automate tr`s e e e simple, donn dans la gure 8.1. En fait, la boucle autour de ltat I nest pas toujours e e prsente. Au contraire, les bons traitements de texte ne sauvegardent pas a nouveau e ` le texte sil na pas t modi. ee e s m I s Fig. 8.1 Lautomate de sauvegarde dun texte. De mani`re plus gnrale, toute la batterie des boutons indicateurs, ou des entres e e e e de menus a cocher, dans un diteur ou un autre logiciel renvoie a des automates a deux ` e ` ` tats. Pour chacun, la nature des actions qui permettent de passer dun tat a lautre e e ` doit tre spcie avec soin. e e e Quand on veut dcrire globalement ltat dun diteur, on doit donner la suite des e e e valeurs de chacun des automates lmentaires. On fait donc le produit des automates. ee En voici un exemple. Les traitements de texte avec styles permettent de mettre du texte en gras, en italique, en soulign, par action sur des boutons appropris. On est alors en prsence de trois e e e petits automates, dcrits dans la gure 8.2. e b B b B I i i I S s s S M m

Fig. 8.2 Les automates pour mettre en gras, en italique, en soulign. e Le produit de ces trois automates donne lautomate a 8 tats de la gure 8.3. ` e SB i s s b i B I i b i IS b s IB ISB

b S

Fig. 8.3 Lautomate produit des automates prcdents. e e Dans cet automate, le nom dun tat est lensemble des options valides. e Version 19 septembre 2004

2.8. Exemples

51

Dans les diteurs de dessin ou des logiciels graphiques le nombre de param`tres est e e souvent grand (paisseur du trait, nature du trait (plein ou pointill), couleur du trait, e e couleur de fond, police de caract`re, etc). Lensemble des valeurs des param`tres est e e appel ltat graphique. Pour les valeurs numriques, la prsentation par automate ni e e e e nest pas adapte. e paste p sel sel des c copy sel cut paste, cut, des

cp

copy, sel Fig. 8.4 Automate du couper-coller. Lautomate de la gure 8.4 dcrit le comporterment du couper-coller dans un diteur e e de texte. Cet automate dcrit les possibilits oertes par les diverses entres du menu e e e ddition dun diteur, en fonction des actions entreprises. Tout le monde sait que toute e e opration de copier-coller nest pas toujours disponible. Un peu de rexion conduit au e e constat que le couper et le copier sont toujours simultanment actifs ou inactifs. e Par ailleurs, on ne peut couper que si lon a slectionn, et on ne peut coller que si on e e a procd auparavant a une mmorisation, dans le presse-papier, notamment par un e e ` e couper ou un coller. Lautomate a deux tats initiaux. En eet, lorque lon ouvre une fentre texte, soit rien e e na t copi, soit on a copi quelque chose dune fentre ou dun autre dispositif. Selon ee e e e le cas, on est dans ltat ou dans ltat p. e e

2.8.2

Digicode

Le digicode est un dispositif bien connu. Cest en fait un cas particulier de la recherche dun motif dans un texte. Lalphabet dun digicode contient les douze symboles S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B}. Le mcanisme dclenche louverture lorsque lacteur a entr une squence correcte de 4 e e e e ou de 5 symboles. Supposons que le code est 12A73. Tout mot sur lalphabet S qui se termine par 12A73 dclenche louverture, et lon peut mme taper des symboles apr`s e e e louverture sans que cela ne provoque la fermeture. Ainsi, tout mot contenant 12A73 dclenche louverture. En fait, on constate que la plupart des digicodes autorisent la e Version 19 septembre 2004

52

Chapitre 2. Automates

rptition dune mme touche. Par exemple, si lon tape 11222A773, la porte souvrira e e e aussi. Lensemble des squences correctes est donc S 1+ 2+ A+ 7+ 3+ S , et lautomate e pour ce code particulier est donn dans la gure 8.5. Chaque `che vers ltat 0 a e e e S {1} 1 1 2 2 A A 7 7 3 S

Fig. 8.5 Lautomate du digicode pour le code dentre 12A73. e pour tiquettes les symboles restants. e

Version 19 septembre 2004

53

Chapitre 3

Grammaires

Dans ce chapitre, nous prsentons les grammaires algbriques ou context-free. Nous e e montrons comment transformer les grammaires, de donnons en particulier diverses formes normales. Nous prsentons enn les automates a pile. e `

3.1
3.1.1

Gnralits e e e
Introduction

Une des applications principales des langages algbriques est dans la dnition des e e langages de programmation, et dans lanalyse de la syntaxe des programmes. Dans un compilateur, lanalyseur syntaxique reoit le programme sous la forme dune suite c de lex`mes, produits par lanalyseur lexical. Le rle de lanalyseur syntaxique est de e o dduire, de cette squence, la structure syntaxique dun programme, cest-`-dire de e e a regrouper des suites de lex`mes en units syntaxiques de plus en plus grandes. e e Dans les langages de programmation impratifs, les units syntaxiques sont les variables, e e expressions, instructions, suites dinstructions, blocs, dclarations, dnitions. e e Lanalyseur syntaxique reconna la structure syntaxique dun programme, et la reprt e sente de mani`re approprie a un traitement ultrieur, par dautres parties du compie e ` e lateur. Une prsentation possible est un arbre syntaxique, qui peut ensuite tre dcor e e e e ou transform et nalement traduit dans un langage assembleur. e La structure syntaxique des programmes dun langage de programmation peut tre e dcrite, en partie, a laide dune grammaire algbrique. A partir dune telle grammaire, e ` e on engendre un analyseur syntaxique qui est un automate a pile. Pour des raisons ` decacit, on se restreint dans la pratique aux grammaires analysables de mani`re e e dterministe, et mme a des grammaires encore plus particuli`res. e e ` e

3.1.2

Dnition e

Une grammaire algbrique ou context-free G = (V, P, S) sur un alphabet A est compose e e Version 19 septembre 2004

54

Chapitre 3. Grammaires

dun alphabet ni V , disjoint de A, appel alphabet des variables ou none terminaux ; dun lment distingu S de V appel laxiome ; ee e e dun ensemble ni P V (V A) de r`gles ou productions. e Les symboles non-terminaux reprsentent (dune mani`re qui sera rendue prcise plus e e e loin) des ensembles de mots, a savoir les mots quils produisent, ou que lon peut driver ` e a partir deux. Dans les langages de programmation, les non-terminaux reprsentent ` e les units syntaxiques, et les lettres de lalphabet A (alphabet terminal) les lex`mes du e e langage. Soit r`gle p P est un couple p = (X, ), avec X V et (V A) . On crit e e souvent X au lieu de (X, ), et on appelle X le membre gauche, et le membre droit de p. On dit aussi que cest une r`gle de X ou une X-r`gle. e e Les exemples de grammaires ont souvent de nombreuses r`gles. Il est pour cela utile e dcrire e X 1 | 2 | | n pour X 1 , X 2 , , X n . On dit que ces r`gles sont les X-r`gles ou les r`gles de la variable X. e e e Exemple 1.1. Dans le langage de programmation Pascal, les instructions sont dcrites e par les r`gles suivantes : e instruction | variable :=expression | begin liste-instructions end | if expression then instruction | if expression then instruction else instruction | case expression of liste-case end | while expression do instruction | repeat instruction until expression | for varid :=liste-pour do instruction | identicateur-procdure e | identicateur-procdure(liste-expressions) e | goto tiquette e | with liste-variables-record do instruction | tiquette :instruction e

Les symboles begin, end, if, then etc constituent les lettres terminales, et les r`gles e font appel a des variables dnies par ailleurs, comme expression, liste-case etc. La ` e grammaire Pascal contient plus de 300 r`gles. e Exemple 1.2. Une forme simplie des expressions arithmtiques se dcrit par la e e e grammaire que voici : E E+T |T T T F |F F (E) | a | b | c Version 19 septembre 2004

3.1. Gnralits e e e

55

Ici, lalphabet des variables est {E, T, F }, lalphabet terminal est {+, , (, ), a, b, c} et laxiome est E. Formellement, les mots engendrs par une grammaire se dnissent comme suit. Soit e e G = (V, P, S) une grammaire sur A. Soient u, v (V A) . On dit que u drive e directement en v, et on crit e uv sil existe des factorisations u = xXy et v = xy, avec (X, ) P . Soit k 0 un entier. On dit que u drive a lordre k en v, et on crit e ` e u v sil existe des mots w0 , w1 , . . . , wk (V A) tels que u = w0 , wi1 wi (1 i k), wk = v .
k

La suite w0 , . . . , wk est alors appele une drivation de u en v. On dit que u drive en e e e v et on crit e u v lorsquil existe un entier k 0 tel que u drive a lordre k en v. On dit que u drive e ` e proprement en v et on crit e + u v lorsquil existe un entier k > 0 tel que u drive a lordre k en v. Les relations e ` et sont videmment la fermeture transitive (resp. transitive et rexive) de la e e relation . Le langage engendr par la grammaire G est lensemble e L(G) = {w A | S w} Il est commode de pouvoir dcrire les mots qui drivent dautres variables que laxiome. e e On pose LG (X) = {w A | X w} et plus gnralement, pour (V A) , e e LG () = {w A | w} . Bien videmment, on a L(G) = LG (S), et LG (w) = {w}, si w A . e Un mot (V A) tel que S est un mot largi ou une forme engendre par S. e e Dans une drivation, tous les mots a lexception ventuelle du dernier sont des formes. e ` e Exemple 1.3. (suite de lexemple 1.2) On a E a b + c car en eet E E +T T +T T F +T T b+T F b+T F b + F a b + F a b + c. Version 19 septembre 2004
+

56

Chapitre 3. Grammaires

3.1.3

Arbre de drivation e

Soit G = (V, P, S) une grammaire. Soit D un arbre ordonn (les ls dun sommet sont e ordonns). On tiquette les feuilles de D avec des lments de A {} et les nuds e e ee avec des lettres dans V . Ltiquette dune feuille est le mot vide seulement si la feuille e est lle unique. Larbre D est un arbre de drivation pour un mot w a partir de X V e ` si les conditions suivantes sont remplies : (1) pour tout nud, si Y est ltiquette du nud, et si Z 1 , . . . , Zn sont les nuds e de ses ls, dans cet ordre, alors Y Z 1 Zn est une r`gle ; e (2) le mot des feuilles de D, cest-`-dire le mot obtenu en concatnant les tiqueta e e tes des feuilles de la gauche vers la droite, est le mot w ; (3) ltiquette de la racine est X. e

E E E a + E b E c E a

E E b E + E c

Fig. 1.1 Deux arbres de drivation pour lexpression a b + c. e Exemple 1.4. Considrons la grammaire e E E + E | E E | (E) | a | b | c Le mot a b + c poss`de deux arbres de drivation, a savoir ceux de la gure 1.1. e e ` Une grammaire G est dite ambigu pour un mot x sil existe plus dun arbre de e drivation pour le mot x. Elle est ambigu si elle est ambigu pour au moins un mot. e e e Une grammaire qui nest pas ambigu est dite inambigu ou non-ambigu. e e e

3.1.4

Drivations gauche et droite e

Soit w0 , . . . , wk une drivation de u en v (u = w0 , v = wk ). La drivation est gauche e e si, a chaque tape de la drivation, cest la variable la plus a gauche qui est drive : ` e e ` e e , donc x ne contient pas de variable. si wi = xi Xi yi et wi+1 = xi i yi , alors xi A i De mme, une drivation droite est une drivation o` , a chaque pas, cest la variable la e e e u ` plus a droite qui est drive. ` e e Proposition 1.5. Il y a bijection entre les drivations gauches dun mot x a partir e ` de S et les arbres de drivation pour x a partir de S. e `

Version 19 septembre 2004

3.1. Gnralits e e e

57

Preuve. Considrons un arbre de drivation D pour x a partir de S. On obtient une e e ` drivation gauche en appliquant les r`gles dans un parcours en profondeur gauche de e e larbre. Rciproquement, tant donn une drivation gauche, on construit facilement e e e e un arbre dont la drivation est la drivation gauche associe. e e e Corollaire 1.6. Pour tout mot x L(G), il y a autant de drivations gauches que e de drivations droites. e On crit e

S x,

S x
d

pour dire que x drive a gauche resp. a droite de x. Si x est terminal (x A ), e ` ` alors lexistence dune drivation implique lexistence dune drivation gauche et dune e e drivation droite. Si x est une forme, il nen est plus ainsi. e Exemple 1.7. Revenons sur la grammaire de lexemple 1.2, et sur la drivation e E E +T T +T T F +T T b+T F b+T F b + F a b + F a b + c. Ce nest pas une drivation gauche (` cause de ltape T F + T T b + T ), ni e a e une drivation droite pour la mme raison. Larbre de drivation correspondant a cette e e e ` drivation est donne dans la gure 1.2. e e
E E T T F a F b + T F c

Fig. 1.2 Un arbre de drivation pour lexpression a b + c. e A partir de cet arbre, on construit directement une drivation gauche (ou droite) par e un parcours en profondeur. Cela donne E E +T T +T F T +T aT +T aF +T a b + T a b + F a b + c. et E E +T E+F E+c T +cT F +c T b + c F b + c a b +c.

Version 19 septembre 2004

58

Chapitre 3. Grammaires

3.1.5

Drivations et analyse grammaticale e

Lanalyse grammaticale de la langue franaise proc`de de mani`re tr`s similaire a lanac e e e ` lyse formelle. Une phrase est dcompose en constituants, et la dpendance de ces come e e posants est reprsente par exemple sus une forme arborescente. Dans la gure 1.3, on e e donne un exemple. Lcriture de larbre est inverse, mais la structure est la mme. e e e Pierre GN voit V GV Paul GN

Fig. 1.3 Un arbre danalyse grammaticale (GN : groupe nominal, GV : groupe verbal, V : verbe). On peut compliquer a souhait. Voici une deuxi`me analyse. ` e Cette rencontre inattendue emplit lhomme de joie Dt e Nom GN Adj V Dt Nom Prp Nom e e GN GV P GNp

Fig. 1.4 Analyse dune phrase plus complexe (GNp : groupe nominal prpositionnel). e

3.2
3.2.1

Oprations e
Lemmes

Soit G = (V, P, S) une grammaire sur lalphabet A. On pose, pour x (V A) , LG (x) = {w A | x w} . Bien entendu, on a LG (S) = L(G), et LG (x) = {x} si x A . Version 19 septembre 2004

3.2. Oprations e Lemme 2.1. Si x y, alors LG (x) LG (y).

59

Lemme 2.2. Soit x un mot qui nest pas dans A , et soient y1 , . . . , yn les mots qui drivent immdiatement de x. Alors e e LG (x) = LG (y1 ) LG (yn ) . Corollaire 2.3. Soit X une variable, et soient X 1 | | n les r`gles de X. e Alors LG (X) = LG (1 ) LG (n ) . Nous en venons maintenant a la concatnation. Le lemme qui suit explique en quoi ` e le terme context-free est justi : lorsque lon drive un produit, la drivation dun e e e facteur ninue pas sur lautre. Lemme 2.4. Soient u, v, w des mots. On a uv w si et seulement sil existe u , v tels que w=uv et u u , v = v ou u = u , v v . Preuve. La condition est susante : supposons que u u et v = v (lautre cas se traite de faon symtrique). Alors uv u v = u v = w. c e Rciproquement, si uv w, il existe une factorisation uv = xXy et une r`gle (X, ) e e telles que w = xy. Ou bien xX est prxe de u, ou bien Xy est suxe de v. Dans le e premier cas, il existe un mot t tel que u = xXt, tv = y et alors w = xtv. Posons u = xt, v = v. On a bien u u et w = u v . Le deuxi`me e cas se traite de faon symtrique. c e Lemme 2.5. Soient u1 , u2 , w des mots et k 0 un entier. On a u1 u2 w si et seulement sil existe des mots v 1 , v2 et deux entiers k1 , k2 0 tels que
2 1 u1 v1 , u2 v2 , k1 + k2 = k, w = v1 v2 .

Version 19 septembre 2004

60
1 2 Preuve. Si u1 v1 et u2 v2 , alors 1 2 u1 u2 v 1 u2 v 1 v2

Chapitre 3. Grammaires
k k

donc
k

1 u1 u2 2 v1 v2

k +k

Rciproquement, supposons que u1 u2 w. Si k = 0, il ny a rien a prouver. Si k > 0, e ` k1 il existe un mot w tel que u1 u2 w et w w. Par le lemme prcdent, il existe e e une factorisation w = x1 x2 telle que u1 x1 et u2 = x2 ou u1 = x1 et u2 x2 . k1 Comme x1 x2 w, il existe, par rcurrence, deux entiers 1 , 2 et deux mots v1 , v2 e tels que 1 2 x1 v1 , x2 v2 , 1 + 2 = k 1, w = v1 v2 . Si u1 x1 et u2 = x2 , alors et si u1 = x1 et u2 x2 Dans les deux cas, le lemme est vri. e e Corollaire 2.6. Soient u1 , . . . , un , w des mots et k 0 un entier. On a u1 u n w si et seulement sil existe des mots v 1 , . . . , vn et des entiers k1 , . . . , kn 0 tels que
i ui vi , (1 i n), 1 2 u1 v1 , u2 v2

+1

1 2 u1 v1 , u2 v2

+1

k1 + + kn = k,

w = v 1 vn .

Preuve. Elle est immdiate par rcurrence sur n. e e Lemme 2.7. (Lemme fondamental) Soient u 0 , . . . , un A et X1 , . . . , Xn des variables. Soit w un mot et k 0 un entier. Alors u0 X1 u1 X2 X n un w si et seulement sil existe des mots v 1 , . . . , vn et des entiers k1 , . . . , kn 0 tels que
i Xi vi (1 i n),

k1 + + kn = k,

w = u 0 v1 u1 v2 v n un .

Preuve. Le corollaire prcdent sapplique ici directement. Comme les u i ne contiennent e e pas de variable, la seule drivation a partir dun u i est dordre 0. e ` Ces rsultats impliquent le corollaire suivant : e Proposition 2.8. Quels que soient les mots x et y, on a L G (xy) = LG (x)LG (y). Preuve. On a w LG (xy) si et seulement si xy w. Or, par le corollaire, ceci se produit si et seulement sil existe une factorisation w = uv telle que x u et y v, donc si et seulement sil existe une factorisation w = uv avec u L G (x) et v LG (y).

Version 19 septembre 2004

3.2. Oprations e

61

3.2.2

Oprations e

Un langage L A est algbrique ou context-free sil existe une grammaire G sur A e telle que L = L(G). On note Alg(A ) la famille des langages algbriques sur A. e Thor`me 2.9. La famille des langages algbriques est ferme par union, produit, e e e e toile, image miroir. e Preuve. Soient L1 et L2 deux langages algbriques sur A, et soient G 1 = (V1 , P1 , S1 ) et e G2 = (V2 , P2 , S2 ) deux grammaires engendrant respectivement L 1 et L2 . En renommant si ncessaire les variables, on peut supposer V 1 et V2 disjoints. Soit alors S une nouvelle e variable et posons V = V1 V2 {S}. La grammaire (V, P1 P2 {S S1 , S S2 }, S) engendre le langage L1 L2 . La grammaire (V, P1 {S S1 S2 }, S) engendre le langage L1 L2 . La grammaire (V, P1 P2 {S SS1 , S }, S) engendre le langage L . La grammaire 1 (V1 , {(X, ) | (X, ) P1 }, S1 ) enn engendre le langage L1 . Exemple 2.10. Le langage {an1 bn1 an2 bn2 ank bnk | k 0, n1 , . . . , nk 0} est ltoile du langage {an bn | n 0} et donc est algbrique, engendr par la grammaire e e e S ST | , Cette grammaire est ambigu. e Corollaire 2.11. Tout langage rationnel est algbrique. e Soient A et B deux alphabets. Un morphisme de A dans B est une application f : A B telle que f (uv) = f (u)f (v) pour tous u, v A . Une substitution de A dans B est une application f de A dans lensemble (B ) des parties de B telle que f (uv) = f (u)f (v) pour tous u, v A , et f () = {}. Une substitution est un morphisme du mono A dans le mono des parties de B , pour le produit. On de de tend f aux parties par e f (X) = f (x)
xX

T aT b |

Une substitution est rationnelle resp. algbrique si les langages f (a), pour a A, sont e rationnels, respectivement algbriques. Il en rsulte alors que f (w) est rationnel, resp. e e algbrique, pour tout mot w A , et aussi que f (X) est rationnel resp. algbrique e e . pour toute partie nie de A Version 19 septembre 2004

62

Chapitre 3. Grammaires

Thor`me 2.12. (Thor`me de substitution) Soit f une substitution algbrique e e e e e de A dans B . Pour tout langage algbrique L sur A, le langage f (L) est algbrique e e sur B. Preuve. Pour toute lettre a A, soit G a = (Va , Pa , Sa ) une grammaire algbrique sur e B qui engendre f (a) = L(Ga ) = LGa (Sa ). On peut supposer les alphabets de variables des grammaires Ga disjoints. Soit G = (V, P, S) une grammaire engendrant L, avec V disjoint des Va . On consid`re alors la grammaire H = (W, Q, S), avec e W =V
aA

Va ,

Q=P
aA

Pa

On a LH (a) = LGa (Sa ) = f (a) pour a A, et pour X V LH (X) =


(X,)P

LH () = f (LG (X)) .

3.3

Complment : syst`mes dquations e e e

Dans cette section, nous dcrivons rapidement le lien entre les langages algbriques et e e les syst`mes dquations polynomiales, lien qui a donn aux langages leur nom. e e e Soit G = (V, P, S) une grammaire. Il est utile ici de numroter les variables : e V = {X1 , . . . , XN } Posons Pi = { | (Xi , ) P } (1 i N ). Le syst`me dquations associ a la grammaire G est le syst`me dquations e e e` e e Xi = P i (i = 1, . . . , N )

Une suite L = (L1 , . . . , LN ) de parties de A est une solution du syst`me si e Li = Pi (L) (1 i N ).

Dans cette criture, on associe, a chaque partie nie (polynme) de (V A) une e ` o application (fonction polynme) des N -uplets L de parties de (V A) dans les parties o de (V A) comme suit : (1) (2) (3) (4) (5) P (L) = wP w(L) uv(L) = u(L)v(L) Xi (L) = Li a(L) = a (L) = {} P (V A) u, v (V A) i = 1, . . . , N aA

Thor`me 3.1. Le N -uplet L = (LG (X1 ), . . . , LG (XN )) est la plus petite solution, e e pour linclusion, du syst`me dquations associ a la grammaire. e e e`

Version 19 septembre 2004

3.4. Vrications e

63

Preuve. Montrons dabord que L = (LG (X1 ), . . . , LG (XN )) est une solution. Pour cela, nous constatons que, par les relation (3) (5) ci-dessus, on a L G (Xi ) = Xi (L) pour i = 1, . . . , N et pour w A , LG (w) = {w} = w(L). Il en rsulte par (2) que, pour tout e mot (V P ) , on a LG () = (L). Or, par le corollaire 2.3, on a L G (Xi ) = LG (Pi ). Il en rsulte que e LG (Xi ) = LG () = (L) = Pi (L)
Pi Pi

Montrons maintenant que cette solution est la plus petite. Pour cela, considrons une e autre solution M = (M1 , . . . , MN ). Nous montrons que pour tout mot w (V A) , on a LG (w) = w(L) w(M ) (3.1) Pour ce faire, nous montrons dabord w v = v(M ) w(M ) En eet, comme w v, il existe une r`gle (X i , ) et deux mots x, y tels que e w = xXi y, v = xy. (3.2)

Il sen suit que v(M ) = x(M )(M )y(M ), et comme P i , v(M ) x(M )Pi (M )y(M ). Or, M est solution, donc Pi (M ) = Mi . Il en rsulte que e v(M ) = x(M )(M )y(M ) x(M )Mi y(M ) = w(M ) Ceci montre 3.2. Par rcurrence sur lordre de la drivation, on en dduit que e e e w v = v(M ) w(M ) Soit maintenant u LG (w). Alors w u, et par ce qui prc`de, on a u(M ) w(M ). e e , on a u(M ) = {u}, et par consquent u w(M ). Ceci prouve 3.1 et Comme u A e par l` mme le thor`me. a e e e

3.4

Vrications e

Dans cette section, nous prsentons quelques procds qui permettent de simplier e e e des grammaires. Le premier sapparente a la construction dun automate mond, la ` e e deuxi`me a llimination des -transitions dans un automate. La derni`re tape la e ` e e e suppression des r`gles unitaires est aussi de cette nature. e Ces opration produisent des grammaires appeles rduites et propres. Leur intrt est e e e ee de faciliter les tches suivantes, la mise sous forme normale. a

3.4.1

Grammaires rduites e

Soit G = (V, P, S) une grammaire sur A. Une variable X est productive si LG (X) = ; accessible sil existe des mots , tels que S X. Version 19 septembre 2004

64

Chapitre 3. Grammaires

utile si elle est productive et il existe des mots , tels que S X et , ne contiennent que des variables productives. Une grammaire est rduite si toutes ses variables sont utiles. En supprimant les variables e inutiles dans une grammaire, on ne change pas le langage engendr sauf si laxiome e lui-mme est inutile, cest-`-dire si la grammaire engendre le langage vide. e a Lalgorithme suivant calcule lensemble des variables productives par une mthode qui e rappelle un calcul de descendants. Algorithme de calcul des variables productives. 1. Calculer lensemble V0 des variables X pour lesquelles il existe une r`gle X e avec A . 2. Calculer lensemble Vi+1 form de Vi et des variables X pour lesquelles il existe e une r`gle X avec (A Vi ) . e 3. Arrter lorsque Vi+1 = Vi . Cet ensemble est lensemble des variables productives. e Lalgorithme suivant calcule lensemble des variables accessibles a partir de laxiome. ` Algorithme de calcul des variables accessibles. 1. Poser W0 = {S}. 2. Calculer lensemble Wi+1 form de Wi et des variables X telles quil existe une e r`gle Y X avec Y Wi . e 3. Arrter lorsque Wi+1 = Wi . Cet ensemble est lensemble des variables accessibles. e Pour dterminer lensemble des variables utiles, il ne sut pas de faire lintersection e les ensembles calculs par ces deux algorithmes. Il convient dappliquer lalgorithme e suivant qui sert a rduire une grammaire. ` e Algorithme de rduction dune grammaire. e 1. On dtermine les variables productives, par lalgorithme ci-dessus. e 2. On supprime les variables improductives, et les r`gles o` elles gurent. e u 3. Si laxiome S est improductif, la grammaire rduite a pour seule variable S, et e un ensemble de r`gles vide. e 4. Si laxiome S est productif, on dtermine toutes les variables accessibles de S. e Ceci donne les variables utiles. 5. On supprime les autres variables, et les r`gles o` elles gurent. La grammaire e u obtenue est la grammaire rduite. e Exemple 4.1. On consid`re la grammaire e Sa|X X XY Y b Les variables productives sont Y et S, et X est donc improductif. Apr`s suppression e de X et des r`gles o` X appara il reste la grammaire e u t, Sa Y b Version 19 septembre 2004

3.4. Vrications e Evidemment, seule S est accessible et la grammaire rduite est e S a.

65

Si lon calcule les variables accessibles a partir de la grammaire de dpart, on trouve ` e que toutes les variables sont accessibles. Lintersection des variables accessibles et des variables productives de la grammaire dorigine ne fournit donc pas les variables utiles.

Exemple 4.2. On consid`re la grammaire e S XY ZW X cX Y ab Z cY a | W SW W Les variables productives sont Y, Z, W . En particulier, S est improductif.

3.4.2

Grammaires propres

Soit G = (V, P, S) une grammaire sur A. Une -r`gle est une r`gle de la forme e e X donc une r`gle dont le membre droit est le mot vide. Un r`gle unitaire est une r`gle de e e e la forme X Y Y V donc une r`gle dont le membre droit est une variable. e Une grammaire est propre si elle na ni -r`gle ni r`gle unitaire. Nous allons montrer, e e dans cette section, que lon peut toujours rendre une grammaire propre. De mani`re e plus prcise, pour toute grammaire G, il existe une grammaire G qui est propre et e qui lui est quivalente, cest-`-dire qui engendre le mme langage, au mot vide pr`s. Il e a e e est bien clair quune grammaire sans -r`gle ne pourra jamais engendrer le mot vide. e Lquivalence est donc forcment au mot vide pr`s. e e e Une variable X est annulable si X ou si, de mani`re quivalente, L G (X). e e Pour quune variable X soit annulable, il sut quil existe une r`gle X , ou quil e existe une r`gle X Y1 Yn o` Y1 , . . . , Yn sont toutes des variables annulables. Ces e u conditions sont aussi ncessaires, et sont a la base de lalgorithme suivant. e ` Algorithme de calcul des variables annulables. 1. Calculer lensemble N0 des variables X telles quil existe une r`gle X . e 2. Calculer lensemble Ni+1 form de Ni et des variables X telles quil existe une e r`gle X avec Ni . e 3. Arrter lorsque Ni+1 = Ni . Cet ensemble est lensemble des variables annulables. e Version 19 septembre 2004

66

Chapitre 3. Grammaires

Une fois que les variables annulables sont connues, on modie la grammaire comme suit. Algorithme dlimination des -r`gles. e e 1. Calculer lensemble N des variables annulables. 2. Remplacer chaque r`gle X par toutes les r`gles obtenues en remplaant, e e c de toutes les faons possibles, les occurrences de variables annulables par le mot c vide. Sil y a n occurrences de variables annulables dans , cela donne 2 n r`gles. e 3. Supprimer les -r`gles. La grammaire obtenue est quivalente a la grammaire de e e ` dpart au mot vide pr`s, et est sans -r`gle. e e e Exemple 4.3. On consid`re la grammaire du langage de Dyck S aSbS | . Reme placer la variable S par le mot vide de toutes les faons possibles dans aSbS donne les c 4 mots aSbS, abS, aSb et ab. La grammaire propre obtenue est S aSbS | abS | aSb | ab . Exemple 4.4. Une autre grammaire du langage de Dyck est S aSb | SS | . La premi`re r`gle donne S aSb | ab, la deuxi`me S SS car la r`gle S S, qui est e e e e gnre deux fois par notre algorithme, est inutile. La grammaire propre obtenue est e ee donc S aSb | SS | ab . Venons-en aux productions unitaires. On suppose maintenant la grammaire sans r`gles. En vertu des lemmes prouvs plus haut, on a L G (X) LG (Y ) si X Y . Si e e X Y , alors les r`gles employes sont toutes unitaires parce que la grammaire est e e sans -r`gles. On dnit une relation sur les variables par e e X Y X Y Cette relation nest pas (encore) un ordre, et on pose X Y si X Y et Y X. Si X Y , on a LG (X) = LG (Y ), et on peut donc identier deux telles variables. Apr`s e une telle identication, la relation que nous avons dnie devient une relation dordre. e Il en rsulte que si X Y est une r`gle, alors X > Y . En particulier, les lments e e ee minimaux pour cette relation dordre ne sont pas membres gauches de r`gles unitaires. e On peut donc, en procdant a partir des lments minimaux, remplacer toute r`gle e ` ee e X Y par les r`gles X , pour tous les tels que Y . Cest le procd que e e e nous dcrivons plus formellement maintenant. e Algorithme dlimination des r`gles unitaires. e e 1. Calculer la relation dnie par X Y ssi X Y . e 2. Calculer la relation dquivalence de cette relation, dnie par X Y ssi X Y e e et Y X. 3. Choisir une variable par classe dquivalence, et remplacer toutes les occurrences e de toutes les variables quivalentes par ce reprsentant. Supprimer toutes les r`gles e e e unitaires entre variables quivalentes. e Version 19 septembre 2004

3.5. Formes normales

67

4. En commanant par les variables qui sont minimales dans lordre , remplaces c les r`gles unitaires X Y par toutes les r`gles X , pour tous les tels que e e Y . La grammaire obtenue est sans r`gles unitaires. e Exemple 4.5. Revenons a la grammaire des expressions arithmtiques (exemple 1.2) : ` e E E+T |T T T F |F F (E) | a | b | c Il y a deux r`gles unitaires : E T et T F . Lordre est E > T > F . On substitue a e ` T F les r`gles T (E) | a | b | c, et de mme pour E. On obtient nalement : e e E E + T | T F | (E) | a | b | c T T F | (E) | a | b | c F (E) | a | b | c

3.5

Formes normales

Plusieurs formes normales existent. Nous en prsentons deux. La premi`re, la forme e e normale de Chomsky, est tr`s ancienne, et est donne a titre historique. La deuxi`me, e e ` e la forme normale de Greibach, est plus sophistique. Elle a un intrt thorique, mme e ee e e si dans les applications, en analyse syntaxique par exemple, on ne lutilise pas. En eet, dans les applications, la simplicit dune grammaire est bien plus importante e quune forme normale. Un telle faorme normale, en ajoutant des variables auxiliaires, et en remplaant des r`gles par dautres, peut profondment modier lintuition que c e e lutilisateur de la grammaire dduit dune structure plus naturelle. e

3.5.1

Forme normale de Chomsky

Une grammaire est en forme normale de Chomsky, aussi appele forme quadratique de e Chomsky, si ses r`gles sont toutes de la forme e X YZ ou Xa

o` Y, Z sont des variables et a A est une lettre terminale. En dautres termes, les u membres droits de r`gles sont de longueur 1 ou 2. Sils sont de longueur 1, ce sont des e lettres, sils sont de longueur 2, ce sont de mots forms de deux variables. e Algorithme de mise en forme normale de Chomsky. On part dune grammaire propre. 1. On introduit un nouvel ensemble de variables Z = {Z a | a A} en bijection avec A, et on ajoute les r`gles Za a pour a A. e 2. Toute r`gle X o` est de longueur 1 est conserve. e u e Version 19 septembre 2004

68

Chapitre 3. Grammaires 3. Toute r`gle X o` || 2 est transforme en deux tapes e u e e toute lettre terminale a dans est remplace par la variable Z a ; e si || > 2, soit = Y1 Ym , on introduit de nouvelles variables T 1 . . . , Tm2 , et on remplace la r`gle X Y1 Ym par les m 1 r`gles e e X Y1 T1 , T1 Y2 T2 , . . . , Tm3 Ym2 Tm2 , Tm2 Ym1 Ym 4. La grammaire obtenue est en forme normale de Chomsky

La grammaire ainsi obtenue peut contenir des r`gles inutiles de la forme Z a a. e Exemple 5.1. Considrons la grammaire des mots de Dyck e S aSbS | abS | aSb | ab On introduit dabord deux variables Z a et Zb , et on remplace les lettres terminales. La grammaire devient S Za SZb S | Za Zb S | Za SZb | Za Zb Za a Zb b On introduit maintenant des variables et r`gles S Z a T1 , T1 ST2 et T2 Zb S. e On utilise de plus T3 Za Zb . La grammaire devient (lcriture nest videmment pas e e unique) : S Z a T1 | Z a T2 | Z a T3 | Z a Zb T1 ST2 T2 Z b S T3 SZb Za a Zb b

3.5.2

Forme normale de Greibach

Une grammaire G = (V, S, P ) sur lalphabet A est en forme normale de Greibach si toutes ses r`gles sont de la forme e X aY1 Ym , Une telle r`gle se rduit a X a si m = 0. e e ` Exemple 5.2. La grammaire S aSS | b du langage de Lukasiewicz est en forme normale de Greibach. Une grammaire en forme normale de Greibach et toujours propre. Nous allons prouver le thor`me suivant e e Thor`me 5.3. Pour toute grammaire propre, il existe une grammaire quivalente e e e en forme normale de Greibach. Version 19 septembre 2004 a A, Yi V .

3.5. Formes normales La preuve est eective.

69

On utilise, dans la construction, de faon rpte deux oprations que nous dcrivons c e ee e e auparavant, et qui tout en transformant la grammaire ne modient pas le langage. Nous les formulons sous forme de lemmes. Le premier est clair. Lemme 5.4. Soient Y 1 , . . . , Y r les r`gles de Y . On ne change pas le langage e engendr par la grammaire en remplaant une r`gle X Y par les r`gles X e c e e 1 . . . , X r . Le deuxi`me traite de la rcursivit gauche : une variable X est rcursive gauche sil e e e e existe une r`gle X X. Le lemme qui suit montre comment supprimer la rcursivit e e e gauche. Lemme 5.5. Si les r`gles de X sont e X X1 | X2 | | Xr X 1 | 2 | | s on ne change pas le langage engendr en introduisant une nouvelle variable Y , et en e remplaant les r`gles par les r`gles suivantes : c e e X 1 | 2 | | s X 1 Y | 2 Y | | s Y

Y 1 | 2 | | r Y 1 Y | 2 Y | | r Y

Preuve. Considrons une drivation X w dans la premi`re grammaire. Il lui correse e e pond un arbre de drivation comme celui dcrit dans la partie gauche de la gure 5.1. e e
X X X X j w1 i 2 w2 i 2 w3 i 1 w4 j w1 i 2 w2 i 2 w3 X Y Y Y i 1 w4

Fig. 5.1 Arbres de drivation pour w = w 1 w2 w3 w4 avec limination de la rcursivit e e e e gauche. De mani`re plus prcise, une drivation gauche de X en w se dcompose en e e e e X Xi1 Xi2 i1 Xim i2 i1 j im i2 i1 w0 w m Version 19 septembre 2004

70

Chapitre 3. Grammaires

Il lui correspond, dans la grammaire transforme, une drivation droite e e X j Y j im Y j im im1 Y j im im1 i2 Y j im im1 i2 i1 w0 w m Ceci prouve le lemme. Nous sommes prts pour la description de lalgorithme de mise en forme normale de e Greibach. Algorithme de mise en forme normale de Greibach. Soit G = (V, P, S) une grammaire sur A. On numrote les variables : soient X 1 , . . . , Xm e les variables numrotes. Les r`gles sont classes en trois catgories : e e e e e type 1 : Xi a pour une lettre terminale a. type 2 : Xi Xj avec j > i. type 3 : Xi Xj avec j i. Les variables Xj des r`gles de type 2 ou 3 sont appeles variables de tte. e e e 1. On limine les r`gles de type 3, par indice i croissant. Si on a limin les r`gles e e e e e de type 3 pour X1 , . . . , Xi1 , on les limine pour Xi en deux tapes : e e On substitue a chaque Xj de tte, avec j < i, toutes les r`gles pour X j ` e e prcdemment construites. Apr`s cette substitution, les variables en tte ont e e e e un indice strictement plus grand que j. On continue jusqu` ne plus avoir de a r`gles de type 3, sauf avec j = i, cest-`-dire des r`gles rcursives gauches. e a e e On limine toutes les r`gles rcursives gauche pour X i par la mthode expose e e e e e plus haut. Ceci introduit de nouvelles variables. 2. Les r`gles sont maintenant toutes de type 1 ou 2, sauf les r`gles pour les noue e velles variables. On substitue maintenant, par indice de variable dcroissant, aux e occurrences des variables Xj en tte des membres droits de r`gles les r`gles, les e e e membres droits des Xj -r`gles. Ceci fait dispara les variables en tte dans les e tre e r`gles de type 2. e 3. Les membres droits de r`gles des nouvelles variables commencent tous par des e variables anciennes ou des lettres. Si ce sont des variables, on leur substitue leurs membres droits de r`gles. e Exemple 5.6. Voici une grammaire, avec les r`gles dj` numrotes e ea e e X1 X 2 X3 X2 X 3 X1 | b X3 X 1 X2 | a La seule r`gle de type 3 est la r`gle X 3 X1 X2 . On remplace cette r`gle par un e e e ensemble de r`gles : dabord, on substitue a la variable de tte X 1 son membre droit e ` e de r`gle. On obtient e X3 X 2 X3 X2 , Version 19 septembre 2004

3.5. Formes normales

71

puis la variable X2 en tte est remplace par ses deux membres droits de r`gle : on e e e obtient nalement X3 X3 X1 X3 X2 | bX3 X2 . La grammaire scrit donc e X1 X 2 X3 X2 X 3 X1 | b X3 X3 X1 X3 X2 | bX3 X2 | a On limine maintenant la rcursivit gauche par lalgorithme de bascule : on introduit e e e une variable nouvelle Y , et les r`gles e X3 bX3 X2 | a X3 bX3 X2 Y | aY Il en rsulte la grammaire : e X1 X2 X3 Y X 2 X3 X 3 X1 | b bX3 X2 | a | bX3 X2 Y | aY X 1 X3 X2 | X 1 X3 X2 Y Y X 1 X3 X2 Y X 1 X3 X2 Y

Cette grammaire est sans r`gles de type 3. On peut donc faire dispara les r`gles de e tre e type 2, en substituant aux occurrences de X 3 en tte ses r`gles, puis de mme pour X 2 . e e e On obtient successivement X2 bX3 X2 X1 | aX1 | bX3 X2 Y X1 | aY X1 | b et X1 bX3 X2 X1 X3 | aX1 X3 | bX3 X2 Y X1 X3 | aY X1 X3 | bX3 do` la grammaire u X1 X2 X3 Y bX3 X2 X1 X3 | aX1 X3 | bX3 X2 Y X1 X3 | aY X1 X3 | bX3 bX3 X2 X1 | aX1 | bX3 X2 Y X1 | aY X1 | b bX3 X2 | a | bX3 X2 Y | aY X 1 X3 X2 | X 1 X3 X2 Y

Il reste a remodeler les r`gles de Y , en substituant les r`gles de X 1 en tte. Do` ` e e e u nalement X1 X2 X3 Y bX3 X2 X1 X3 | aX1 X3 | bX3 X2 Y X1 X3 | aY X1 X3 | bX3 bX3 X2 X1 | aX1 | bX3 X2 Y X1 | aY X1 | b bX3 X2 | a | bX3 X2 Y | aY bX3 X2 X1 X3 X3 X2 | aX1 X3 X3 X2 | bX3 X2 Y X1 X3 | aY X1 X3 X3 X2 | bX3 X3 X2 | bX3 X2 X1 X3 X3 X2 Y | aX1 X3 X3 X2 Y | bX3 X2 Y X1 X3 Y | aY X1 X3 X3 X2 Y | bX3 X3 X2 Y

Version 19 septembre 2004

72

Chapitre 3. Grammaires

Exemple 5.7. Voici, comme deuxi`me exemple, peut-tre plus simple, la grammaire e e de la forme postxe du langage de Lukasiewicz e S SSa | b On limine la rcursivit gauche par lalgorithme de bascule : e e e S b | bT T Sa | SaT Ensuite, il sut de remplace la variable S en tte des r`gles de T par ses membres e e droits de r`gle. Ceci donne e S b | bT T ba | bT a | baT | bT aT On ne stonne pas dobtenir, pour T un langage de Dyck retourn : ceci est bien la e e relation entre le langages de Lukasiewicz et le langage de Dyck.

3.6
3.6.1

Automates ` pile a
Dnition et exemples e

Il existe plusieurs variations sur les automates a pile. Nous en prsentons les plus ` e courantes dans la thorie. Dans les applications, a lanalyse syntaxique notamment, les e ` automates sont lg`rement dirents. e e e Nous introduisons dabord les machines a pile, et ensuite les automates a pile. Les ` ` automates a pile sont des machines a pile dotes dune condition dacceptation. ` ` e Une machine a pile M = (Q, Z, i, R) sur un alphabet A est compose des donnes ` e e suivantes : un ensemble ni dtats Q, e un alphabet de pile Z, une conguration initiale i Q Z, un ensemble ni de transitions R Q Z (A {}) Q Z . De mani`re image, une machine a pile est compose de trois units : e e ` e e une unit centrale, dont la conguration est symbolise par un tat, lment de Q ; e e e ee deux canaux, lun de lecture, lautre de lecture-criture ; le premier contient un mot e a analyser ; le deuxi`me est organis en pile, et sert a contenir de linformation auxi` e e ` liaire, en quantit non borne. e e La pile contient, a tout moment, un mot h sur Z. La machine se trouve dans un tat ` e q. Le couple (q, h) est appel une conguration de la machine. e En fonction de q et h, et de ce qui peut tre vu sur le canal dentre, la machine applique e e une transition approprie prise dans R. e Une transition (p, z, s, q, d) comporte un tat de dpart p, un tat darrive q. Elle lit e e e e un symbole s (lettre ou mot vide), dpile le symbole z, et empile le mot d. Au lieu e dcrire (p, z, s, q, d) R, on crira parfois (q, d) T (p, z, s), en considrant T comme e e e Version 19 septembre 2004

3.6. Automates a pile `

73

une application qui donne, pour un triplet de donnes (p, z, s) toutes les situations (q, d) e possibles. Dans une description graphique dune machine, les tats sont reprsents par des some e e mets, et une transition (p, z, s, q, d) est reprsente par une `che de ltat p vers ltat e e e e e q. Ltiquette contient deux parties : la premi`re est le symbole s lu, et la deuxi`me est e e e forme du couple z, d. Voir la gure 6.1. e s/z, d

Fig. 6.1 Reprsentation dune transition (p, z, s, q, d) dans une machine a pile. e ` Lensemble des congurations est Q Z . La conguration initiale i = (q0 , z0 ) QtimesZ est forme dun tat initial et dun lettre de pile initiale . Dans la cone e guration initiale, la pile nest donc pas vide, mais contient une lettre de lalphabet de pile. Un mouvement de la machine reprsente le passage dune conguration a une autre. e ` Voici une description prcise. Il y a mouvement de la conguration (p, h) vers la cone guration (q, h ), par lecture de s A {}, et on crit e (p, h) (q, h ) sil existe un mot f Z et une transition (p, z, s, q, d) dans R tels que h = f z et h = f d. Un mouvement consiste donc en quatre parties : (1) Suppression, dans la pile, de la lettre en haut de pile, note z ; e (2) Ecriture, dans la pile, du mot d ; (3) Lecture du symbole s sur la bande dentre ; e (4) Passage de ltat p a ltat suivant q. e ` e Chaque criture est donc prcde dun eacement ; ceci nest quune convention, et e e e e sert surtout a dcrire simplement le fait que la machine se bloque lorsque la pile est ` e vide, puisqualors il ny a rien a eacer. ` Chaque eacement est suivi de lcriture dun mot d. Si ce mot commence par la lettre e que lon vient deacer, cest comme si lon navait pas dpil. Si le mot d est vide, cela e e revient a dpiler seulement. Il est possible, dans ce mod`le, dempiler plusieurs lettres ` e e en une seule tape. e Le symbole lu sur la bande dentre peut tre le mot vide. Dans ce cas, cela signie e e que rien nest lu, et en particulier que la tte de lecture navance pas. e Enn, notons quil est fort possible que plusieurs r`gles sappliquent a une conguration e ` donne ; dans ce cas, la machine nest pas dterministe. e e Remarque 6.1. Comme il ressort de la dnition, nous avons couch la pile vers e e la droite : le symbole au sommet de la pile est la derni`re lettre du mot de pile. Nous e aurions pu aussi bien coucher la pile vers la gauche : le sommet de pile aurait alors t ee la premi`re lettre. Dans ce cas, la transition se dnit formellement par e e (p, h) (q, h ) Version 19 septembre 2004
s s

74

Chapitre 3. Grammaires

sil existe un mot f Z et une transition (p, z, s, q, d) dans R tels que h = zf et h = df . Une telle machine est une machine a pile a gauche, la premi`re est une machine ` ` e a pile a droite ou machine a pile tout court. On passe de lune a lautre en remplaant, ` ` ` ` c dans chaque transition, le mot d par d. Selon les cas, lune ou lautre version est plus commode. On note |== la fermeture transitive de la relation avec, comme exposant, le mot de A qui a permis la suite de mouvements. Formellement, (p, h) |== (q, h ) lorsquil existe des tats p0 , . . . , pn , des symboles s1 , . . . , sn A {} et des mots e tels que (p , h ) = (p, h), (p , h ) = (q, h ), s = s s et h0 , . . . , h n Z 0 0 n n 1 n (pj1 , hj1 ) (pj , hj )
sj s

j = 1, . . . , n .

Une suite de mouvements est aussi appel un calcul. Une conguration c est accessible e w sil existe un mot w A tel que est i |== c.` u Un automate a pile est une machine a pile munie dun ensemble de congurations ` ` terminales T Q Z . On crit A = (Q, Z, i, R, T ) et la machine M = (Q, Z, i, R) est e w e la machine sous-jacente. Un calcul i |== t est russi pour A si t T (rappelons que i est la conguration initiale). On dit que x est reconnu ou accept par lautomate a pile e ` si x est ltiquette dun calcul russi. On note le langage reconnu par lautomate a pile e e ` par w L(M, T ) = {w A | i |== t, t T } . Les trois faons dacceptations les plus rencontres sont par pile vide, par tats termic e e naux, ou par pile vide et tats terminaux. e Acceptation par pile vide : lensemble des congurations terminales est T = Q {}. Acceptation par tats terminaux : lensemble des congurations terminales est T = e pour une partie F de Q. F Z Acceptation par pile vide et tats terminaux : lensemble des congurations termie nales est T = F {} pour une partie F de Q. Les langages accepts, dans un automate, sont nots de faon dirente selon leur mode e e c e dacceptation. On note N (A) = L(M, Q {}) le langage accept par pile vide, e ) le langage accept par tats terminaux, T (A) = L(M, F Z e e L(A) = L(M, F {} le langage accept par pile vide et tats terminaux. e e On rencontre aussi lcriture Null(A) pour N (A). e Exemple 6.2. Considrons la machine a pile de la gure 6.2. Il y a un seul tat, et e ` e un seul symbole de pile, S, qui joue aussi le rle de fond de pile. o La pile sert de compteur : chaque a lu incrmente le compteur, chaque b le dcrmente. e e e Initialement, le compteur vaut 1 ; a aucun moment, sauf peut-tre a la n, le compteur ` e ` ne peut tre nul. Les langages N (M) et L(M) co e ncident parce quil ny a quun seul tat. Le langage reconnu est le langage de Lukasiewicz. Le langage T (M) est lensemble e des prxes du langage de Lukasiewicz. e Version 19 septembre 2004

3.6. Automates a pile `

75

b/S,

a/S, SS

Fig. 6.2 Un automate a pile pour le langage de Lukasiewicz. ` a/z, az /z, b/a,

Fig. 6.3 Un automate a pile pour le langage {a n bn | n 0}. ` Exemple 6.3. La machine a pile de la gure 6.3 est un automate qui reconna le ` t langage {an bn | n 0}. La conguration initiale est (0, z) et ltat nal est 1. On reconna par pile vide et tat e t e nal. Les calculs russi vont de 0 a 1. Ils empilent autant de fois la lettre a dans ltat e ` e 0 quils dpilent des lettres a dans ltat 1. Pour passer de 0 a 1, lautomate dpile la e e ` e lettre z qui est le fond de pile au dbut. Il y a, dans cet automate, une -transition. On e peut sen passer, en modiant lautomate. Exemple 6.4. Voici deux automates a pile pour reconna ` tre le langage {wcw | w {a, b} }, qui est engendr par la grammaire e S aSa | bSb | c . Le premier automate empile les lettres, comme il les lit, sur la pile en attendant la lettre c. Puis il dpile en vriant que la lettre lue est bien gale a celle empile. e e e ` e a/z, az c/z, a/a,

0 b/z, bz

1 b/b,

Fig. 6.4 Un automate a pile pour le langage des palindromes sur {a, b} avec marqueur ` central c. Le deuxi`me automate qui illustre une construction a venir est non dterministe. e ` e Le fond de pile est constitu de laxiome S. En prsence dun S en sommet de pile, on e e applique une r`gle de faon non dterministe. En prsence dune lettre en haut de pile, e c e e on vrie que la lettre lue lui est bien gale. e e

Version 19 septembre 2004

76

Chapitre 3. Grammaires

a/a, b/b, c/c,

/S, aSa /S, bSb /S, c

Fig. 6.5 Un autre automate a pile pour le mme langage. ` e

3.6.2

Langages algbriques et automates ` pile e a

Dans cette section, nous prouvons que les langages algbriques sont exactement les e langages reconnus par automates a pile acceptant par pile vide avec tats terminaux. ` e Thor`me 6.5. Pour tout langage algbrique L sur A, il existe un automate a pile A e e e ` a un seul tat tel que L = L(A). ` e Preuve. Soit G = (V, P, S) une grammaire pour L. Lautomate sera a pile a gauche. Il ` ` a un seul tat q. Son alphabet de pile est V A, le symbole de fond de pile est laxiome e S. Les transitions sont les quintuplets (q, a, a, q, ), pour a A, et (q, X, , q, ), pour toute r`gle (X, ). Il nest pas dicile de vrier que si S uX, il existe une suite e e
g

de mouvement

(q, S) |== (q, X) et rciproquement. Le thor`me en rsulte. e e e e Exemple. Considrons la grammaire e S TS | T aSb Les 5 transitions sont : (1) (2) (3) (4) (5) (a/a, ) (b/b, ) (, S, T S) (, S, ) (, T, aSb) abS ab correspond la suite de mots de

A la drivation gauche S T S aSbS e pile : S TS aSbS SbS bS S

(3) (5) (1) (4) (2) (4)

Thor`me 6.6. Pour tout automate a pile A, le langage L(A) est algbrique. e e ` e Version 19 septembre 2004

3.6. Automates a pile `

77

Preuve. Soit A = (Q, Z, i, R, T ) un automate a pile, a pile a gauche. Posons T = F {} ` ` ` avec F Q. Pour tous p, q Q et h Z , on dnit le langage e L(p, h, q) = {x A | (p, h) |== (q, )} En particulier, L(p, , q) = Par dnition, on a, avec i = (q0 , z0 ), e L(A) =
tF x

{}

si p = q si p = q

(6.1)

L(q0 , z0 , t)

(6.2)

Maintenant, on a la relation (pile a gauche !) ` L(p, hh , q) =


rQ

L(p, h, r)L(r, h , q)

(6.3)

En eet, pour x L(p, hh , q), on a (p, hh ) |== (q, ) On consid`re le plus court prxe y de x tel que e e (p, hh ) |== (r, h ) pour un r. Alors on a
w y x

(p, h) |== (r, ) donc y L(p, h, r), et bien s r (r, h ) |== (q, ) pour x = yw. u Maintenant, pour z Z, on a L(p, z, p ) =
(p,z,s,q,d)R

sL(q, d, p )

(6.4)

Les quations (6.1), (6.2), (6.3), (6.4) contiennent les informations dont on a besoin e pour construire une grammaire pour les langages L(p, z, q). Elle comporte les variables [p, z, q] pour p, q Q et z Z {}. Chaque variable va engendrer un des langages L(p, z, q), Il est commode dintroduire aussi des variables [p, h, q] pour engendrer les langages L(p, h, q), o` h parcourt les mots de Z de longueur borne par la longueur u e maximale des derni`res composantes (composante ) dans les transitions (p, z, s, q, ) e de lautomate. Ceci fait un nombre tr`s grand mais ni de variables. Sy ajoute une e variable S, axiome de la grammaire. Chacune des quations (6.1), (6.2), (6.3), (6.4) se e traduit en r`gles de la grammaire comme suit. e Lquation (6.1) donne les r`gles e e [p, , p] , pQ

Les variables [p, , q] pour p = q sont improductives. Version 19 septembre 2004

78 Lquation (6.2) se traduit dans les r`gles e e S [q0 , z0 , t] , tF

Chapitre 3. Grammaires

Rappelons que S est laxiome et F est lensemble des tats terminaux. e Chaque quation (6.3), avec h, h = , donne les r`gles e e [p, hh , q] [p, h, r][r, h , q] , rQ

A chaque fois, la longueur des mots h, h cods dans les variables des membres droits e diminue. Ces r`gles sont toutes quadratiques. e Chaque quation (6.4), donne les r`gles e e [p, z, p ] s[q, , p ] , (p, z, s, q, ) R

Il sagit donc dun nombre ni de r`gles, ici aussi. Le langage engendr par cette grame e maire est bien L(A). Exemple 6.7. Considrons lautomate a pile de la gure 6.3 que nous reproduisons e ` ici par commodit. e a/z, az /z, b/a,

Fig. 6.6 Un automate a pile pour le langage {a n bn | n 0}. ` Les tats sont 0, 1, et il y a trois transitions (0, z, a, 0, az), (0, z, , 1, ) et (1, a, b, 1, ). e La premi`re r`gle est e e S [0, z, 1] car la conguration initiales est (0, z) et le seul tat nal est 1. Maintenant, on utilise e les transitions pour obtenir [0, z, 1] a[0, za, 1] | [1, 1] [0, z, 0] a[0, za, 0] [1, a, 1] b[1, , 1] Les dcompositions donnent e [0, za, 1] [0, z, 0][0, a, 1] | [0, z, 1][1, a, 1] [0, za, 0] [0, z, 0][0, a, 0] En fait, on voit facilement que [0, a, 0] et donc [0, za, 0] et [0, z, 0] sont improductives. Apr`s suppression de ces variables, et la substitution de aux occurrences de la variable e [1, 1] la grammaire devient S [0, z, 1] [1, a, 1] [0, za, 1] Version 19 septembre 2004 [0, z, 1] a[0, za, 1] | b [0, z, 1][1, a, 1]

3.6. Automates a pile `

79

On peut identier S et [0, z, 1], et renommer [0, za, 1] en T et [1, a, 1] en X. Lcriture e devient S aT | Xb T SX Il ne reste plus qu` faire les substitutions videntes de X par b et de T par Sb pour a e obtenir la grammaire S aSb | qui nous est plus famili`re. e

3.6.3

Equivalences

Dans cette section, nous prouvons que les divers modes de reconnaissance que nous avons introduits sont quivalents. Auparavant, nous considrons encore un autre moe e d`le. e Une machine a pile A = (Q, Z, i, R) est dite a fond de pile testable sil existe une ` ` partition Z = F Y telle que tout mot de pile dune conguration accessible est dans {} F Y . Proposition 6.8. Pour tout automate a pile, il existe un automate a pile a fond de ` ` ` pile testable qui lui est quivalent. e Ceci signie donc que, quel que soit le mode de reconnaissance, on peut transformer un automate a pile en un automate a pile a fond de pile testable avec le mme mode ` ` ` e de reconnaissance. Preuve. Soit A = (Q, Z, (q0 , z0 ), R, T ) un automate a pile, soit Z une copie de Z, et soit ` {} ZZ lapplication dnie par et zh z h pour z Z, h Z . :Z e Soit alors B = (Q, (q0 , z0 ), Z Z, R R , T ) avec R = {(p, z , s, q, (d)) | (p, z, s, q, d) R} T = {(q, (h)) | (q, h) T }

Toute conguration accessible a partir de (q 0 , z0 ) est dans {} ZZ , et B est donc a ` ` fond de pile testable. Il nest pas dicile de vrier que e L(A, T ) = L(B, T ) Proposition 6.9. Soit K un langage. (1) Si K = T (A), pour un automate a pile A, alors K = N (B) pour un automate ` a pile B. ` (2) Si K = N (A), pour un automate a pile A, alors K = L(B) pour un automate ` a pile B. ` (3) Si K = L(A), pour un automate a pile A, alors K = T (B) pour un automate ` a pile B. `

Version 19 septembre 2004

80

Chapitre 3. Grammaires

Preuve. (1) On introduit deux nouveaux tats, t et r. Le premier sert a vider la pile e ` lorsque lon est dans un tat nal de A, le deuxi`me sert a empcher que la pile de e e ` e A se vide si ltat darrive nest pas nal. Plus prcisment, on consid`re que A est e e e e e a fond de pile testable, et que lalphabet de fond de pile est E. Soit F lensemble des ` tats terminaux de A Pour tout tat nal t F , on ajoute les -transitions (t, z, , r, ) e e et (r, z, , r, ) pour toute lettre z Z. Ceci permet de vider la pile. Ensuite, une production qui vide la pile dpile ncessairement une lettre de E. Une telle production e e (p, y, s, q, ) avec y E est supprime si q F , et est remplace par (p, y, s, r, y). Ainsi, e / e la pile nest plus vide, et la machine passe dans un tat o` elle bloque. Il rsulte de la e e u e construction que le nouvel automate reconna K par pile vide. t (2) Il sut de prendre B gal a A, avec tous les tats terminaux. e ` e (3) On part de A suppos a fond de pile testable, et on introduit un nouvel tat t qui e` e sera lunique tat terminal du nouvel automate. Une production de A qui aboutit a e ` un acceptation doit vider la pile, et conduire dans un tat nal. Elle est donc de la e forme (p, y, s, q, ), o` y est un symbole de fond de pile et q et un tat nal de A. Ces u e productions sont remplaces, dans le nouvel automate, par la production (p, y, s, t, ), e alors que les productions (p, y, s, q, ), o` q nest pas nal, sont supprimes. u e Dans le nouvel automate, un calcul aboutit a ltat t toujours avec une pile vide. Ceci ` e montre que les deux automates reconnaissent les mmes langages. e

3.7

Lemme ditration e

Il existe un lemme ditration pour les langages context-free semblable au lemme e ditration pour les langages rguliers. e e Thor`me 7.1. (Lemme ditration). Pour tout langage context-free L sur un ale e e phabet A, il existe un entier N ne dpendant que de L tel que tout mot w de L de e longueur au moins N poss`de une factorisation w = xuyvz telle que e 1. |uyv| N 2. uv = 3. xun yv n z L pour tout n 0 Voici dj` un exemple dutilisation de ce lemme. ea Exemple 7.2. Le langage L = {an bn cn | n 0} nest pas context-free. Supposons le contraire, et considrons le mot w = a N bN cN o` N est lentier du lemme ditration. e u e Alors w admet une factorisation w = xuyvz avec les proprits du lemme, et en paree ticulier xuuyvvz est dans L. Il en rsulte que u et v sont chacun des puissances dune e lettre, et lun des mots u ou v nest pas vide. Si par exemple u a + , alors u = ak pour un entier k > 0, et v = b xuuyvvz = aN +k bN + cN , et ce mot nest pas dans L. La mme contradiction sobtient si v est une puissance de la lettre c, et si u est une e puissance de la lettre b ou de la lettre c.

Version 19 septembre 2004

3.7. Lemme ditration e Comme consquence immdiate, nous avons la proprit suivante. e e ee

81

Proprit 7.3. Lintersection de deux langages algbriques nest pas toujours un e e e langage algbrique. e En eet, considrons les langages R = {a n bn ck | n, k 0} et R = {ak bn cn | n, k 0}. e Ces langages sont algbriques, et leur intersection ne lest pas puisque cest le langage e L de lexemple prcdent. e e En revanche, on a le rsultat que voici. e Proposition 7.4. Lintersection dun langage algbrique et dun langage rgulier est e e encore un langage algbrique. e Preuve. Soit A = (Q, (q0 , z0 ), Z, R, F {}) un automate a pile reconnaissant un lan` gage algbrique (par pile vide et tats terminaux) et soit B = (P, i, T ) un automate e e dterministe complet reconnaissant un langage rgulier K. On construit un automate e e a pile A pour lintersection en faisant le produit de lautomate A par lautomate B. ` Les tats de A sont les lments de Q P , la conguration initiale est ((q 0 , i), z0 ), les e ee tats terminaux sont F T , et les `ches sont e e ((p, p ), z, a, (q, p a), ), et ((p, p ), z, , (q, p ), ), Il est clair que A engendre L K. Pour la dmonstration du lemme ditration, nous avons besoin dun lemme sur les e e arbres. Lemme 7.5. Dans un arbre de hauteur k o` chaque sommet a au plus m ls, le nombre u k. de feuilles est au plus m Preuve. Si larbre est de hauteur 0, la racine est son unique feuille. Sinon, labre a au plus m sous-arbres, chacun de hauteur k 1, donc chacun ayant au plus m k1 feuilles. Le nombre total des feuilles est donc au plus m k . Preuve du lemme ditration. Soit L un langage context-free. On suppose L engendr e e par une grammaire G propre. Soit k le nombre de variables de la grammaire, et soit m la longueur maximale des membres droits des r`gles de G. On pose N = m (k+1) . Nous e prouvons le lemme pour cet entier. Soit w un mot de L. Un arbre de drivation de w dans G est un arbre o` chaque sommet e u a au plus m ls. Chaque feuille a pour tiquette une lettre, et le nombre de feuilles de e larbre est gale a la longueur du mot w. Appelons arbre dpouill larbre priv de ses e ` e e e feuilles. Si w est de longueur au moins N , alors larbre est de hauteur au moins k + 1 et larbre dpouill a une hauteur au moins k. Il existe donc un chemin de la racine a une feuille e e ` Version 19 septembre 2004 pour (p, z, , q, ) R . pour a Aet(p, z, a, q, ) R

82 S

Chapitre 3. Grammaires

Fig. 7.1 Lemme ditration. e S

X X

X X x u y Fig. 7.2 Lemme ditration, vue clate. e e e (de larbre dpouill) de longueur au moins k. Il existe donc deux nuds, sur un chemin e e de la racine vers une feuille, tiquets par la mme variable. e e e Considrons un tel chemin de longueur maximale. Les sommets qui le composent, depuis e la feuille vers la racine, sont nots (t 0 , t1 , . . . , tk , . . . , r). Ici t0 est une feuille de larbre e dpouill, t1 son nud parent, et r la racine. On peut fort bien avoir t k = r. Les e e tiquettes de t0 , . . . , tk sont des variables, et comme il y a k variables, il existe deux e indices i, j avec 0 i < j k tels que ti et tj ont la mme variable X en tiquette. e e Soient Di larbre de drivation de racine ti , et Dj larbre de drivation de racine tj . Soit e e y le mot des feuilles de Di et y le mot des feuilles de Dj . Comme nous avons choisi un chemin de longueur maximale au dpart, la hauteur de D j est j k, la longueur e de y est au plus N . De plus, si lon supprime le sous-arbre de racine t i dans Dj , en Version 19 septembre 2004 v z

3.7. Lemme ditration e

83

ne gardant que le nud, on obtient un arbre de drivation dont le mot des feuilles est e uXv pour des mots u, v dont lun au moins nest pas vide car t j a au moins deux ls (car il ny a pas de r`gle unitaire) dont lun nest pas sur le chemin vers t i . De la mme e e mani`re, en supprimant Di dans larbre de drivation global, on obtient un arbre dont e e le mot des feuilles est de la forme xXz pour des mots x, z. De plus, on obtient des drivations e S xXz, X uXv, X y ce qui dmontre le thor`me. e e e

Version 19 septembre 2004

84

BIBLIOGRAPHIE

Bibliographie

[1] A. V. Aho and J. D. Ullman. The Theory of Parsing, Translating and Compiling, volume I : Parsing. Prentice Hall, 1972. [2] A. V. Aho and J. D. Ullman. The Theory of Parsing, Translating and Compiling, volume II : Compiling. Prentice Hall, 1973. [3] A. V. Aho and J. D. Ullman. Principles of Compiler Design. Addison-Wesley, 1977. [4] J. Almeida. Finite Semigroups and Universal Algebra. World Scientic, 1994. [5] A. Arnold. Finite Transition Systems. Prentice Hall, 1997. [6] J.-M. Autebert. Thorie des langages et des automates. Masson, 1994. e [7] M.-P. Bal. Codage symbolique. Masson, 1993. e [8] C. Benzaken. Syst`mes formels. Masson, Paris, 1991. e [9] J. Berstel. Transductions and Context-Free Languages. Teubner, 1979. [10] M. Crochemore and W. Rytter. Jewels in Stringology. Wiley and Sons, 2002. [11] S. Eilenberg. Automata, Languages and Machines, volume B. Academic Press, 1976. [12] S. Ginsburg. The Mathematical Theory of Context-Free Languages. McGraw-Hill, 1966. [13] E. Graedel, W. Thomas, and T. Wilke, editors. Automata, Logics, and Innite Games, volume 2500 of Lect. Notes Comp. Sci. Springer-Verlag, 2002. [14] D. Gries. Compiler Construction for Digital Computers. Wiley and Sons, 1971. [15] M. A. Harrison. Introduction to Formal Language Theory. Addison-Wesley, 1978. [16] J. E. Hopcroft, R. Motwani, and J. D. Ullman. Introduction to Automata Theory, Languages and Computation. Addison-Wesley, 2001. second edition. [17] J. E. Hopcroft and J. D. Ullman. Formal Languages and Their Relation to Automata. Addison-Wesley, 1969. [18] J. M. Howie. Automata and Languages. Clarendon Press, 1991. [19] G. Lallement. Semigroups and Combinatorial Applications. Wiley and Sons, 1979. [20] P. Linz. An Introduction to Formal Languages and Automata. Jones and Bartlett, 2001. 3` dition. ee [21] M. Lothaire. Combinatorics on Words, volume 17 of Encyclopedia of Mathematics. Addison-Wesley, 1983. Reprinted in the Cambridge Mathematical Library, Cambridge University Press, 1997. Version 19 septembre 2004

BIBLIOGRAPHIE

85

[22] M. Lothaire. Algebraic Combinatorics on Words, volume 90 of Encyclopedia of Mathematics. Cambridge University Press, 2002. [23] A. Meduna. Automata and Languages. Theory and Applications. Springer-Verlag, 2000. [24] E. Moore, editor. Sequential Machines Selected Papers. Addison-Wesley, 1964. [25] D. Perrin and J.-E. Pin. Automata on Innite Words. Academic Press, 2003. [26] J.-E. Pin. Varieties of Formal Languages. Plenum Press, 1986. [27] E. Roche and Y. Schabes. Finite-state Language Processing. MIT Press, 1997. [28] A. Salomaa. Theory of Automata. Pergamon Press, 1969. [29] A. Salomaa. Formal Languages. Academic Press, 1973. [30] A. Salomaa. Computation and Automata. Cambridge University Press, 1985. [31] P. Sbold. Thorie des automates Mthodes et exercices corrigs. Vuibert, 1999. ee e e e [32] J. van Leuuwen, editor. Handbook of Theoretical Computer Science, volume 1. MIT Press, 1990. [33] P. Wolper. Introduction a la calculabilit. InterEditions, 1991. ` e

Version 19 septembre 2004

Você também pode gostar