Vous êtes sur la page 1sur 7

L3 Licence d'Informatique 2006-07

Langages et Automates

TD N 5

1. Automate reconnaissant une expression rgulire Soit E = (a + b)*(abb + ). Appliquer a. Lalgorithme de Glushkov b. Lalgorithme de Thompson pour construire un automate reconnaissant le langage dcrit par E. Quel est le langage dcrit par cette expression rgulire? 2. Minimisation dautomates a. Soit le langage fini: {ba, baa, aba, aaa}. - Donner un AFD A1 le reconnaissant en essayant intuitivement de le rendreminimal. - Donnez un AFD A2 en appliquant la mthode de larbre des lettres (ou trie en anglais, voir TD n 2). Intuitivement: comment le minimiser? - Appliquez lalgorithme de minimisation du cours et retrouvez A1. b. Appliquer lalgorithme de minimisation du cours lautomate obtenu dans lexercice 1-b de la feuille TD n4 Reconnaissance dun ensemble fini de motifs, rappel ci-dessous, reconnaissant {a, b}*L, o L = {aab, baa, aaa}.

3. Un langage non rgulier a. Donner tous les mots de longueur 4 reconnus par lautomate suivant, en indiquant le chemin suivi dans lautomate. Pour chacun de ces mots: - montrer que le chemin passe deux fois par un mme tat, - en rptant indfiniment la boucle correspondante, donner une expression rationnelle qui dfinit une infinit de mots reconnus par lautomate.

b. Gnralisation: Lemme de la pompe. Soit L un langage rgulier. Il existe un entier p tel que pour tout mot w de L de longueur |w| p se dcompose en: w = (u x v) avec |x| > 0 et |u x| p et z (u xz v ) est dans L Montrer que le langage L = {anbn / n = 0, 1, 2} n'est pas rgulier. Indication : Supposer qu'un automate A reconnat L. Soit p le nombre d'tat de A et n > p. Si anbn est reconnu par A, quels autres mots le sont aussi? (utiliser une boucle de lautomate pour rpondre, en tenant compte du fait que cette boucle est incluse dans la partie an). 4. Automates pile et langages algbriques Lexercice prcdent montre quil existe des langages naturels non rguliers. Se pose la question de la reconnaissance de ces langages. On invente alors un dispositif proche des AFD (ou AFN) mais plus puissant: les automates pile. Lide est simplement de grer, en plus de lautomate classique une pile en associant chaque transition une opration sur cette pile. Dfinition: un automate pile (AP) pour un alphabet est la donne: Un ensemble Q dtats, avec un tat initial q0. Une pile P dlments pris dans un alphabet (qui peut tre disjoint ou non de ) Une fonction de transition : (q, x, top) = (q', action), o x est la lettre lue, top dsigne la lettre du sommet de pile et action une action qui concerne le sommet de la pile: empiler(x), dpiler, ou rien, o x est un lment de (on ne peut donc dpiler que si la pile nest pas vide). On note les transitions: (x, top) // action. On met la place de top quand la transition est possible quelle que soit ltat de la pile. On utilise aussi des transitions habituelles notes x, correspondant (x, -) // rien, cest--dire indpendantes de la pile et sans action associe. Un mot w sur * est reconnu sil existe un parcours de lAP tel que, la pile tant initialement vide: 1) w est lu en entier et 2) la pile est vide. NB. Il existe des variantes (quivalentes), par exemple avec un ensemble dtat finaux atteindre pour russir. Exemple 1: AP reconnaissant {an c bn / n 0}

Les AP caractrisent donc une classe de langages plus vaste que les langages rguliers: les langages algbriques (ou hors contexte), dont nous verrons une caractrisation par des grammaires en seconde partie du cours. Questions:

a. Dfinir un AP reconnaissant le langage de lexercice 3: L = {anbn / n = 0, 1, 2} Donner la valeur de la pile pour chaque nouvelle lettre lue dans le mot aaabbb et vrifier quil est accept. Mme question pour le mot abab, est-il accept? b. Donner la valeur de la pile pour chaque nouvelle lettre lue dans le mot aaabbabb par lAP suivant:

