Vous êtes sur la page 1sur 5

Département Informatique Année 2019-2020

FEI - USTHB
L2-ACAD (Section A & C) Théorie des Langages
Série 3
LES LANGAGES ALGEBRIQUES

Exercice 1 :
Construire les automates à pile qui acceptent par état final les langages suivants :
1. L1 ={anb mcn / n,m0}

Exemples : L1={, b, bb, ac, abc, abbc, aacc, aabcc, aabbbbcc, …. }


Les mots de L1 sont formés d’une séquence de a, puis une séquence de b et en dernier une séquence de
c avec la contrainte que le nombre de a doit être égal au nombre de c. Par contre, il n y a aucune
contrainte sur le nombre de b. Rappelons que l’automate lit un mot de la gauche vers la droite. Dans ce
cas, il lira d’abord les a, puis les b et en dernier les c. Pour s’assurer que le nombre de a est égal au
nombre de c, il est nécessaire de stocker les a dans la pile au fur et à mesure de la lecture. Dès que
l’automate trouve les c, une correspondance est faite avec les a stockés dans la pile (chaque c lu est
associé à un a dans la pile).

Dans le cas général (n et m différents de 0), l’automate à pile procèdera comme suit :

- Lire les a et les empiler.

- Lire les b sans les empiler.

- Lire les c : à la lecture d’un c, dépiler un a.

- S’il ne reste aucun a dans la pile (il y a Z0 au sommet de pile) alors le mot lu est de la forme anbmcn
et l’automate passe vers un état final (un état d’acceptation).

On commencera toujours par donner les transitions de l’automate dans le cas général, ensuite on traite
les différents cas particuliers.

L’automate à pile P=(, , Z0 , Q, q0, F, ) où ={a, b, c}, ={Z0}, Q={q0, q1, q2, q3, q4}, F={q3,
q4} et l’ensemble des transitions  est :

Z0q0a  Z0aq0 /* Lire le 1er a et l’empiler où le sommet de pile est forcément Z0 */

aq0a  aaq0 /* Lire les a suivants et les empiler */

aq0b  aq1 /* Lire le 1er b sans l’empiler et changer d’état */

aq1b  aq1 /* Lire les b suivants sans les empiler*/

aq1c  q2 /* Lire le 1er c, dépiler un a et changer d’état */

aq2c  q2 /* A la lecture d’un c, dépiler un a */

Z0q2  Z0q3 /* Vérifier qu’il n’y a aucun a dans la pile et passer à q3 qui est final */
Département Informatique Année 2019-2020
FEI - USTHB
L2-ACAD (Section A & C) Théorie des Langages
Série 3
LES LANGAGES ALGEBRIQUES
Cas particuliers

/*n=0 et m 0 : il n’y a pas de a */

Z0q0b  Z0q4 /* Lire le 1er b sans l’empiler et passer à q4 */

Z0q4b  Z0q4 /*Lire les b suivants sans les empiler et nous sommes toujours dans l’état
q4 qui est final */

/* n0 et m=0 : il n’y a pas de b */

aq0c  q2 /* Lire le 1er c, dépiler un a et passer à q2 pour traiter la suite */

/* n=0 et m= 0 : cas du mot vide */

Z0q0  Z0q3 /*q3 est un état final*/

Remarques

1) Dans l’état q0 et à la rencontre du premier b, l’automate passe à l’état q 1. Ce changement est


nécessaire sinon l’automate pourra lire des a après la lecture des b. De la même manière, à l’état q 1
et à la rencontre du premier c, l’automate passe à l’état q 2 pour ne plus autoriser la lecture des b
après celle des c.

2) A l’état q2, si le sommet de pile est Z0 alors le nombre de a empilé à l’état q0 est égal au nombre de
c et le mot lu est de la forme anbmcn. L’automate passe à l’état q3 qui est final pour que ces mots
soient reconnus.

Exemples de reconnaissance :

Rappel : Une configuration d’un automate à pile est un triplet (α, p, w) où α est le contenu de la pile, p
est l’état courant et w est le mot qui reste à lire.

1/ Reconnaissance de w1=aabbbcc

(Z0, q0, aabbbcc)  (Z0a, q0, abbbcc) /* lire et empiler le 1er a */

(Z0a, q0, abbbcc)  (Z0aa, q0, bbbcc) /* lire et empiler le 2ème a */

(Z0aa, q0, bbbcc)  (Z0aa, q1,bbcc) /* lire le 1er b et changer d’état*/

(Z0aa, q1, bbcc)  (Z0aa, q1, bcc) /* lire le 2ème b */

(Z0aa, q1, bcc)  (Z0aa, q1, cc) /* lire le 3ème b */

(Z0aa, q1, cc)  (Z0a, q2, c) /* lire le 1er c, dépiler un a et changer d’état */
Département Informatique Année 2019-2020
FEI - USTHB
L2-ACAD (Section A & C) Théorie des Langages
Série 3
LES LANGAGES ALGEBRIQUES
(Z0a, q2, c)  (Z0, q2, ) /* lire le 2er c et dépiler un a */

(Z0, q2, )  (Z0, q3, ) /* il n y a aucun a dans la pile et aucun c à lire*/

L’automate se trouve à l’état q3 qui est final et le mot w1 a été entièrement lu. Donc le mot w1 est
reconnu par cet automate.

2/ Reconnaissance de w2=abbcc

(Z0, q0, abbcc)  (Z0a, q0, bbcc) /* lire et empiler le 1er a */

(Z0a, q0, bbcc)  (Z0a, q1, bcc) /* lire le 1er b */

(Z0a, q1, bcc)  (Z0a, q1, cc) /* lire le 2ème b */

(Z0a, q1, cc)  (Z0, q2, c) /* lire le 1er c et dépiler un a */

