Title: Arbre de drivation
1Arbre de dérivation
- La racine de larbre de dérivation est laxiome
de la grammaire. - Les non terminaux forment les nuds internes et
les terminaux forment les feuilles.
2Arbre de dérivation de zazabzbz
On voit que le choix du symbole non terminal à
réécrirenaffecte pas la séquence terminale
dérivée puisque lesbranches de larbre sont
indépendantes.Donc lordre dapplication des
règles naffecte pas le résultat final.
3Remarque
- Même si lordre dapplication des règles de
production naffecte pas le résultat final, il
peut arriver que, pour une séquence terminale
donnée, des choix différents de règles résultent
en des arbres différents. - Ce cas est suffisamment important pour que lon
donne un nom aux grammaires qui le permettent.
4Définition
- Une grammaire est dite ambiguë si elle permet
plus dun arbre de dérivation pour une séquence
terminale donnée.
5Exercice
- Montrez que la grammaire G ci-dessous est ambiguë
en produisant la chaînesi condition alors si
condition alors instruction sinon instructionpar
des dérivations dont les arbres sont différents. - G (S, condition, si , alors, sinon
,instruction, S, R) où R est
l ensemble des règles suivantes - ) S ? si condition alors S
- ) S ? si condition alors S sinon S
- ) S ? instruction.
6Exercice (suite)
- Quel est le résultat du programme suivant, selon
larbre de dérivation utilisé pour analyser
linstruction conditionnelle? - x1si x gt 5 alors si x lt 10 alors x x1
sinon xx-1
7Solution Dérivation 1 S ? ? Règle 1? si
condition alors S ? ? Règle 2? si condition
alors si condition alors S sinon S ? ? Règle
3? si condition alors si condition alors
instruction sinon S ? ? Règle 3? si condition
alors si condition alors instruction sinon
instruction
8Voici larbre de dérivation correspondant, auquel
on a ajouté les conditions et les
(sous-)instructions de linstruction à évaluer
Comme résultat de linstruction à évaluer nous
avons x 1(x vaut 1). Car on avait x1 avant
linstruction Si..
9 Dérivation 2 S ? ? Règle 2? si condition
alors S sinon S ? ? Règle 1? si condition alors
si condition alors S sinon S ? ? Règle 3? si
condition alors si condition alors instruction
sinon S ? ? Règle 3? si condition alors si
condition alors instruction sinon instruction
10Voici larbre de dérivation correspondant, auquel
on a ajouté les conditions et les
(sous-)instructions de linstruction à évaluer
S
Le résultat de linstruction à évaluer est x 0
(x valait 1 après x1).
11- Afin de lever cette ambiguïté, certains langages
se donnent des directives pour lapplication des
règles. - Par exemple, en COBOL, le sinon est associé
au alors le plus rapproché. Quelle que soit
la règle, il est toujours possible de forcer le
choix désiré au moyen dune paire début, fin .
Cest ainsi que linstruction - si x gt 5 alors début si x lt 10 alors xx1
sinon x x-1 fin - permet dobtenir le résultat correspondant au
premier arbre de dérivation alors que
linstruction - si x gt 5 alors début si x lt 10 alors xx1
fin sinon x x-1 - mène au résultat correspondant au deuxième
arbre.
12Définition
- Un langage est dit non contextuel sil est généré
par une grammaire non contextuelle.
13Exercice
- Construire une grammaire non contextuelle qui
génère le langage ambncm m ? N? n ? N. - Réponse S ? aSc S ? B B ? bB B ? b
14Notation
- Afin de démontrer quil existe toujours un
automate à pile qui accepte le langage généré par
une grammaire non contextuelle donnée, nous
généralisons la notation utilisée pour décrire
les transitions dun automate à pile.
15- Les transitions peuvent maintenant avoir la forme
(p, a, s q, xyz). i.e. que plusieurs symboles
peuvent être empilés. - La section dautomate suivante
Devient
On voit que lempilement se fait dans lordre
xz, y, x, i.e. y z
16Théorème
- Pour toute grammaire non contextuelle G, il y a
un automate à pile M tel que L(G) L(M).
17Démonstration
- On a G (V, T, S, R) non contextuelle. On
cherche un automate à pile M (SM, ?, ?, TM, ?,
F) tel que L(G) L(M).
18- Définissons
- SM ?, p, q, f où ? est létat initial
- F f
- ? T
- ? V ? T ? où ? V et ? T
- TM (?, ?, ?p, ), (p, ?, ?q, S), (q, ?, f,
?) ? (q, ?, Nq, w) N ? w est une règle
de G ? (q, x, xq, ?) x ? Toù w est une
séquence de terminaux et de nonterminaux.
19- Un automate à pile construit de cette façon
analyse la séquence dentrée en marquant dabord
le bas de la pile avec le symbole , puis en y
empilant laxiome de la grammaire tout en passant
dans létat q. À partir de là, tant que le ne
refait pas surface, lautomate - ou bien dépile un symbole non terminal et le
remplace par le côté droit dune règle contenant
ce non terminal à gauche (sil y a plusieurs
règles possibles, le choix est fait de manière
non déterministe), - ou bien dépile un symbole terminal tout en lisant
le même symbole à lentrée ( si le symbole à lire
est différent, lautomate na plus de transition
possible).
20- Lorsque le revient au sommet de la pile, M
passe dans létat f qui est final la séquence
dentrée est alors acceptée si elle est toute
lue. - Remarquons que lorsque le côté droit dune règle
est empilé, le symbole non terminal le plus à
gauche de cette règle(sil y en a un) est plus
près du sommet de la pile que les autres symboles
non terminaux (sil y en a dautres). - Ce sera donc le premier non terminal à être
remplacé.
21- Ainsi, lautomate analyse la séquence dentrée en
faisant une dérivation à gauche basée sur les
règles de la grammaire donnée. - Mais sil existe une dérivation de la séquence
dentrée, il existe une dérivation à gauche. - Par conséquent, lautomate M accepte exactement
le même langage que le langage généré par le
grammaire G.
22Exemple
- Voici un automate à pile qui accepte le langage
généré par la grammaire suivante
S ? zMNz M ? aMa N ? bNb M ? z N ? z
23Lacceptation de la chaîne zazabzbz seffectue de
la façon suivante. Remarquez comment elle
correspond à la dérivation à gauche. S ? zMNz ?
zaMaNz ? zazaNz ? zazabNbz ? zazabzbz Dans le
tableau de configurations de lacétate suivante,
la pile croît vers la gauche, contrairement à la
convention que nous avons utilisée dans la
section précédente. Nous utilisons cette nouvelle
convention parce que lempilement vers la gauche
permet de mieux voir le côté droit des règles
dans la pile (on pourrait faire une pile
verticale mais cela prend plus de place).
24Étape Entrée État
Pile 0 zazabzbz ?
? 1 zazabzbz p 2 zazabzbz q
S 3 zazabzbz q zMNz 4 zazabzbz q
MNz 5 zazabzbz q aMaNz 6 zazabzbz q
MaNz 7 zazabzbz q zaNz 8 zazabzbz q
aNz 9 zazabzbz q
Nz 10 zazabzbz q bNbz 11 zazabzbz q
Nbz 12 zazabzbz q zbz 13 zazabzbz q
bz 14 zazabzbz q
z 15 zazabzbz_ q
16 zazabzbz_ f ?
25À létape 4, le symbole non terminal M est au
sommet de la pile. Il y a donc 2 transitions
possibles, M ? aMa et M ? z. La première a été
choisie. Si la deuxième avait été choisie, la
lecture de la séquence dentrée naurait pas pu
mener à létat final. Lautomate est donc non
déterministe il y a parfois un choix de
transitions. Pour quune séquence soit acceptée,
il suffit quil y ait une suite de transitions
menant de létat initial à létat final, tout en
faisant la lecture de toute la séquence dentrée.
26Un compilateur faisant lanalyse syntaxique dun
programme Pascal pourrait procéder exactement
comme lautomate à pile précédent. Lune de ses
structures de données serait donc une pile.
27Exercice
- Trouver une grammaire qui génère le langage
anbn n ? N, puis construire un automate à pile
qui accepte ce langage. Donner la suite de
configurations menant à lacceptation de la
séquence ab.
28Solution La grammaire est S ? aSb S ?
? Lautomate obtenu en utilisant la méthode du
théorème précédent est le suivant
29Voici la suite de configurations
demandée État Ruban Pile ? ab p ab
q ab S q ab aSb q ab Sb q ab
b q ab_ f ab_
30Théorème
- Pour chaque automate à pile M, il existe une
grammaire non contextuelle G telle que L(M)
L(G).
31Remarque
- Ce résultat, en conjonction avec le théorème
2.26, montre que les automates à pile et les
grammaires non contextuelles caractérisent la
même classe de langages.
Rappel du théorème 2.26 Pour toute grammaire
non contextuelle G, il y a un automate à pile M
tel que L(G) L(M)
32Remarque
- Nous allons maintenant montrer que lunion de
deux langages non contextuels est un langage non
contextuel. - Pour y arriver, nous allons combiner deux
grammaires non contextuelles de sorte que la
grammaire résultante génère lunion des
grammaires initiales.
33Théorème
- Lunion de deux langages non contextuels est un
langage non contextuel.
34Démonstration
- Soient G1 (V1, T1, S1, R1) et G2 (V2, T2,
S2, R2). - Supposons que V1 ? V2 ? ( si ce nest pas le
cas, il suffit de renommer les symboles
appropriés). - On cherche une grammaire G telle que L(G)
L(G1) ? L(G2).
35- On définit cette grammaire G (V, T, S, R)
ainsi - V V1 ? V2 ? S où S ? V1 et S ? V2
- T T1 ? T2
- R R1 ? R2 ? S ? S1, S ? S2
- Il est facile de voir que cette grammaire génère
bien lunion des langages L(G1) et L(G2).
36Exemple
- Soient G1 et G2 les deux grammaires
suivantesG1 S1 ? bS1c G2 S2 ? abS2
S1 ? ? S2 ? ? - Voici la grammaire G qui génère L(G1) ?
L(G2)G S ? S1 S ? S2 S1 ? bS1c S2 ? abS2
S1 ? ? S2 ? ?
37- Voici maintenant pourquoi il est important
davoir V1 ? V2 ?. - SoientG1 S1? aX et G2 S2? cX X ? b X ? d
- Lunion de L(G1) et L(G2) est ab, cd. Si on
applique la recette du théorème sans renommer X,
on obtient la grammaire G suivanteG S ? S1 S
? S2 S1 ? aX S2 ? cX X ? b
X ? d - Mais L(G) ab, ad, cb, cd ? L(G1) ? L(G2).
38- Afin déviter ce problème, renommons X dans G2 de
sorte que V1 ? V2 ?. On a alorsG2 S2 ?
cY Y ? d - Ensuite si on combine G1 et G2, on obtient G de
telle sorte que L(G) L(G1) ? L(G2).G S ?
S1 S ? S2 S1 ? aX S2 ? cY X ? b Y ? d -
39Forme normale de Chomsky
- Définition
- N0 ? ? est une chaîne ? dorigine N0. De
longueur 0. - Une chaîne-? de longueur n est une suite de
règles de la forme Nn ? Nn-1, Nn-1 ? Nn-2, , N0
? ? où chaque Ni est un symbole non terminal. Nn
est dit lorigine de la chaîne-? . - Notez quil y a n1 règles dans une chaîne-? de
longueur n.
40Exemple
- S ? cPcQc P ? aPa P ? QQ ? bPb Q ? ?
- La suite P ? Q, Q ? ? est une chaîne-? de
longueur 1 ayant comme origine P. - La suite Q ? ? est une chaîne-? de longueur 0
ayant comme origine Q.
41Définition
- Nous définissons un symbole générateur de ? de
façon récursive ainsi - N est un symbole générateur de ? si nous avons
une production N ? ?. - N est un symbole générateur de ? si nous avons
une production N ? U, avec U N1N2Nn . Où
chaque Ni est un symbole générateur de ?, i 1,
n. - Notons N ? ? le fait que N puisse être réécrit
en ? après une ou plusieurs dérivations c-à-d que
N est unsymbole générateur de ?. - Notez également que les symboles origines de
chaînes ? sont des symboles générateurs de ?.
42Exercice
- S ? AaBb A ? BC B ? CB ? bCb C ? c C ? ?
- Trouvez tous les symboles générateurs de ?.
- Réponse C, B, A. Trouvez tous les symboles
origines de chaînes ?. - Réponse C, B.
43- Soit G (V, T, S, R) une grammaire non
contextuelle. Si ? ? L(G), R doit contenir au
moins une règle-?. Par contre, si ? ? L(G), il
est possible déliminer toutes les règles-?.
44Théorème
- Soit G une grammaire non contextuelle telle que ?
? L(G). Il existe une grammaire G sans règle-?
telle que L(G) L(G).
45Démonstration
- Lélimination de toutes les règles-? dune
grammaire ne générant pas la séquence vide se
fait en trois étapes. - On illustre ces étapes avec la grammaire de
lexemple précédent.
46- Soient
- U0 X ? VX est lorigine dune chaîne-? de
longueur 0. - Un Un-1? X? VX ? Z, Z V1V2Vn , Vi ? Un-1
- Puisque V est fini, il existe un n tel que Un
Un-1. Appelons U le Un tel que Un Un-1. Bien
sûr, S ? U car ? ? L(G).Notez que U X ? V, X
? ? . Donc, ce qui précède est une façon
constructive (algorithme) permettant de trouver
U. - Pour la grammaire de lexemple précédent, U0
Q et U1 U0 ? P P, Q. Comme U1 U2 U3
P, Q nous pouvons affirmer que U P,
Q.
47(No Transcript)
48- Enlever les règles-? (P ??, Q?? dans lexemple).
Le résultat final est la grammaire G - S ? cPcQc P ? aPa Q ? bPbS ? ccQc P ? aa Q ?
bbS ? cPcc P ? Q S ? ccc
49 Avec la nouvelle grammaire G on peut dériver
les mêmes séquences terminales quavec la
grammaire originale G. Par exemple Dérivation
par G Règle utilisée S ? cPcQc S ? cPcQc ?
caPacQc P ? aPa ? caQacQc P ? Q ? caacQc Q
? ? ? caacc Q ? ?
Dérivation par G Règle utilisée S ? cPcc S ?
cPcc ? caacc P ? aa
50Exercice
- Soit la grammaire G suivante
- S ? aSb N ? SS ? dNa N ? ?
- Quel est le langage généré par cette grammaire?
- Solution Il est plus facile de voir quel est
langage généré par la grammaire si on la
simplifie dabord.
51- Il est possible de se débarrasser des règles N ?
S et N ? ? en substituant N, dans la règle S ?
dNa, par le côté droit de ces deux règles. Voici
la grammaire résultante - S ? aSb S ? dSa S ? da
- Toute séquence générée se divise en deux parties
qui sont presque des images miroirs, sauf quun
a dans la première partie correspond à un
b dans la deuxième et quun d dans la
première partie correspond à un a dans la
deuxième. - La première partie se termine par un d .
52- S ? aSb S ? dSa S ? da
- Par exemple, pour la séquence aadadababb, les
deux parties sont aadad et ababb. - Le langage généré par la grammaire est donc
- vdav v ? a, d et v est la séquence v
écrite à lenvers en y remplaçant les a par des b
et les d par des a.
53- Cette grammaire ne génère pas ?, bien quelle
contiennent une règle-?. Utiliser la recette
présentée à loccasion du théorème précédent pour
trouver une grammaire équivalente sans règle-?. - Solution
- (a) Il y a un seul symbole générateur de ?, soit
N ? ?, et donc U N. - (b) Seule la production S ? dNa a un symbole de U
à droite. En y supprimant le symbole N, on
obtient la règle S ? da, quil faut ajouter à la
grammaire.
54- (c) On enlève les règles-?. Le résultat final est
la grammaire suivante - S ? aSb S ? dNa S ? da N ? S
- Cette grammaire nest pas aussi simple que celle
trouvée dans la question 1. - Lintérêt du théorème précédent est quil fournit
un algorithme (pour lequel on pourrait écrire un
programme).
55Exercice
- Éliminez les règles ? dans la grammaire G dont
les productions sont les suivantes S ? AaBb A
? BC B ? CB ? bCb C ? c C ? ? - Réponse G ne génère pas ? donc nous pouvons
éliminer les règles ?. Étape 1 construisons
lensemble U des symboles générateurs de ?. U0
C, U1 U0 ? B B, C, U2 U1 ? A A,
B, C. U3 U2 ? ? U2.U U2 A, B, C.
Étape 2 rajoutons les règles adéquates dues au
fait que certains symboles peuvent se réécrire en
une séquence vide.
56Rappel S ? AaBb A ? BC B ? C
B ? bCb C ? c C ? ?
- S ? aBb S ? Aab viennent de
S ? AaBbS ? ab - B ? bb vient de B? bCb
- A ? B
- A ? C viennent de A ? BC
- A ? ?
-
- B ? ? vient de B ? C
- Étape 3 élimination de toutes les règles ?. Les
productions de la grammaire sont S ? AaBb
A ? BC B ? CS ? aBb A ? B
B ? bCbS ? Aab A ? C B ? bbS
? ab C ? c
57Définition
- Une grammaire non contextuelle dont le côté droit
de chaque règle consiste soit en un seul symbole
terminal, soit en exactement deux symboles non
terminaux, est dite sous la forme normale de
Chomsky.
58Remarque
- Le théorème qui suit utilise le théorème
précédent pour montrer que toute grammaire non
contextuelle qui ne génère pas la séquence vide
peut être transformée en une grammaire
équivalente qui a la forme normale de Chomsky.
59Théorème
- Si L est un langage non contextuel tel que ? ?
L, alors il existe une grammaire non contextuelle
G, sous forme normale de Chomsky, et telle que
L(G) L.
60Démonstration
- Soit G (V, T, S, R) une grammaire non
contextuelle sans règle-? telle que L(G) L. Il
faut trois étapes pour construire, à partir de G,
une grammaire équivalente G sous forme normale
de Chomsky. - Ces étapes seront illustrées au moyen dun
exemple.
61- Poser G G. Pour chaque x ? T, soit X ? V un
nouveau symbole non terminal - Remplacer toutes les occurrences de x par X dans
chaque règle de G. - Ajouter la règle X ? x à G.
- Le résultat est que le côté droit de chaque règle
de la grammaire G est - Soit un seul terminal
- Soit une suite de non terminaux.
62De plus, L(G) L(G). Par exemple, soit la
grammaire G S ? cMc M ? bMb M ? N N ? a On a
? ? L(G), car toutes les séquences commencent par
un c. Le résultat de la transformation décrite
juste avant est G S ? CMC N ? A B ? b M ?
N A ? a C ? c M ? BMB
63- Dans G, remplacer chaque règle de la forme N ?
N1N2 Nn (où n gt 2 et Ni non terminal) par
lensemble des règles - N ? N1R1R1 ? N2R2 Rn-3 ? Nn-2Rn-2Rn-2 ?
Nn-1Nn - Où Ri ? V, i 1,..n.
64- S ? CMC N ? A B ? b M ? N A ?
a C ? c M ? BMB - Pour notre exemple, le résultat est GS ?
CR1 M ? BP1 A ? aR1 ? MC P1 ? MB B ? bM ? N N ?
A C ? c
65- G a maintenant des règles de la forme
- non terminal ? terminalnon terminal ? non
terminal non terminalnon terminal ? non
terminal - Il reste maintenant à éliminer celles du type
non terminal ? non terminal. - Pour cela, il faut considérer toutes les chaînes
Nn ? Nn-1 ? ? N2 ? N1, où N1 ? Nn, et
ajouter les règles - Nn ? x si N1 ? x est une règle de G,
- Nn ? AB si N1 ? AB est une règle de G.
- Notez quil faut éviter les cycles, c-à-d N1 doit
être différent de Nn. Il faut arrêter la chaîne
juste avant dintroduire un cycle.
66S ? CR1 M ? BP1 A ? aR1 ? MC P1 ? MB B ? bM ?
N N ? A C ? c Dans notre exemple, les chaînes de
G qui nous intéressent sont les trois
suivantes (a) N ? A (b) M ? N (c) M ?
N, N ? A. On ajoute N ? a car A ? a est une
règle de G. M ? a car A ? a est une règle de
G. Si on avait une règle N ? b dans G, on
ajouterait également M ? b.
67S ? CR1 M ? BP1 A ? aR1 ? MC P1 ? MB B ? bM ?
N N ? A C ? c On enlève ensuite toutes les
productions de la forme non terminal ? non
terminal. La grammaire résultante finale est S
? CR1 M ? BP1 A ? aR1 ? MC P1 ? MB B ? bM
? a N ? a C ? c
68Ce résultat est intéressant pour deux
raisons 1) Ce type de grammaire est une
structure très simple les preuves visant à
démontrer certaines des propriétés des langages
non contextuels peuvent être plus simples si
elles supposent quune grammaire non contextuelle
a la forme normale de Chomsky (à la condition
quelle ne génère pas ? ).
692) Ensuite, il est surprenant de constater que la
syntaxe dun langage de programmation comme
Pascal pourrait être décrite au moyen dune
grammaire dont la structure est aussi simple. Il
faut cependant noter que cette simplicité
structurelle résulte en un inconvénient majeur
il faut un plus grand nombre de règles pour
définir un langage.
70Exercice
- Transformer la grammaire suivante en une
grammaire sous forme normale de ChomskyS ?
aSb S ? dNa S ? da N ? S
71S ? aSb S ? dNa S ? da N ? S
Solution Remarquons quil ny a aucune règle
?.1) Remplacer chaque symbole terminal x par un
nouveau symbole non terminal X et ajouter la
règle X ? x. S ? ASB S ? DA S ? DNA N ? S A ? a
D ? d B ? b 2) Transformer le côté droit
des règles ayant plus de 2 symboles non
terminaux. S ? AR S ? DA S ? DP N ? SR ? SB
P ? NA A ? a D ? d B ? b
72S ? AR S ? DA S ? DP N ? SR ? SB P ? NA A
? a D ? d B ? b 3) Éliminer les règles ayant
un seul symbole non terminal du côté droit. Il y
a une seule chaîne impliquant de telles règles,
soit N ? S. À cause des règles S ? AR, S ? DP et
S ? DA, il faut ajouter les règles N ? AR, N ? DP
et N ?DA. S ? AR N ? AR R ? SB A ? aS ? DP N ?
DP P ? NA B ? bS ? DA N ? DA D ? d
73Remarque
- Si ? ? L et si L est non contextuel alors on peut
trouver une grammaire qui est presque sous forme
normale de Chomsky - Dabord trouver G (V,T,S,R) sous forme normale
de Chomsky et telle que L(G) L ?. - Ajouter un nouveau non terminal S et la règle
S? ?. S est le nouveau symbole initial (la
nouvelle grammaire génère donc ?). - Pour chaque règle R de la forme S ? w, ajouter
une règle S? w.
74Exemple
- Supposons que ? ? L et que L ? est généré
par la grammaireS ? MN N ? MS N ? a M ? a - Comme cette grammaire est déjà sous la forme
normale de Chomsky, il suffit dexécuter les deux
dernières étapes. S est le nouveau symbole
initial - S ? ? S? MN S ? MN N ? MS N ? a M ? a
75Les limites des automates à pile
- Objectifs spécifiques
- Classifier des automates à pile décrits par des
diagrammes de transitions. Dire tout dabord si
la description est correcte. Si oui, dire si
lautomate est déterministe. Expliquer la raison
de chaque choix. - Classifier des descriptions formelles dautomates
à pile. Dire tout dabord si la description est
correcte. Si oui, dire si lautomate est
déterministe. Expliquer la raison de chaque choix.
76- Construire un automate à pile déterministe
acceptant un langage donné. - Démontrer quun langage donné nest pas un
langage non contextuel.
77La portée des langages non contextuels
- Il existe des langages qui ne sont pas non
contextuels (on dit quils sont contextuels ou
dépendant du contexte). - Nous avons déjà présenté une méthode permettant
de montrer quun langage nest pas régulier. - Nous verrons maintenant comment montrer quun
langage est contextuel.
78Remarques
- Le théorème suivant est appelé lemme de pompage,
car il montre comment créer de nouvelles
séquences en pompant des sous-séquences, i.e.
en ajoutant un nombre quelconque de ces
sous-séquences. - Cest ce théorème qui sera utilisé pour montrer
quun langage est contextuel.
79Théorème 2.40(à connaître)
- Soit L un langage infini. Si L est non
contextuel, alors il existe une séquence de L, de
la forme svuwt, où s, v, u, w, t sont des
sous-séquences telles que v ?? ou w ?? et telles
que svnuwnt ? L pour tout n ? N.
80Remarque
- Nous allons faire la preuve pour un exemple
concret. - Attention! Cette preuve nest valide que pour cet
exemple. - Le théorème est à admettre. On ne donne pas de
preuve.
81Exemple
- Soit la grammaire G (A, B, C, a, b, A, R),
où R est - A ? BC B ? a C ? A B ? CC C ? b C ? BB
- Le langage généré par G est infini.
- En effet, toutes les séquences de la forme an1b,
où n ? N, appartiennent à L(G).
82Voici la dérivation de an1b A ? ? Règle A ?
BC. ? BC ? ? Règle C ? A. ? BA ? ? Règle B ?
a. ? aA ? ? Les trois étapes précédentes
peuvent être faites une ou plusieurs fois.
? ? ? À la ligne suivante, n ? N ? anA ? ?
Règle A ? BC. ? anBC
83 anBC ? ? Règle B ? a. ? an1C ? ? Règle C ?
b. ? an1b
84(No Transcript)
85- Chaque nud dun arbre de dérivation a au plus m
fils donc, un arbre de dérivations de profondeur
d peut produire une séquence de longueur au plus
md (2d pour notre exemple). - Ainsi, larbre de lacétate suivante a une
profondeur de 3 et produit une séquence de
longueur maximale 8.
86(No Transcript)
87(No Transcript)
88- Choisissons une séquence z ? L telle que z gt mj
(une telle séquence existe puisque L est infini). - Pour notre exemple, z gt23 8. Prenons la
séquence - z abbbbabbabb (on a z 11).
- Nimporte quel arbre de dérivation de z a une
profondeur plus grande que j 3. - Il y a donc au moins un chemin, de la racine à
une feuille, contenant plus de j symboles non
terminaux.
89(No Transcript)
90Sur ce chemin, considérons le sous-arbre dont la
racine est B (3) duquel on enlève le sous-arbre
dont la racine est B(6) (on garde la racine).
91- Où
- s est la séquence terminale à gauche du
sous-arbre (3) dans larbre principal (1) - v est la séquence terminale à gauche du
sous-arbre (6) dans le sous-arbre (3) - u est la séquence terminale du sous-arbre (6)
- w est la séquence terminale à droite du
sous-arbre (6) dans le sous-arbre (3) - t est la séquence terminale à droite du
sous-arbre (3) dans larbre principal (1).
92Remarquons que v et w sont toutes deux non
vides. Le sous-arbre (3) correspond à la
dérivation B ? CC ? bC ? bA ? bBC ? bBb On peut
appliquer au B de la séquence résultante bBb la
même suite de dérivations, ce qui donne la
séquence bbBbb(début du pompage ). Cela
correspond à greffer tout le sous-arbre (3) à la
position (6), comme montré sur la prochaine
acétate.
93(No Transcript)
94On voit comment on réussit à répéter les
sous-séquences v et w autant de fois quon le
désire. Cela nous permet dobtenir, à partir de
la séquence z abbbbabbabb, de nouvelles
séquences abbbbnabnbabb, pour n ?N, qui
appartiennent à L(G), tel quannoncé dans
lénoncé du théorème.
95Nous aurions pu choisir une autre décomposition
de la séquence z, car il y a dautres chemins que
ACBCABa qui ont une profondeur plus grande que le
nombre de symboles non terminaux de G, par
exemple ABCBCb.
96- Où
- s est la séquence terminale à gauche du
sous-arbre (2) dans larbre principal (1)(cest
la séquence vide) - v est la séquence terminale à gauche du
sous-arbre (4) dans le sous-arbre (2) - u est la séquence terminale du sous-arbre (4)
- w est la séquence terminale à droite du
sous-arbre (4) dans le sous-arbre (2)(cest la
séquence vide) - t est la séquence terminale à droite du
sous-arbre (2) dans larbre principal (1).
97Puisque v ab, on a (v ?? ou w??). Le théorème
nous indique que les séquences
où n ? N, appartiennent au langage généré par G.
Cela est facile à vérifier en utilisant les mêmes
arguments que ci-dessus.
98Finalement, reconsidérons le chemin ACBCABa il
contient deux répétitions de A, lune en (1) et
lautre en (5). La séquence abbbbabbabb peut être
divisée sous la forme
- Où
- s est la séquence terminale à gauche de larbre
(1) (cest la séquence vide) - v est la séquence terminale à gauche du
sous-arbre (5) dans larbre (1) - u est la séquence terminale du sous-arbre (5)
- w est la séquence terminale à droite du
sous-arbre (5) dans larbre (1) - t est la séquence terminale à droite de larbre
(1) (cest la séquence vide)
99Puisque (v ?? ou w??), le théorème nous indique
que les séquences
où n ?N, appartiennent au langage généré par G.
Cela est facile à vérifier en utilisant encore
une fois les mêmes arguments.
100Remarque
- Grâce à ce théorème, on peut montrer que certains
langages dépendent du contexte. - Toutefois, afin den permettre une utilisation
plus facile, nous allons lénoncer de manière
différente dans le corollaire de lacétate
suivante.
101Corollaire 2.42(à connaître)
- Soit L un langage infini. Si, quelle que soit la
séquence svuwt de L , où s, v, u, w, t sont des
sous-séquences et où v ? ? ou w ? ?, il existe un
n ? N tel que la séquence svnuwnt nappartient
pas à L, alors L nest pas un langage non
contextuel (donc L est contextuel).
102Démonstration
- Nous allons montrer léquivalence des deux
propositions suivantes - ) Si L est non contextuel, alors il existe une
séquence de L, de la forme svuwt où s, v, u, w, t
sont des sous-séquences telles que v ? ? ou w ? ?
et telles que svnuwnt ? L pour tout n ? N. - ) Si, quelle que soit la séquence svuwt de L, où
s, v, u, w, t sont des sous-séquences telles que
v ? ? ou w ? ? , il existe un n ? N tel que la
séquence svnuwnt nappartient pas à L, alors L
nest pas un langage non contextuel.
103- Puisque la proposition 1 fait partie du théorème
2.40 qui a été démontré, si on montre que la
proposition 2 lui est équivalente, cela la
démontrera.
104Supposons que L est un langage sur lalphabet
?. Si L est non contextuel, alors il existe une
séquence de L, de la forme svuwt où s, v, u, w,
t sont des sous-séquences telles que v ? ? ou w
? ? et telles que svnuwnt ? L pour tout n ?
N. ? ? Reformulation symbolique.? L non
contextuel ? (? s, t, u, v, w ? ? svuwt ?
L ? ( v ? ? ? w ? ? ) ? ( ? n ? N
svnuwnt ? L )) ? ? (p ? q ) ? ( q ? p ). ?
(? s, t, u, v, w ? ? svuwt ? L ? ( v ? ? ? w ?
? ) ? ( ? n ? N svnuwnt ? L )) ? (
L non contextuel ) ? ? (?x p(x)) ? (?x
p(x)) . ?
105 ?Rappel ? (? s, t, u, v, w ? ? svuwt ? L
? ( v ? ? ? w ? ? ) ? ( ? n ? N svnuwnt
? L )) ? ( L non contextuel ) ? ? (?x
p(x)) ? (?x p(x)) . ? (? s, t, u, v, w ? ?
( svuwt ? L ? ( v ? ? ? w ? ? ) ? ( ? n ?
N svnuwnt ? L ))) ? ( L non contextuel
) ? ? Loi de De Morgan. ? (? s, t, u, v, w ? ?
( svuwt ? L ? ( v ? ? ? w ? ? )) ? ( ? n
? N svnuwnt ? L )) ? ( L non contextuel
) ? ? (?x p(x)) ? (?x p(x)). ?
106 (? s, t, u, v, w ? ? ( svuwt ? L ? ( v ? ? ?
w ? ? )) ? ( ? n ? N svnuwnt ? L )) ?
( L non contextuel ) ? ? (?x p(x)) ? (?x
p(x)). ? (? s, t, u, v, w ? ? ( svuwt ? L ?
( v ? ? ? w ? ? )) ? (? n ? N svnuwnt ? L
)) ? ( L non contextuel ) ? ? ( p ? q ) ? (
p ? q ). ? (? s, t, u, v, w ? ? ( svuwt ? L
? ( v ? ? ? w ? ? )) ? (? n ? N svnuwnt ? L
)) ? ( L non contextuel ) ? ? Reformulation
en français. ? Si, quelle que soit la séquence
svuwt de L, où s, v, u, w, t sont des
sous-séquences telles que v ? ? ou w ? ? , il
existe un n ? N tel que la séquence svnuwnt
nappartient pas à L, alors L n est pas un
langage non contextuel.
107Remarque
- Voyons maintenant comment utiliser ce corollaire
pour montrer quun langage dépend du contexte.
108Exemple 2.43
- Montrons que le langage L akbkck k ? N est
contextuel. Cest bien un langage infini nous
pouvons donc appliquer le corollaire précédent. - Considérons une séquence quelconque akbkck ? L et
supposons quelle est décomposée sous la forme
svuwt, où au moins lune de v ou de w est non
vide.
109- Il faut montrer qualors il existe n ? N tel que
svnuwnt ?L. Puisque nous ne connaissons pas la
forme exacte des sous-séquences s, t, u, v, w, il
nous faudra étudier tous les cas possibles. - Si v contient des a et des b, la séquence sv2uw2t
contient un b qui précède un a (rappel (ab)2
abab). Ce nest donc pas une séquence de L. Il en
est de même si v contient à la fois des a et des
c, ou des b et des c.
110- En appliquant le même raisonnement à w, on voit
que si w contient au moins deux symboles
différents, alors sv2uw2t ? L. - Si v contient seulement des a, la séquence
sv2uw2t contient plus de a que la séquence svuwt.
- Si la sous-séquence w2 introduit à la fois des b
et des c pour équilibrer les a supplémentaires,
on a sv2uw2t ? L, par le cas précédent. - Et si w2 introduit seulement des b, on a sv2uw2t
? L, car les c sont en déficit il en est de même
si w2 introduit seulement des c ( les b sont en
déficit). - Pour la même raison, si v contient seulement des
b ou seulement des c, on a sv2uw2t ? L.
111- En appliquant le même raisonnement à w, on voit
que si w contient seulement des a, ou seulement
des b, ou seulement des c, alors sv2uw2t ? L. - Comme lune des sous-séquences v ou w doit être
non vide, nous avons épuisé toutes les
possibilités. - Le langage L nest donc pas un langage non
contextuel.
112(No Transcript)