Travaux Diriges´ Mots, langages et Automatesuniv-nktt.yolasite.com/resources/compilation cours et...

35
Bruno Mery (Doctorant, LaBRI bureau 123, [email protected]) Universit´ e de Bordeaux, ann´ ee 2007-2008 Informatique Th´ eorique 1 INF154T Groupe CSB5A2 Travaux Dirig´ es Mots, langages et Automates 1 Mots et expressions rationelles Rappels – Notation : on notera conventionellement a, b, c ... eventuellement avec un ou plusieurs indices i) les lettres d’un alphabet, g´ en´ eralement not´ e A. – De mˆ eme, on notera u, v , w ... eventuellement indic´ es) les mots d’un alphabet A, c’est-` a-dire compos´ es d’un nombre fini (´ eventuellement nul) de lettres de A, et on note u = a 1 ... a n pour d´ efinir un mot, |u| = n pour d´ efinir sa longueur, |u| a i = k pour dire que le mot u comporte k fois la lettre a i , u A * pour d´ eterminer que u est un mot fini de l’alphabet A. – On note ε le mot vide, ou mot de longueur nulle, qui est l’´ el´ ement neutre pour la concat´ enation (ε u = uε = u, u). – Pour un ensemble A donn´ e, l’adjonction d’une ast´ erisque en expo- sant se prononce ”A ´ etoile de Kleene”, et on a par d´ efinition A * = S 0i<+A i (un ´ el´ ement de A * est donc bien un k-uple avec k N d’´ el´ ements de A, et donc une s´ equence d’´ el´ ements de A). – Un langage de mots sur l’alphabet A est un ´ el´ ement L P(A * ) – au- trement dit, un ensemble de mots sur cet alphabet. – Une expression rationnelle e ecrivant un langage sur l’alphabet A est efinie inductivement comme suit : – soit e est r´ eduite ` a une lettre, auquel cas elle repr´ esente le mot com- pos´ e de cette lettre (e = a A), 1

Transcript of Travaux Diriges´ Mots, langages et Automatesuniv-nktt.yolasite.com/resources/compilation cours et...

Bruno Mery (Doctorant, LaBRI bureau 123, [email protected])Universite de Bordeaux, annee 2007-2008Informatique Theorique 1INF154T Groupe CSB5A2

Travaux DirigesMots, langages et Automates

1 Mots et expressions rationelles

Rappels– Notation : on notera conventionellement a,b,c . . . (eventuellement

avec un ou plusieurs indices i) les lettres d’un alphabet, generalementnote A.

– De meme, on notera u,v,w . . . (eventuellement indices) les mots d’unalphabet A, c’est-a-dire composes d’un nombre fini (eventuellementnul) de lettres de A, et on note u = a1 . . .an pour definir un mot, |u|= npour definir sa longueur, |u|ai = k pour dire que le mot u comportek fois la lettre ai, u ∈ A∗ pour determiner que u est un mot fini del’alphabet A.

– On note ε le mot vide, ou mot de longueur nulle, qui est l’element neutrepour la concatenation (εu = uε = u, ∀u).

– Pour un ensemble A donne, l’adjonction d’une asterisque en expo-sant se prononce ”A etoile de Kleene”, et on a par definition A∗ =⋃

0≤i<+∞ Ai (un element de A∗ est donc bien un k-uple avec k ∈ Nd’elements de A, et donc une sequence d’elements de A).

– Un langage de mots sur l’alphabet A est un element L ∈P(A∗) – au-trement dit, un ensemble de mots sur cet alphabet.

– Une expression rationnelle e decrivant un langage sur l’alphabet A estdefinie inductivement comme suit :– soit e est reduite a une lettre, auquel cas elle represente le mot com-

pose de cette lettre (e = a ∈ A),

1

– soit e est la concatenation de deux expressions e′ et e′′, et ellerepresente les mots qui sont la concatenation de deux expressions(e.g. e = ab,(a,b) ∈ A2 : le mot ab de longueur 2),

– soit e est l’union de deux expressions e′ et e′′, auquel cas ellerepresente l’ensemble des mots representes par e′ ou e′′ (e.g. e =u+ v : le mot u et le mot v),

– soit e est l’etoile de Kleene d’une expression e′, auquel cas ellerepresente l’ensemble des mots representes par e′ autant de foisque souhaite (y compris aucune). Par exemple, a∗ est l’ensemble{ε,a,aa,aaa, . . .}.