prfixe lu = a, pile = a prfixe lu = aa, pile = aa, etc. En dduire que le mot aaabbabb est accept. Mme question pour le mot abba. Est-il accept? En dduire le langage reconnu par lautomate. c. Dfinir un AP reconnaissant les expressions bien parenthses. On pourra prendre = {(, ), a} ou a symbolise une lettre qui nest pas une parenthse. Exemple: a(a(aa)(a))a sont OK mais ni a()a, ni a(a(aa)(a)a, ni a(a(aa)(a))a)a. d. Dfinir un AP reconnaissant les expressions arithmtiques prfixes sur les oprateurs + et *. Exemple: + 2 * 3 4 5 est OK, mais pas + 2 * 3 4 + 5. 5. Exercice supplmentaire: un cas dfavorable pour la dterminisation Soit le langage L = {a, b}*a{a, b}{a, b} Donner un AFN reconnaissant ce langage, puis le dterminiser. Vrifier que si n est le nombre dtats de lAFN, alors lAFD quivalent a 2n-1 tats.

L3 Licence d'Informatique 2006-07

Langages et Automates

TD N 5 - CORRECTION

1-a. Algorithme de Glushkov (x1 + x2)*(x3x4x5 + ) Premier = {x1, x2, x3}, Dernier = {x1, x2, x5}, Suivant x1, x2, x3 x1, x2, x3 x4 x5

x1 x2 x3 x4 x5

1-b. Algorithme de Thompson

2. Minimisation dautomate 2-a. Automate intuitif (il est minimal):

Arbre des lettres:

On voit intuitivement quon peut regrouper 3, 5 et 8 , ainsi que 2 et 4. 2-b. Rappel: ide de lalgorithme Le but est dobtenir une partition de lensemble des tats cohrente avec les transitions, cest-dire: Si q et q' sont dans la mme classe C, il ne peut y avoir de transitions pour une mme lettre telles que: q --x--> q1 dans C1 et q' --x--> q2 dans C2 (x distingue, spare q et q'). Et on va donc clater le premier tat en 2. On aura alors une situation du type de la figure ci-dessous. Un parcours, par exemple aba conduira la mme classe quelque soit le point de dpart dans C. On peut alors identifier tous les tats dune mme classe. Quand on ne peut lire une lettre partir dune classe, on peut mettre /. 0 1 2 3 4 5 6 7 [0]0 [0]0 [0]0 [0]0 [0]0 [5]0 [5]0 [5]0

~0

~0 a b

0 1 2 3 4 5 6 7 [0]0 [0]0 [0]0 [0]0 [0]0 [5]0 [5]0 [5]0 [5]0 [5]0 [5]0 [0]0 [0]0

~1 [0]1 [0]1 [0]1 [3]1 [4]1 [5]1 [6]1 [5]1

~1 a b

0 1 2 3 4 5 6 7 [0]1 [0]1 [0]1 [3]1 [4]1 [5]1 [6]1 [5]1 [3]1 [4]1 [5]1 [6]1 [0]1

~2 [0]2 [1]2 [2]2 [3]2 [4]2 [5]2 [6]2 [5]2

~2 a b

0 1 2 3 4 5 6 7 [0]2 [1]2 [2]2 [3]2 [4]2 [5]2 [6]2 [5]2

~3 [0]3 [0]3 [0]3 [3]3 [4]3 [5]3 [6]3 [5]3

4. Automates pile et langages algbriques 4-a.

4-b. prfixe lu = a, pile = a prfixe lu = aa, pile = aa prfixe lu = aaa, pile = aaa prfixe lu = aaab, pile = aa prfixe lu = aaabb, pile = a prfixe lu = aaabba, pile = aa prfixe lu = aaabbab, pile = a prfixe lu = aaabbabb, pile = vide, donc aaabbabb accept prfixe lu = a, pile = a prfixe lu = ab, pile = vide impossible de lire le b suivant, donc abba non accept L = mots avec autant de a que de b, et tout prfixe contient plus de a que de b. 4-c.

5. Un cas dfavorable pour la dterminisation

Vous aimerez peut-être aussi