Vous êtes sur la page 1sur 19

Synthèse du cours précédent

La grammaire G : { S  a S b + 
engendre le langage L= {an bn, n  0}

Le langage L= {an bn, n  0} est donc un langage algébrique.

1
Lemme fondamental (v1)

• Soit G = <X, V, S, P> une grammaire algébrique et f  (X  V)*.


Si l’on factorise f en
f = foS1f1S2...fk-1Skfk , k 1, avec  i, fi  X * et Si  V,

alors pour tout mot g  (X  V)*,

f * g si et seulement si il existe des mots h1, h2, ..., hk  (XV)* tels que

g = foh1f1h2...fk-1hkfk, avec  i, 1 i k , Si* hi

2
Lemme fondamental (v2)

• Soit G = <X,V, S, P> une grammaire algébrique et f  (X  V)*.


Si l’on factorise f en

f = foS1f1S2...fk-1Skfk, k  1, avec  i, fi  X *, Si  V, alors

pour tout entier n0 et pour tout mot g  (X  V)*,

f n g si et seulement si il existe des entiers n1, n2, ..., nk 0


et des mots h1, h2, ..., hk  (X  V)* tels que n = n1 + n2 + ... + nk,
g = foh1f1h2...fk-1hkfk et  i, 1 i k, Sini hi .

• ce lemme se montre par récurrence sur n


3
fo S1 f1 S2 ... fk-1 Sk fk
f=

n
G
n1 n2 nk

g=
fo h1 f1 h2 ... fk-1 hk fk
n = n1 + n2 + ... + nk

4
Principe de récurrence

• Soit S une partie de IN telle que


1. 0  S,
2. pour tout entier n, sin S alors n+1  S,

alors S = IN.

• Récurrence simple
Soit P une propriété définie sur IN, et soit a un entier naturel donné, si
1. P(a) est vraie,
2. pour tout n a, ( P(n)  P(n+1) ) est vraie,

alors P(n) est vraie pour tout entier n supérieur ou égal à a.

5
Récurrence généralisée

on dit aussi « récurrence forte », bien qu’elle soit absolument de même


puissance que la précédente

• Soit P une propriété définie sur IN, et soit a un entier naturel donné, si
1. P(a) est vraie,
2. pour tout n a, ( (P(a) P(a+1) .... P(n))  P(n+1) ) est vraie,

alors P(n) est vraie pour tout entier n supérieur ou égal à a

6
Arbre de dérivation

 S  aSb / a T
G1 : 
 Tb

a S b

a S b mot frontière :
aaabbb

a T

b
7
Arbre de dérivation

Un arbre A est un arbre de dérivation pour une grammaire algébrique


G = < X, V, S, P > si et seulement si :
• les étiquettes des nœuds de A sont dans (X  V  {})
• les nœuds d’étiquette ne possèdent pas de frère
• si un nœud de A qui n’est pas une feuille est d’étiquette E et si ses descen-
dants directs ont pour étiquettes, de gauche à droite, e1, …, en, alors la règle
E  e1 …en figure dans P

Par conséquent : les nœuds qui ne sont pas des feuilles ont forcément pour
étiquette un non-terminal.

8
Soit G 2 : SaSTb | 
T c
Quiz 1 - ce qui suit est un arbre de dérivation dans G 2 vrai faux

a S T b
a  T b c
c
Mot frontière : aacbcb

Quiz 2 - le mot aacbcb est engendré par cette grammaire vrai faux

Quiz 3 - chaque mot de LG2(S) possède autant de a que de c vrai faux


9
Soit G 3 : S  SS | a S b | 

Quiz - ce qui suit est un arbre de dérivation dans G 3 vrai faux

S S
a S S b 

Mot frontière : aSb

10
Dérivation versus arbre de dérivation

Pour G = < X, V, S, P >,

• un mot f de X* est engendré par G si et seulement si il est mot frontière d’un


arbre de dérivation de racine l’axiome S

• pour tout T V et toutf  X*, f LG(T) si et seulement si f est mot fron-
tière d’un arbre de dérivation de racine T

11
Ambiguïté

• Soit l’instruction if...then...else du langage Pascal, de grammaire


SictS si ... alors
SictSeS si ... alors ... sinon
Sa
i = if, c = condition, t = then, e = else, a =une instruction d’affectation

• Soit l’instruction suivante:


if x=5 then if y>2 then x:=y else x:=z

i c t i c t a e a

• Ce mot possède deux arbres de dérivation distincts de même racine S.

12
Dérivation gauche

<phrase>  <groupe-nominal> <verbe> <groupe-nominal>


 <déterminant> <nom> <verbe> <groupe-nominal>
 la <nom> <verbe> <groupe-nominal>
 la souris <verbe> <groupe-nominal>
 la souris mange <groupe-nominal>
 la souris mange <déterminant> <nom>
 la souris mange le <nom>
 la souris mange le chat

G4 : {SUVb+c
V v V + v
U  U u + u
Quiz - cette dérivation dans G4 est une dérivation gauche vrai faux
SUVbUuVb UuuVbuuuVbuuuvVbuuuvvb

13
Un petit point de bilan

on a vu que
G : { S  a S b + 
engendre le langage L= {an bn, n  0}

Quiz 1 - le langage {an bn, n  10} est engendré par G vrai faux

Quiz 2 - le langage {an bn, n  10} est algébrique vrai faux

Quiz 3 - tout langage inclus dans {an bn, n  0} est algébrique vrai faux

14
Étant donnée une supposée grammaire G de L, on doit pouvoir prouver
qu’elle engendre effectivement L

• application
G : {SaSb+
engendre le langage L= {an bn, n  0}

• il faut démontrer LG(S) = L en deux temps :


- LG(S)  L (récurrence sur l’ordre de dérivation)

- L  LG(S) (récurrence sur la longueur des mots)

(démonstration très détaillée en cours et dans le poly)

15
Cas particulier 1

• situation avec plusieurs règles de démarrage possibles :


G5 :{ S  a S b + S b + bb
engendre le langage L5= {an bp, p  n+2}

S  d+1 f se décompose
- soit en S  a S b  d f
on a alors f = a g b avec S  d g etc.

- soit en S  S b  d f
on a alors f = g b avec S  d g etc.

Il va falloir rédiger deux sous-démonstrations

16
Attention : il y a un seul langage engendré par G

• on pourrait également démontrer que, pour :


G5 :{ S  a S b + S b + bb on a LG5(S)  {an bp, p  n}

• mais la réciproque :
{an bp, p  n} LG5(S) est fausse !
par exemple, a4 b5 n’est pas engendré par cette grammaire

{an bp, p  n+2} est l’unique langage engendré par G5

17
Cas particulier 2

• grammaire non linéaire :


G6 :{ S  S a S b + c

S  d+1 f se décompose en S  S a S b  d f
en vertu du lemme fondamental, on a alors f = h1 a h2 b

avec S  d1 h1 et S  d2 h2 et d1 + d2 = d ! ! !

Il faut donc utiliser une récurrence généralisée pour chacune des inclu-
sions.

18
Cas particulier 3

• situation avec plusieurs non-terminaux :


G4 :{ S  U V b + c
V v V + v
U  U u + u

S  d+1 f se décompose en S  U V b  d f
en vertu du lemme fondamental, on a alors f = h1 h2 b

avec U  d1 h1 et V  d2 h2 et d1 + d2 = d ! ! !

Il faut donc examiner les langages engendrés par G4 à partir de U d’une


part et à partir de V d’autre part.

19

Vous aimerez peut-être aussi