Arbre de drivation - PowerPoint PPT Presentation

1 / 112
About This Presentation
Title:

Arbre de drivation

Description:

branches de l'arbre sont ind pendantes.Donc l'ordre d'application des ... M me si l'ordre d'application des r gles de production n'affecte pas le r sultat ... – PowerPoint PPT presentation

Number of Views:177
Avg rating:3.0/5.0
Slides: 113
Provided by: Pat145
Category:

less

Transcript and Presenter's Notes

Title: Arbre de drivation


1
Arbre 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.

2
Arbre 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.
3
Remarque
  • 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.

4
Définition
  • Une grammaire est dite ambiguë si elle permet
    plus dun arbre de dérivation pour une séquence
    terminale donnée.

5
Exercice
  • 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.

6
Exercice (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

7
Solution 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
8
Voici 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
10
Voici 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.

12
Définition
  • Un langage est dit non contextuel sil est généré
    par une grammaire non contextuelle.

13
Exercice
  • 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

14
Notation
  • 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
16
Théorème
  • Pour toute grammaire non contextuelle G, il y a
    un automate à pile M tel que L(G) L(M).

17
Dé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.

22
Exemple
  • 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
23
Lacceptation 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.
26
Un 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.
27
Exercice
  • 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.

28
Solution La grammaire est S ? aSb S ?
? Lautomate obtenu en utilisant la méthode du
théorème précédent est le suivant
29
Voici 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_
30
Théorème
  • Pour chaque automate à pile M, il existe une
    grammaire non contextuelle G telle que L(M)
    L(G).

31
Remarque
  • 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)
32
Remarque
  • 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.

33
Théorème
  • Lunion de deux langages non contextuels est un
    langage non contextuel.

34
Dé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).

36
Exemple
  • 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

39
Forme 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.

40
Exemple
  • 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.

41
Dé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 ?.

42
Exercice
  • 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-?.

44
Thé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).

45
Dé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
50
Exercice
  • 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).

55
Exercice
  • É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.

56
Rappel 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

57
Dé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.

58
Remarque
  • 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.

59
Thé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.

60
Dé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.

62
De 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.

66
S ? 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.
67
S ? 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
68
Ce 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 ? ).
69
2) 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.
70
Exercice
  • Transformer la grammaire suivante en une
    grammaire sous forme normale de ChomskyS ?
    aSb S ? dNa S ? da N ? S

71
S ? 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
72
S ? 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
73
Remarque
  • 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.

74
Exemple
  • 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

75
Les 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.

77
La 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.

78
Remarques
  • 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.

79
Thé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.

80
Remarque
  • 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.

81
Exemple
  • 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).

82
Voici 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)
90
Sur 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
  • 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).

92
Remarquons 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)
94
On 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.
95
Nous 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
  • 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).

97
Puisque 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.
98
Finalement, 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
  • 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)

99
Puisque (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.
100
Remarque
  • 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.

101
Corollaire 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).

102
Dé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.

104
Supposons 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.
107
Remarque
  • Voyons maintenant comment utiliser ce corollaire
    pour montrer quun langage dépend du contexte.

108
Exemple 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)
Write a Comment
User Comments (0)
About PowerShow.com