0% ont trouvé ce document utile (0 vote)
67 vues27 pages

Correction TD3 EAD

Ce document contient plusieurs exercices sur les grammaires formelles et les automates à pile. Les exercices portent sur la régularité, l'ambiguïté et la récursivité de grammaires, ainsi que sur leur mise sous forme normale de Chomsky et leur factorisation. Des opérations ensemblistes sur langages réguliers sont également abordées.

Transféré par

salma ben hssin
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
67 vues27 pages

Correction TD3 EAD

Ce document contient plusieurs exercices sur les grammaires formelles et les automates à pile. Les exercices portent sur la régularité, l'ambiguïté et la récursivité de grammaires, ainsi que sur leur mise sous forme normale de Chomsky et leur factorisation. Des opérations ensemblistes sur langages réguliers sont également abordées.

Transféré par

salma ben hssin
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Correction TD3

1 / 27
Exercice 1

Considérons la grammaire G1 dont les productions sont les suivantes :

S→SaSaSbS | SaSbSaS | SbSaSaS | ε


1 - La grammaire est-elle régulière ? Justifier

Cette grammaire n’est pas régulière, elle n’est ni linéaire droite, ni


linéaire gauche.

2 - Trouver L(G1)

L(G1) = { w ∈{a, b}* | |w|a = 2 * |w|b}

3 - Donner une dérivation à gauche de la séquence abaaab.


SaSbSaS
S ⇒ SaSbSaS⇒ aSbSaS ⇒ abSaS ⇒ abaS ⇒ abaSaSaSbS ⇒
abaaSaSbS ⇒ abaaaSbS ⇒ abaaabS ⇒ abaaab

2 / 27
4 - La grammaire est-elle ambigüe ? Justifier.

Il suffit de trouver une autre dérivation à gauche pour la chaine


abaaab, ce qui permet d’obtenir deux arbres syntaxiques différents
pour une même chaîne par conséquent la grammaire est ambigüe.

3 / 27
Exercice 2

1 – L1 = { u ∈{a, b}* | |u|a = |u|b}


Automate à pile pour L1

ε,ε/Z0 ε,Z0/Z0

a,Z0/aZ0 a,a/aa
a,b/ε
b,Z0/bZ0 b,a/ε
b,b/bb

4 / 27
L3 = {ambncm , n≥0, m > 0}
Automate à pile pour L3

ε,a/a ε,a/a ε,Z0/Z0

a,Z0/aZ0 b,a/a c,a/ε


a,a/aa

5 / 27
L4 = {anbmcmd2n, n≥0 et m≥0}
Automate à pile pour L4

C
as
n = 0
n=0 0
m=

6 / 27
2 - Donner une grammaire qui le génère.

Productions de la grammaire pour L1 :L1 = { u ∈{a, b}* | |u|a = |u|b}

S →SaSbS | SbSaS | ε

Productions de la grammaire pour L3 : L3 = {ambncm , n≥0, m > 0}

A →aAc | aBc
B →bB | ε

Productions de la grammaire pour L4 : L4 = {anbmcmd2n, n≥0 et m≥0}

A →aAdd | B
B →bBc | ε

7 / 27
Exercice 3
1* + 10* 1* 0

Trouvant la grammaire de cet automate

8 / 27
G = {{A, B, C, D, E}, {0, 1}, P, A} P : l’ensemble des productions
suivantes :

A →1E| 1B
B →0B| 0D| 1C
C →0D| 1C
D →ε
E →1E| ε

9 / 27
{w | w ∈{0, 1}* et w contient la sous-chaîne 00 ou 11}

G = {{A, B, C, D}, {0, 1}, P, A} P


l’ensemble des productions
1 B suivantes :

0
0 A→1A|0A|0B|1C
B→1A|0D
A 0,1 D 0,1 C→1D|0A
D→1D|0D|ε

0 1

1
C

10 / 27
{w | w ∈{0, 1}* et w ne termine pas par 01}