– Exemples :– a(a + b)∗b est l’ensemble des mots de {a,b}∗ commencant par a et

finissant par b.– ((a + b)(a + b))∗ est l’ensemble des mots de {a,b}∗ de longueur

paire.– A∗uA∗ est l’ensemble des mots de A∗ ayant u pour facteur.

Exercice 1 Soit A = {a,b,c}. Donner des expressions rationelles pour cha-cun des langages suivants :

1. L’ensemble des mots de A∗ qui comptent au moins une fois la lettre a

2. L’ensemble des mots de A∗ qui ne commencent pas par la lettre a.

3. L’ensemble des mots de A∗ contenant au moins un a et un b, tels quela premiere occurrence de a precede la premiere occurrence de b.

Corrige 1

1. A∗aA∗

2. (b+ c)A∗

3. c∗a(a+ c)∗bA∗

2

2 Automates deterministes

Rappels– Les Automates sont une classe de formalismes permettant de

modeliser divers phenomenes, dont certains langages.– Ici, on parlera d’automates d’etats finis (c’est-a-dire representables avec

un nombre fini d’etats), definis par rapport a un alphabet A.– Un automate A est defini par une collection d’etats Q = {q0,q1 . . .}, et

un ensemble de transitions sur ces etats T = {t0, t1, . . .}.– On distingue, dans Q, des etats que l’on qualifie d’initiaux, et des etats