(Z0, q2, c)  (Z0, q3, c) /* il n y a aucun a dans la pile*/

L’automate se trouve à l’état q3 qui est final mais le mot w2 n’a pas été entièrement lu (il reste un c). Il
faut noter qu’il n’y a aucune autre possibilité pour lire ce mot. Donc, w2 n’est pas reconnu par cet
automate.

2. L2 ={anb m / n>m0}

Exemples L2={a, aaa, aab, aaab, aaabb, ….}

Les mots de L2 sont formés d’une séquence de a suivie d’une séquence de b avec le nombre de a est
strictement supérieur au nombre de b. Ainsi le nombre de a est strictement supérieur ou égal à 1. Le
principe est de faire correspondre à chaque b un a et il doit rester au moins un a dans la pile.

Dans le cas général, l’automate à pile procèdera comme suit :

- Lire les a et les empiler.

- Lire les b et à chaque lecture d’un b, dépiler un a.

- Vérifier qu’il reste au moins un a dans la pile et transiter vers un état final.

L’automate à pile P=(, , Z0 , Q, q0, F, ) où ={a, b}, ={Z0}, Q={q0, q1, q2}, F={q2} et
l’ensemble des transitions  est :
Département Informatique Année 2019-2020
FEI - USTHB
L2-ACAD (Section A & C) Théorie des Langages
Série 3
LES LANGAGES ALGEBRIQUES
Z0q0a  Z0aq0 /*Lire le 1er a et l’empiler */

aq0a  aaq0 /*Lire les a suivants et les empiler */

aq0b  q1 /*Lire le 1er b, dépiler un a et changer d’état*/

aq1b  q1 /*A la lecture d’un b, dépiler un a*/

aq1  q2 /* Vérifier qu’il reste au moins un a dans la pile et aller vers l’état final q2 */

aq0  q2 /* m=0 : il n’y a pas de b avec au minimum un a*/

3. L3 ={a2nbn / n0}

Exemples L3={, aab, aaaabb, aaaaaabbb,…..}

Les mots de L3 sont formés d’une séquence de a suivie d’une séquence de b avec la contrainte que le
nombre de a est le double du nombre de b. L’idée est de faire correspondre à chaque b deux a.

Dans le cas général, l’automate à pile procèdera comme suit :

- Lire les a et les empiler.

- Lire les b et à chaque lecture d’un b, dépiler un 1er a puis dépiler un second a.

- Vérifier qu’il ne reste aucun a dans la pile et transiter vers un état final.

L’automate à pile P=(, , Z0 , Q, q0, F, ) où ={a, b}, ={Z0}, Q={q0, q1, q2, q3}, F={q3} et
l’ensemble des transitions  est :

Z0q0a  Z0aq0 /* Lire le 1er a et l’empiler */

aq0a  aaq0 /* Lire les a suivants et les empiler */

aq0b  q1 /* Lire le 1er b, dépiler un 1er a et passer à q1 afin de dépiler le second a*/

aq1  q2 /* dépiler le second a et passer à q2 pour traiter la suite du mot*/

aq2 b  q1 /* Lire un autre b, dépiler le 1er a et passer à q1 pour dépiler le second a */

Z0q2  Z0q3 /* Vérifier qu’il ne reste aucun a dans la pile et aller vers l’état final q3*/

Z0q0  Z0q3 /* n=0 : cas du mot vide */


Département Informatique Année 2019-2020
FEI - USTHB
L2-ACAD (Section A & C) Théorie des Langages
Série 3
LES LANGAGES ALGEBRIQUES
Remarques :

1) Notons qu’après la lecture du 1er b et le dépilement du second a à l’état q1, l’automate passe à l’état
q2 pour traiter la suite du mot. Il n’est pas possible de revenir vers l’état q 0 où il sera alors possible
la lecture des a après celle des b.

2) Une autre solution consiste à empiler la moitié des a lus puis à chaque lecture d’un b dépiler un a.

4. L4 ={anb2m / nm}

Exemples L4={, a, aa, aaa, abb, aabb, aaabb, aaaab, aabb, aaabb, aaaaabb, ….}

Les mots de L4 sont formés d’une séquence de a suivie d’une séquence paire de b avec la contrainte
que le nombre de a est au moins égal à la moitié des b. Remarquez que le mot abbbb n’appartient pas
au langage.

Notons que la contrainte nm  n=m+k avec k0. Donc, en remplaçant dans les mots de L4, on
obtient : am+kb2m = akamb2m avec m, k0.

Ainsi, il suffit de faire correspondre à deux b un seul a et il peut rester des a dans la pile.

Dans le cas général, l’automate à pile procèdera comme suit :

- Lire les a et les empiler.

- Lire les b : Lire un 1er b sans dépiler puis lire un second b et dépiler un a.

- Il peut rester des a dans la pile.

L’automate à pile P=(, , Z0 , Q, q0, F, ) où ={a, b}, ={Z0}, Q={q0, q1, q2}, F={q0, q2} et
l’ensemble des transitions  est :

Z0q0a  Z0aq0 /* Lire le 1er a et l’empiler */

aq0a  aaq0 /* Lire les a suivants et les empiler */

aq0b  aq1 /* Lire le 1er b sans dépiler, et passer à q1 pour lire le second b */

aq1b  q2 /* Lire le second b, dépiler un a et passer à q2 pour traiter la suite du mot*/

aq2 b  aq1 /* Lire un autre b sans dépiler, et passer à q1 pour lire le second b */

Remarque : L’état final q0 permet de reconnaître les mots formés seulement d’une séquence de a.
Aussi, le mot  est reconnu au niveau de l’état q0 qui est un état final.

Vous aimerez peut-être aussi