G = {{A, B, C}, {0, 1}, P, A} P


l’ensemble des productions
suivantes :
A→1A|0B|ε
B→1C|0B|ε
C→1A|0B

11 / 27
Exercice 4

2 - Grammaire G 2 n’est pas sous forme normale de Chomsky.


Rappel FNC :A → BC ou A →a
La grammaire comporte des productions ε qu’il faudra éliminer au
préalable.

U={S, A, B}, en plus S figure dans les parties droites. On ajoute un


nouvel axiome S’ et ses productions S’→S|ε

Élimination des productions ε :


Les productions suivantes seront ajoutés :

À partir de S→SaAb, on ajoute S→aAb, S→Sab, S→ab


À partir de S→bBaS, on ajoute S→baS, S→bBa, S→ba
À partir de A→bAa, on ajoute A→ba
À partir de B→aBb, on ajoute B→ab

12 / 27
On obtient la grammaire suivante équivalente à G2 :

S’→S|ε
S →SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
A →bAa|ba
B→aBb|ab

Mise sous forme de Chomsky.


Associer une variable à chaque terminal : C →a et D→b
Pour : S →SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
Devient :
S →SCAD|CAD|SCD|CD|DBCS|DCS|DBC|DC

Après transformation nous obtenons :


S →SE|CF|SG|CD|DH|DI|DJ|DC
E →CF
F →AD
G →CD
H →BI
I →CS
J →BC 13 / 27
Pour A →bAa|ba deveint
A →DAC|DC
Après transformation nous obtenons :
A →DK|DC
K →AC

Pour B→aBb|ab devient


B→CBD|CD
Après transformation nous obtenons :
B →CL|CD
L →BD

Enfin S’ →S|ε On remplace S par tout son corps on obtient


S’ →SE|CF|SG|CD|DH|DI|DJ|DC| ε

3 - Montrer que la grammaire G2 est ambigüe.


Faire un test avec le mot : baab

14 / 27
4 - Éliminer la récursivité à gauche dans chacune des ces
grammaires.

La grammaire G2 est récursive à gauche au niveau de de la règle


S→SaAb

Grammaire G2
S →SaAb|bBaS|ε
A →bAa|ε
B →aBb|ε
Nous devons éliminer la récursivité après l’élimination des
productions ε. Il n’y a pas de cycles
S’→S|ε
S →SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
A →bAa|ba
B→aBb|ab

15 / 27
Nous choisissons l’ordre de traitement suivant : S’, S, A, B
Traitement de S’→S|ε : pas de récursivité directe.

Traitement de S→SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
Rappel
A → Aα|β
A → βA’
A’ → αA’|ε

S →aAbS’’ |abS’’|bBaSS’’|baSS’’|bBaS’’|baS’’
S’’ →aAbS’’|abS’’|ε

Traitement de A : pas de remplacement pas de récursivité à


gauche.
Traitement de B : pas de remplacement pas de récursivité à
gauche.

16 / 27
Grammaire G3
S →ST|SSb|TS|a
T →Sa|Tb|ε

Cette grammaire est récursive à gauche au niveau :


S →ST et T →Tb

Il faut tout d’abord éliminer les productions ε et les cycles :


Pour : S →ST|SSb|TS|a : on obtient

S →ST|SSb|TS|a|S

Pour T →Sa|Tb|b|ε : on obtient


T →Sa|Tb|b
La grammaire équivalente à G3 sans ε productions ε est :

S →ST|SSb|TS|a|S
T →Sa|Tb|b

17 / 27
Cette grammaire présente un cycle, il faut alors éliminer les
productions unitaires, la grammaire devient:

S →ST|SSb|TS|a
T →Sa|Tb|b

Éliminons maintenant la récursivité gauche. Nous choisissons


l’ordre suivant : S, T

Pour : S →ST|SSb|TS|a

S →TSS’|aS’
S’→TS’|SbS’|ε