que l’on qualifie de terminaux (rien ne s’oppose a ce qu’un etat initialsoit aussi terminal.

– Une transition t associe un etat q (dit ”de depart”) a un etat q′ (dit”d’arrivee”), et est etiquetee par une lettre a ∈ A.

– Un automate A est dit deterministe quand, pour tout etat q, il n’y a auplus qu’une transition emanant de cet etat et etiquetee par une memelettre a ∈ A. Dans un automate deterministe, il n’y a qu’un et un seuletat initial.

– Un automate deterministe est complet quand, pour tout etat q, il y aexactement une transition etiquetee par chacune des lettres de A.

– Un mot u de A∗ est reconnu par l’automate fini deterministe A s’ilexiste un chemin reliant un etat initial a un etat terminal, dont lesetiquettes des transitions sont constituees par les lettres du mot u(dans le meme ordre).

– Le langage reconnu par l’automate A est l’ensemble des mots recon-nus par A .

– Un langage L est reconnaissable s’il existe un automate fini deterministequi le reconnaisse.

– Ces formalites mises a part, un automate est surtout represente parun graphe, dans lequel les etats sont des nœuds et les transitions, desarcs. On signale les etats initiaux par une double fleche entrante, lesterminaux par une double fleche sortante, et on peu optionellementetiqueter les etats.

3

Exercice 2 Donner une expression rationelle representant les langages re-connus par chacun des automates suivants :

FIG. 1 – Un automate

FIG. 2 – Un autre automate

Corrige 2

1. Fig. 1 : (ab)∗(b+aa+ ε)

2. Fig. 2 : (ab)+(aba+b)a(aa)∗

Exercice 3 Donner, pour chaque langage sur A = {a,b,c} donne par lesexpressions rationelles suivantes, un automate fini deterministe qui le re-connaisse :

1. (a+b)∗ca∗

2. A∗(b+ c)

3. A∗aA∗bA∗

Corrige 3 Voir figure 3. Penser au determinisme des automates obtenus. . .

4

FIG. 3 – Les automates de l’exercice 3

Exercice 4 Donner des automates finis deterministes sur {a,b} reconnais-sant les langages. . .

1. l’ensemble des mots de longueur paire,

2. l’ensemble des mots se terminant par a,

3. l’ensemble des mots contenant au plus une occurrence de la lettre a,

4. l’ensemble des mots contenant au moins deux occurrences de leurderniere lettre,

5. l’ensemble des mots ayant pour prefixe aba,

6. l’ensemble des mots ayant pour suffixe aba,

7. l’ensemble des mots ayant pour facteur aba,

8. l’ensemble des mots comportant un nombre pair de a et un nombreimpair de b.

Corrige 4 Les automates des 1, 2 et 3 sont donnes en Fig. 4. Le 4 (le pluslong et delicat, sans dessin. . . ) peut etre decrit comme suit : un etat initial,un etat ”a”, un etat ”b”, un etat ”ab”, un etat ”bb” (final), un etat ”aa”(final), un etat ”abb” (final), un etat ”aab” (final), un etat ”aabb” (final).Transitions : a de initial vers ”a”, b de initial vers ”b”, a de ”a” vers ”aa”, b

5

de ”a” vers ”ab”, a de ”b” vers ”ab”, b de ”b” vers ”bb”, boucle a sur ”aa”,transition b de ”aa” vers ”aab”, a de ”ab” vers ”aab”, b de ”ab” vers ”abb”,a de ”bb” vers ”abb”, boucle b sur ”bb”, boucle a sur ”aab”, transition bde ”aab” vers ”aabb”, boucle b sur ”abb”, transition a de ”abb” a ”aabb”,boucles a et b sur ”aabb” (ouf). Les automates 5, 6, 7 sont donnes Fig. 5(le corps est similaire, les conditions prefixe-suffixe-facteur influent sur lesretours autorises). Enfin, l’automate 8 est donne Fig. 6 : il suffit de conserveren memoire simultanement le nombre de a modulo 2 et le nombre de bmodulo 2.

FIG. 4 – Premiers automates de l’exercice 4

6

FIG. 5 – Exercice 4 : prefixe, suffixe, facteur

FIG. 6 – Exercice 4 : pair / impair

7

3 Quelques algorithmes sur les automates

Rappels– Completer un automate deterministe :

– Pour completer un automate deterministe, s’il n’est pas deja com-plet, il suffit de rajouter un etat (non final, non initial) ”puits”, necomportant aucune transition sortante mis a part une boucle pourchaque lettre de l’alphabet concerne, et vers lequel on envoie toutesles transitions ”manquantes”.

– Intersection de langages reconnaissables :– Soient L1, L2 des langages sur A∗ reconnus respectivement par les

automates finis deterministes complets A1 et A2. Alors L1 ∩L2 estreconnaissable, par l’automate produit A1×A2.

– A1×A2 est construit comme suit : les etats sont des couples d’etats(q,r) ou les q sont des etats de A1 et r, des etats de A2. Les etatsinitiaux sont les couples d’etats respectivement initiaux dans lesdeux automates, de meme pour les etats finaux.

– Il y a une transition de (q,r) a (q′,r′) par la lettre ai dans l’automateproduit si, et seulement si, il y a une transition de q a q′ et de r a r′

par la meme lettre ai dans les automates de depart.– Des simplifications sont possibles (notamment dans le cas des etats

”puits”).– Automates non deterministes avec ε-transitions :

– Un automate non deterministe est analogue d’un automate deterministe,a la difference pres qu’un etat peut posseder plusieurs transitionssortantes etiquetees par une meme lettre, et peut avoir plusieursetats initiaux. Il peut egalement utiliser des transitions etiqueteespar ε , qui doivent se comprendre comme ”on peut passer d’un etata un autre sans consommer de lettre”.

– Theoreme de Kleene : les langages qui sont reconnus par des auto-mates a etats finis non deterministes avec ε-transitions sont aussireconnus par des automates a etats finis deterministes complets,et representables par des expressions rationnelles (les reciproquessont vraies). On appelle cette classe de langage langages rationnels(ou parfois langages reguliers).

– Determinisation d’un automate :– Le processus de determinisation d’un automate fini non-deterministe

consiste a construire, pas a pas, l’ensemble des etats et l’ensembledes transitions de l’ (d’un) automate fini deterministe equivalent.

– Le principe est le suivant : pour chaque etat de l’automate non

8

deterministe, on repere la classe d’etats accessible par un ensemblede transitions etiquetees par la meme lettre, qui formera un etatdans l’automate deterministe ; on identifie ensuite les transitionsnecessaires a la reproduction du comportement de l’automate dedepart.

– Plus precisement, soit une classe d’etats representant Q0 l’ensembledes etats initiaux qinit1 ,qinit2 , . . . : ce sera l’etat initial du nouvelautomate. Soit ensuite la classe Q0:a qui regroupe l’ensemble desetats accessibles depuis les etats initiaux par toutes les transitionsetiquetees par a. C’est un etat du nouvel automate, et on a une tran-sition (unique) partant de Q0, dirigee sur Q0:a, etiquetee par a. Onrepete pour toutes les lettres de l’alphabet concerne.

– Par la suite, on re-itere ce procede pour tous les nouvelles classesd’etats que l’on definit, jusqu’a obtenir un ensemble de classes,et de transitions entre ces classes, qui soit stable. On distingue etconfond les classes suivant leur comportement face a la receptiondes lettres. . . Les etats finaux sont les classes dont un membre etaitfinal dans l’automate de depart.

– On peut prouver par induction que cette procedure termine enO(2n), pour un automate non deterministe de n etats.

– Union de langages reconnaissables :– Soit deux langages reconnaissables par deux automates finis

deterministes A1 et A2.– Alors l’union des deux langages est reconnue par l’automate fini

non deterministe A1+2, construit en prenant l’union des deux auto-mates, avec pour etats initiaux les etats initiaux de chacun des auto-mates de depart, et un unique etat final, nouveau, accessible depuischacun des anciens etats finaux par des ε-transitions (constructiontriviale).

– Alors cette meme union des langages est aussi reconnaissable parun automate fini deterministe, forme par la determinisation deA1+2.

9

Exercice 5 Completer les automates suivants (sur A = {a,b,c}). A quellesexpressions rationnelles correspondent-ils ?(Voyez les figures 7, 8 et 9.)

FIG. 7 – Automate 1/3, exercice 5

FIG. 8 – Automate 2/3, exercice 5

10

FIG. 9 – Automate 3/3, exercice 5

Corrige 5 Dessins sur commande (peu fondamentaux). Il s’agit simple-ment de rajouter un etat puits, avec une boucle a,b,c et aucune autre tran-sition sortante, et d’y faire arriver les quelques transitions manquantes. En1 : a et c depuis l’etat du bas et celui du haut, a,b,c pour le central ; en2 : c de tous les etats et a,b,c de l’etat final ; en 3 : a,c de l’etat en bas agauche, b,c de l’etat en haut a droite. Des expressions representant ces lan-gages sont : pour 1, (a + b + c)b, pour 2 : (a(ba)∗a + b(ab)∗b)b∗a, pour 3 :((aa+bb)∗cc∗(a+b))∗(aa+bb)∗cc∗. La completation1 est instantanee et peuutile en pratique, sauf pour la resolution de l’exercice suivant.

Exercice 6 Soit A un automate fini deterministe complet. Pour le ma-nipuler, on dispose des primitives initial(A), renvoyant l’etat q0 ini-tial, final(q) qui renvoit vrai quand l’etat q est final, apply(q, a) qui,en appliquant la transition etiquetee par la lettre a a l’etat q, renvoie l’etatd’arrivee. Considerons un mot u donne sous la forme d’un tableau u[0],u[1]... de longueur n.

Donner alors un algorithme recon(A, u, n) qui renvoie vrai si lemot u de longueur n est reconnu par l’automate A , faux sinon.

Quelle est sa complexite (selon n) en temps ? en espace ?

1Si quelqu’un dispose d’un synonyme correct pour rendre complet qui ne fasse pasreference au complement, je suis preneur.

11

Corrige 6 Avec une definition recursive :

recon(A, u, n) = apply_w(initial(A), u, n)apply_w(q, u, n) =

if n=0 final(q)else apply_w(apply(q, u[0]), &u[1], n-1)

(Ou &u[1] est le mot u pris a partir de la deuxieme lettre.) La complexiteest de O(n) en temps, O(1) en espace, quel que soit l’automate (qui, lui,occupe une complexite de Kolmogorov de O(|Q|+ |T |)). On peut faire lesdemonstrations par induction si necessaire.

Exercice 7 Le miroir d’un mot u est le mot compose des memes lettres,ecrites en ordre inverse de celles de u. En supposant que le langage L estreconnaissable par un automate fini deterministe complet A et que ce der-nier dispose d’un unique etat final, donner (l’idee d’) une methode pourconstruire un automate reconnaissant l’ensemble des miroirs des mots de L(le langage miroir de L). Dans le cas general, le langage miroir d’un langagereconnaissable est-il reconnaissable ?

Corrige 7 Idee de procedure : on echange l’etat final et l’etat initial, puison inverse les directions des transitions constructives (i.e., toutes sauf cellesmenant a un etat ”puits”). Il y a des precisions a apporter pour que cetteconstruction soit deterministe (des problemes avec les transitions entrantesetiquetees par la meme lettre). . . L’important est que, dans le cas general,cela marche aussi, mais peut donner des automates non deterministes (enparticulier a plusieurs etats initiaux) : il suffit alors de determiniser leresultat.

Exercice 8 Pour chacune des paires d’automates suivantes (sur A = {a,b}),construire un automate fini deterministe reconnaissant l’intersection deslangages definis au depart. Donner ensuite une expression rationelle cor-respondant a cet automate.(Voyez les figures 10, 11 et 12.)

12

FIG. 10 – Automate 1/3, exercice 8

FIG. 11 – Automate 2/3, exercice 8

13

FIG. 12 – Automate 3/3, exercice 8

Corrige 8 Procedure graphique. L’idee est d’appliquer directement l’algo-rithme donne dans les rappels, en envoyant les transitions surnumerairessur un unique etat puits (qu’on peut eventuellement supprimer a la fin) ;on a des automates qui disposent de paires des etats des automates ini-tiaux (penser a numeroter les automates avant. . . ). Expressions rationellescorrespondant : 1 : aaba, 2 : a + ab + ba (les mots comportant exactementun a et au plus un b), 3 : beaucoup trop complexe dans ce cadre (mots delongueur paire comportant obligatoirement le facteur aaa et plus aucun aapres ce facteur). Automates representes en Fig. 13, 14 et 15.

14

FIG. 13 – Automate 1, Exercice 8

FIG. 14 – Automate 2, Exercice 8

15

FIG. 15 – Automate 3, Exercice 8

16

Exercice 9 Pour chacun des automates non deterministes suivants (surA = {a,b}), appliquer la procedure de determinisation2 : (Voyez les figures16, 17 et 18.)

FIG. 16 – Automate 1/3, exercice 9

2Telle quelle, sans optimisations. Il est fortement conseille d’etiqueter les etats avant decommencer !

17

FIG. 17 – Automate 2/3, exercice 9

18

FIG. 18 – Automate 3/3, exercice 9

19

Corrige 9 L’idee est d’appliquer mecaniquement l’algorithme de determinisation,pour s’y familiariser. Je donne le tableau de construction des etats et tran-sitions a chaque fois. . . (en supposant les etats d’origine numerotes) :

1 : Mise en bouche, on pourrait remarquer que A∗aA∗aA∗ est rigoureu-sement equivalente a b∗ab∗aA∗.

a b0 (0, 1) 0

(0, 1) (0, 1, 2) (0, 1)(0, 1, 2) (0, 1, 2) (0, 1, 2)

Voir Fig. 19.

FIG. 19 – Automate 1, Exercice 9

2 : Moins immediat mais assez rapide.

a b0 (0, 1) -

(0, 1) (0, 1) (2, 3)(2, 3) (0, 3) -(0, 3) (0, 1, 3) -

(0, 1, 3) (0, 1, 3) (2, 3)

20

FIG. 20 – Automate 2, Exercice 9

Voir Fig. 20.3 : Volontairement abscons. On a ici des ε-transitions fondamentale-

ment inutiles (on traite cela en posant que tout ensemble d’etats compre-nant 4 ou 5 contient aussi 6), deux etats de depart, et il est plus facile devisualiser quoi que ce soit sur l’automate de depart que celui d’arrivee(qui n’est pas du tout minimal). Le langage est ((aa + bb)A∗ab(a + b))∗(aa +bb)A∗ab.

a b(0, 1) 2 3

2 (4, 6) -3 - (5, 6)

(4, 6) (6, 7) 6(5, 6) (6, 7) 6(6, 7) (6, 7) (6, 8)

6 (6, 7) 6(6, 8) (6, 7, 0, 1) (6, 0, 1)

(6, 7, 0, 1) (6, 7, 2) (6, 8, 3)(6, 0, 1) (6, 7, 2) (6, 3)(6, 7, 2) (6, 7, 4) (6, 8)(6, 8, 3) (6, 7, 0, 1) (6, 1, 5)

(6, 3) (6, 7) (6, 5)(6, 7, 4) (6, 7) (6, 8)(6, 1, 5) (6, 7) (6, 3)

(Note : les classes d’etats sont des ensembles, donc (6,5) et (5,6) represententla meme classe.) Voir Fig. 21.

21

FIG. 21 – Automate a ne pas dessiner souvent. . .

22

Exercice 10 Pour chaque expression rationnelle (sur A = {a,b}), construireun automate deterministe correspondant, eventuellement en construisantd’abord un automate non deterministe.

1. ba+(a+bb)a∗b

2. (bb+a)∗(aa+b)∗

3. (aa)∗+(aaa)∗

4. (aa+bb+(ab+ba)(aa+bb)∗(ab+ba))∗

Corrige 10 Dans certains cas, il est plus rapide de faire l’union de plu-sieurs automates et de determiniser le resultat. C’est le cas pour le pre-mier (qui est assez simple). . . Pour le troisieme, il suffit de conserver enmemoire simultanement la longueur du mot modulo 2 et 3 (ce qui necessite6 etats), et il est beaucoup plus rapide de concevoir directement un auto-mate deterministe pour le dernier cas (l’union des sous-parties ne posantpas de problemes).

Le deuxieme automate est le plus long a realiser. On peut explorertoutes les possibilites par un automate non deterministe (en donnant destransitions avec a si on suppose qu’on se trouve dans la premiere partie, asi on se suppose dans la deuxieme, etc.), et determiniser le resultat : c’estlong. On peut aussi determiner les motifs qui ne sont pas dans le langage(bab, baaa, . . . ), faire un automate et donner le complementaire. Ou encoreavoir la bonne intuition directement.

Exemples de corrections en Fig. 22, 23, 24, 25.

23

FIG. 22 – Automate 1, Exercice 10

FIG. 23 – Automate 2, Exercice 10

24

FIG. 24 – Automate 3, Exercice 10

FIG. 25 – Automate 4, Exercice 10

25

4 Interlude : exemples concrets

Les automates finis, deterministes ou non, sont certes un moyende representer graphiquement une certaine classe de langages. Plusconcretement, il s’agit egalement d’une forme de machines d’etats finis, ser-vant a modeliser de nombreuses situations pour formaliser une intelligenceartificielle elementaire (cas d’un ennemi de jeu video des annees 90, Fig. 26),ou pour mettre sur le papier un protocole de communication (cas d’un pro-tocole elementaire d’un serveur, Fig. 27). En general, on utilisera des for-malismes plus specialises (transducteurs, reseaux de Petri, ou formalismesdedies comme UML. . . ), mais les automates sont un bon point de depart –a ceci pres qu’il n’y a generalement pas d’etat final a proprement parler, lesmecanismes devant theoriquement fonctionner en boucle sauf interruptionmanuelle. Plus prosaıquement, on utilise aussi souvent les automates pourreconnaıtre certains motifs comme :

– une adresse email valide (pour un formulaire en ligne),– une somme superieure ou egal a un certain prix, exprimee en pieces

de differentes valeurs (pour un distributeur),– un score correct de match de rugby (pour un tableau de scores),– etc.

FIG. 26 – Routine gerant un personnage de jeu – les etats donnent le com-portement du personnage, les lettres sont les actions possibles du joueur.

26

FIG. 27 – Boucle principale, schematisee, d’un serveur. Les etats sont lesactions en cours, les lettres sont les commandes recues.

Exercice 11 Donner un pseudo-automate modelisant le processus (tressimplifie) d’attribution d’un marche public : lorsqu’un besoin se fait sen-tir, un projet est depose, sur lequel l’autorite competente recoit un certainnombre de candidatures, fait connaıtre son choix a une certaine date, etcharge le laureat de la realisation concrete.

Corrige 11 Simple suggestion : etats ”attente” (l’autorite est a l’ecoute desbesoins) avec boucle, transition ”besoin” (un besoin a ete signale) vers unetat ”projet” (un appel a projets est lance, avec les contraintes de realisationet une limite de temps), qui dispose d’une boucle ”depot de candidatures”et d’une transition ”date limite” (on atteint le temps limite) vers un etat”realisation” (le projet retenu est realise, s’il y en a un), qui dispose d’unetransition ”fin” vers l’etat ”attente”.

Exercice 12 Donner un automate validant le format des adresses postalessimples (numero voie, code postal ville) sur l’alphabet A = Aa∪An∪{,}, Aa

etant l’ensemble des lettres classiques (y compris majuscules, accents. . . etles caracteres point et espace), An, l’ensemble des chiffres.

27

Corrige 12 Il suffit d’implementer l’expression rationnelle A∗nA∗a,(A,)∗A∗nA∗a(la partie entre parentheses est destinee aux options du type ”residence,escalier, appartement, boıte postale. . . ” et est optionnelle).

28

5 Minimisation d’un automate deterministe

Rappels– Un theoreme du cours (revu plus loin) precise, entre autres, que, pour

tout automate fini reconnaissant le langage L, il existe un automatefini deterministe complet reconnaissant le meme langage L tel que lenombre d’etats soit minimal. On appel cet automate l’automate minimalreconnaissant L ; il est unique a isomorphisme pres3.

– La construction de l’automate minimal d’un langage peut se faire apartir d’un automate fini deterministe complet existant, selon unemethode qui analogue a l’algorithme de determinisation.

– Cette methode consiste a degager des classes d’etats equivalents dupoint de vue de la reconnaissance du langage, c’est-a-dire dont la fu-sion ne changera pas la production de l’automate.

– On procede par raffinements successifs :– au depart, on distingue deux classes d’etats : les etats terminaux et

les autres.– Ensuite, a chaque etape, on choisit une lettre a de l’alphabet et une

classe K = {q, . . .}. On partitionne K suivant la classe cible par a.(Par exemple, supposons qu’a la premiere etape nous ayons 0, 1, 2comme etats non terminaux, 3, 4 comme etats terminaux, et que aenvoie 0 sur 1, 1 sur 1 et 2 sur 3 dans l’automate de depart ; alors, ala deuxieme etape, on distinguera les classes {0,1}, {2} et {3,4}.)

– On itere le procede pour chaque lettre et chaque classe, jusqu’ace que ces dernieres soient stables. L’automate est alors minimise,l’etat initial est celui qui comporte l’etat initial de depart, les etatsterminaux sont ceux qui comportent un des etats terminaux dedepart.

Exercice 13 Minimiser a la volee les automates suivants (sur A={a, b})(Fig. 28, 29, 30) :

3C’est-a-dire que les etats peuvent avoir differentes etiquettes, etre placesdifferemment. . . mais qu’il s’agira toujours du meme automate du point de vue de samatrice de transitions.

29

FIG. 28 – Automate a minimiser 1/3

FIG. 29 – Automate a minimiser 2/3

30

FIG. 30 – Automate a minimiser 3/3

Corrige 13 On aura reconnu, sous d’habiles deguisements, le langageAA∗, le langage des mots de longueur paire, et le langage des mots ayantaaa pour suffixe. Dans les deux premiers cas, la minimisation est directe (iln’y a que deux etats correspondant aux terminaux et non-terminaux), dansle dernier, il y a quelques etapes (pour un total de 5 etats, dont un puits).

31

6 Proprietes des langages rationnels

Rappels– La classe des langages rationelle est close par les operations sui-

vantes : complement, etoile de Kleene, concatenation, union, intersec-tion, difference, miroir, image par un homomorphisme. Autrementdit, si on construit un langage a partir de langages rationnels et deces operations, il sera aussi rationnel ; par contraposee, si un langagenon rationnel est realise a partir d’une de ces operations, alors un deslangages de depart n’etait pas rationnel non plus.

– Lemme d’Arden : il existe une methode pour resoudre certainesequations sur les langages rationnels. Notamment pour X = A ·X ∪B,avec A,B deux langages rationnels, la solution est unique : X = A∗ ·B.

– Lemme de pompage (ou lemme de l’etoile, pumping lemma. . . ) : soit Lun langage rationnel. Alors il existe un entier N pour lequel, pour toutmot u ∈ L tel que u≥ N, u puisse s’ecrire xvy (ou x,v,y sont respective-ment prefixe, facteur et suffixe de u), avec v 6= ε , et tel que xv ∗ y ∈ L.Autrement dit, a partir d’une certaine longueur, un motif se repete (cequi est normal : un automate a etats finis ne peut produire des motsde longueur arbitraire qu’avec des boucles ou retour en arriere). Celemme permet, par contraposee, de prouver qu’un langage n’est pasrationnel, en prouvant qu’un tel nombre ne peut exister.

– Residus (ou residuels) d’un langage : le residu d’un langage L pour unmot u donne est le langage forme de l’ensemble des v tels que uv ∈ L.On le note u−1L, ou parfois L(u). L’ensemble des residus de L pourl’alphabet A est l’ensemble des u−1L pour u ∈ A∗.

– Theoreme de Myhill-Nerode : un langage L est reconnaissable si et seule-ment s’il n’a qu’un nombre fini de residus distincts.

– Le theoreme de Myhill-Nerode permet de justifier la minimisationdes automates. Le nombre d’etats de l’automate minimal d’un lan-gage L est le nombre de ses residus distincts.

– Ce theoreme a deux applications : utiliser les residus pour calculerdirectement l’automate minimal d’un langage a partir d’une descrip-tion ou d’une expression rationnelle (voir le cours d’Anne Dicky), etsurtout prouver, par contraposee, qu’un langage n’est pas rationnel(il suffit de donner un ensemble infini de residus distincts).

32

Exercice 14 (Difficile sans le cours.) Prouver que les langages suivants nesont pas rationnels :

1. {ww,w ∈ L,L rationnel et infini}2. {anbncn,n ∈ N}3. {u ∈ {a,b,c}∗/|u|a = |u|b = |u|c}4. {ap, p premier}

Corrige 14 (On peut utiliser le cours d’Anne Dicky pour avoir des ideesplus precises sur la demarche a suivre.)

1. (Presque immediat.) Myhill-Nerode : soit u un mot de L. Alors u−1L ={u}. L etant un langage infini, il y a une infinite de residus distinctspour le langage, il n’est pas rationnel (et il en sera de meme pour tousles langages a copie).

2. (Inspire de {anbn}.) Myhill-Nerode : examinons les residus du lan-gage pour abc, aabbc, . . . anbnc : ils forment la suite {ε},{c},{cc}, . . . ,{cn}qui sont deux a deux distincts. Il existe donc un nombre infini deresidus distincts pour le langage (et il en sera de meme pour tous leslangages a compteurs).

3. (Proche du cours.) Cloture : si le langage etait rationnel, alors sonintersection avec a∗b∗c∗, {anbncn} le serait aussi, ce qui est faux (vuplus haut).

4. (Cours.) Lemme de pompage : Supposons ap decomposable en xvyavec v 6= ε et xv∗y ⊆ L. Alors, pour p suffisamment grand, ∃q = |x|+|y|/,∀n≥ 0,q+n(p−q) = |xvny|premier. Ainsi on aurait q+(1+ p)(p−q)un nombre premier, or cette expression est decomposable en p(1+ p−q) : contradiction, ap n’est pas decomposable de cette maniere, doncn’est pas rationnel.

33

7 Automates et langages : exercices bonus

Exercice 15 Simplifier (factoriser) les expressions rationelles suivantes :

1. ((a+aab)∗+(a+aaa)∗)∗

2. (ab+ba)(abb+bab)

3. a∗+(aba+baa+aab+abb+aaa+bba+bab+bbb)

Corrige 15

1. (a(ab+ ε)∗

2. (ab+ba)2b

3. a∗+A3

Exercice 16 Pour chacun des langages L definis par les expressions ra-tionnelles suivantes, donner un automate reconnaissant A∗− L (pour A ={a,b}) :

1. a

2. (aba)∗

3. (ab+ba+a∗bbb)∗

Corrige 16 Pas de dessins cette fois ci. La construction est simple : soit unautomate fini deterministe complet : tout mot de A∗ donne un calcul danscet automate qui s’acheve sur un etat donne. Si cet etat est terminal, le motappartient au langage reconnu par l’automate, sinon, non. Pour avoir lesmots du langage complementaire, il suffit donc d’inverser les roles : lesanciens terminaux de l’automates sont non terminaux, les anciens non ter-minaux sont terminaux. La construction est donc : construire un automatedeterministe pour L, le completer, inverser etats terminaux et non termi-naux pour obtenir un automate reconnaissant A∗−L (trivial en 1, facile en2, plus long en 3).

Exercice 17 Les langages suivants sont-ils rationnels ? Justifier.

1. a∗b∗

2. {an,n≥ 0}3. {anbam,n,m≥ 0}4. {anban,n≥ 0}

34

5. Le langage des mots comportant un nombre pair de a et un nombreimpair de b.

6. Le langage des mots pour lesquels a et b n’ont pas la meme parite.

7. Le langage des mots n’ayant pas le meme nombre de a que de b.

Corrige 17

1. Oui (il s’agit d’une expression rationnelle).

2. Oui (c’est a∗).

3. Oui (c’est a∗ba∗).

4. Non (Myhill-Nerode avec (anb) comme motif : on exhibe {an−1} entant que residu parametre par n non borne).

5. Oui (on peut construire un automate a quatre etats : 00,01,10,11, ini-tial en 00, final en 01, etc.).

6. Oui (meme automate avec 01 et 10 comme terminaux).

7. Non. Intermediaire : prouver par Myhill-Nerode que le langage{anbm,n 6= m} n’est pas rationnel (residu pour an : {b∗}− {bn}, puiscloture par intersection avec a∗b∗.

35