Pour : T →Sa|Tb|b
Remplacement de S dans les productions de T :
T→TSS’a|aS’a|Tb|b on obtient :

T→aS’aT’|bT’
T’ →SS’aT’|bT’|ε
18 / 27
La grammaire G4
S →S ∨ T | T
T →T ∧ F | F
F → ¬ F| (S)| x | y

n’a ni de productions ε, ni de cycle. Elle est récursive à gauche au


niveau de des productions de S (S →S ∨ T) et de T (T →T ∧ F).
Nous procédons à l’élimination de la récursivité. Nous choisissons
l’ordre suivant : S, T, F

Pour S →S ∨ T | T : on obtient
S → TS’
S’ →vTS’|ε

Pour T →T ∧ F | F : Pas de remplacements. Nous éliminons la


récursivité directe. On obtient
T →FT’
T’ →∧FT’|ε

Pour F → ¬ F| (S)| x | y Pas de récursivité .


19 / 27
5 Factoriser à gauche chacune de ces grammaires
Factorisation de G2

S’ →S|ε
S →aAbS’’ |abS’’|bBaSS’’|baSS’’|bBaS’’|baS’’
S’’ →aAbS’’|abS’’|ε
A →bAa|ba
B→aBb|ab

Factorisation au niveau de S.
S →aC|bD
C→AbS’’|bS’’
D→BaE|aE
E→SS’’|S’’

Factorisation au niveau de S’’


S’’ →aF|ε
F→AbS’’|bS’’

20 / 27
Factorisation au niveau de A. A →bAa|ba
A→bG
G→Aa|a

Factorisation au niveau de B. B→aBb|ab


B→aH
H→Bb|b

Factorisation de G3
S →TSS’|aS’
S’→TS’|SbS’|ε
T→aS’aT’|bT’
T’ →SS’aT’|bT’|ε
On ne peut factoriser qu’au niveau de T :
T→aA|bT’
A→S’aT’

Aucune factorisation au niveau de G4.

21 / 27
6 - Donner la grammaire générant L(G2)*
Grammaire G2

S →SaAb|bBaS|ε
A →bAa|ε
B →aBb|ε
Grammaire G2*
S’→SS’|ε
S →SaAb|bBaS|ε
A →bAa|ε
B →aBb|ε

22 / 27
7 - Donner la grammaire générant L(G4) U L(G3)
Grammaire G4
S →S ∨ T | T
T →T ∧ F | F
F → ¬ F| (S)| x | y

Grammaire G3
S →ST|SSb|TS|a
T →Sa|Tb|ε

Grammaire G4 U G3 :
Renommer S et T dans G3 en S3 et T3 . Les productions de G3
deviennent :
S3 →S3T3|S3S3b|T3S3|a
T3 →S3a|T3b|ε

23 / 27
Les production G3 U G4 sont
Su →S|S3
S3 →S3T3|S3S3b|T3S3|a
T3 →S3a|T3b|ε
S →S ∨ T | T
T →T ∧ F | F
F → ¬ F| (S)| x | y

24 / 27
8 - Construire un automate à pile acceptant par état final pour la
grammaire G3 , le transformer en un automate à pile acceptant par
pile vide.

Automate acceptant L(G3) par état final

ε,S/ST ε,T/Sa a,a/ε


ε,S/SST ε,T/Tb b,b/ε
ε,S/TS ε,T/ε
ε,S/a

ε,Z0/SZ0 ε,Z0/Z0

25 / 27
Transformation de l’automate pour qu’il accepte par pile vide

26 / 27
9 - Construire un automate à pile acceptant par pile vide pour la
grammaire G4 , le transformer en un automate à pile acceptant
par état final.
Automate acceptant L(G4) par pile vide

Transformation de l’automate pour qu’il accepte par état final

ε,Z0/SZ0 ε,Z0/Z0

27 / 27

Vous aimerez peut-être aussi