• Aucun résultat trouvé

Grammaires contextuelles (type 1)

Dans le document Théorie des langages (Page 66-69)

5.2 La hiérarchie de Chomsky

5.2.2 Grammaires contextuelles (type 1)

Les grammairesmonotonesintroduisent une première restriction sur la forme des règles, en imposant que la partie droite de chaque production soit nécessairement plus longue que la partie gauche. Formellement :

Définition 5.8(Grammaire monotone). On appellegrammaire monotoneune grammaire syn-tagmatique dans laquelle toute productionα→βest telle que|α| ≤ |β|.

Cette définition impose qu’au cours d’une dérivation, les proto-mots d’une grammaire mo-notone s’étendent de manière momo-notone. Cette contrainte interdit en particulier d’engendrer le mot videε. Nous reviendrons en détail sur cette question à lasection 5.2.6.

Les langages engendrés par les grammaires monotones sont également obtenus en posant une contrainte alternative sur la forme des règles, conduisant à la notion de grammaire contextuelle :

Définition 5.9(Grammaire contextuelle). On appellegrammaire contextuelle, ougrammaire sensible au contexte, en abrégégrammaire CS(en anglaisContext-Sensitive) une grammaire telle que toute production de G est de la formeα12 →α1βα2, avecα1, α2, βdans V?,β , εet A est dans N.

Les grammaires contextuelles sont donc telles que chaque production ne récrit qu’un symbole non-terminal à la fois, le contexte (c’est-à-dire les symboles encadrant ce non-terminal) restant inchangé : d’où la qualification decontextuellespour ces grammaires. Par construction, toute grammaire contextuelle est monotone (car β , ε). Le théorème suivant nous dit plus : grammaires contextuelles et monotones engendrent exactement les mêmes langages.

Théorème 5.10. Pour tout langage L engendré par une grammaire monotone G, il existe une grammaire contextuelle qui engendre L.

Démonstration. SoitLengendré par la grammaire monotoneG = (N,Σ,S,P). Sans perte de généralité, nous supposons que les terminaux n’apparaissent que dans des productions de

5.2. LA HIÉRARCHIE DE CHOMSKY la formeA → a. Si cela n’est pas le cas, il suffit d’introduire un nouveau non-terminalXa

pour chaque terminal, de remplaceraparXa dans toutes les productions, et d’ajouter àPla productionXa →a. Nous allons construire une grammaire contextuelle équivalente àGet pour cela nous allons démontrer deux résultats intermédiaires.

Lemme 5.11. Si G est une grammaire monotone, il existe une grammaire monotone équivalente dans laquelle toutes les parties droites ont une longueur inférieure ou égale à2.

Démonstration. En procédant par récurrence sur le nombre de productions de G qui ne satisfont pas la condition, il suffit d’illustrer comment récrire une seule telle production.

Ainsi, soitα = α1. . . αm → β = β1. . . βn une production de G. Gétant monotone, m 6 n : complétons alorsαavec desεde manière à écrireα=α1. . . αn, où lesαisont dansΣ∪N∪ {ε}. Construisons ensuite G0, déduite de Gen introduisant les n−1 nouveaux non-terminaux X1. . .Xn1, et en remplaçantα→βpar lesnles productions suivantes :

α1α2 → β1X1

Xi1αi+1 → βiXi ∀i,1<i<n Xn1 → βn

Il est clair queG0est monotone et que l’application successive de ces nouvelles règles a bien pour effet global de récrire de proche en procheαenβpar :

α1α2. . . αm

Soit alorsudansL(G) : siuse dérive deSsans utiliserα→β, alorsuse dérive pareillement de S dans G0. Si u se dérive dans G par S ⇒?

G vαw ⇒

G vβw ⇒?

G u, alors u se dérive dans G0 en remplaçant l’étape de dérivationvαw ⇒

G vβw par les étapes de dérivation détaillées ci-dessus. Inversement, siuse dérive dansG0 sans utiliser aucune variableXi, elle se dérive à l’identique dans G. Si X1 apparaît dans une étape de la dérivation, son élimination par application successive des n règles précédentes implique la présence du facteur αdans le proto-mot dérivantu:use dérive alors dansGen utilisantα→β.

Par itération de cette transformation, il est possible de transformer toute grammaire mono-tone en une grammaire monomono-tone équivalente dont toutes les productions sont telles que leur partie droite (et, par conséquent, leur partie gauche, par monotonicité deG) ont une longueur inférieure ou égale à 2. Le lemme suivant nous permet d’arriver à la forme désirée pour les parties gauches (les productions de la formeA → a pouvant être gardées telles quelles).

Lemme 5.12. Si G est une grammaire monotone ne contenant que des productions de type AB→CD, avec A,B,C et D dans N∪ {ε}, alors il existe une grammaire équivalente satisfaisant la propriété du théorème 5.10.

Démonstration. Cette démonstration utilise le même principe que la démonstration précé-dente, en introduisant pour chaque productionR=AB→CDle nouveau non-terminalXAB et en remplaçantRpar les trois productions suivantes :

— AB→XABB

— XABB→XABD

— XABD→CD

On déduit directement le résultat qui nous intéresse : toute grammaire monotone est équi-valente à une grammaire dans laquelle chaque production ne récrit qu’un seul et unique symbole.

Ces résultats permettent finalement d’introduire la notion de langage contextuel.

Définition 5.13(Langage contextuel). On appellelangage contextuel(ou langagesensible au contexte, en abrégélangage CS) un langage engendré par une grammaire contextuelle (ou par une grammaire monotone).

Les langages contextuels constituent une classe importante de langages, que l’on rencontre effectivement (en particulier en traitement automatique des langues). Une présentation plus complète des langages contextuels et des grammaires qui les engendrent est effectuée au chapitre 15. Un représentant notable de ces langages est le langage {anbncn,n ≥ 1}, qui est engendré par lagrammaire 5.2d’axiomeS.

p1=S →aSQ p2=S →abc p3=cQ →Qc p4=bQc→bbcc

Grammaire 5.2 – Une grammaire pouranbncn

Lagrammaire 5.2est monotone. Dans cette grammaire, on observe par exemple les dériva-tions listées dans letableau 5.3.

Il est possible de montrer qu’en fait les seules dérivations qui réussissent dans cette gram-maire produisent les mots (et tous les mots) du langage{anbncn,n ≥1}, ce qui est d’ailleurs loin d’être évident lorsque l’on examine les productions de la grammaire.

Un dernier résultat important concernant les langages contextuels est le suivant :

Théorème 5.14. Tout langage contextuel est récursif, soit en notant RC l’ensemble des langages récursifs, etCSl’ensemble des langages contextuels :CS ⊂ RC.

Ce que dit ce résultat, c’est qu’il existe un algorithme capable de décider si un mot appartient ou pas au langage engendré par une grammaire contextuelle. Pour s’en convaincre, esquis-sons le raisonnement suivant : soitule mot à décider, de taille|u|. Tout proto-mot impliqué

5.2. LA HIÉRARCHIE DE CHOMSKY

dans la dérivation deuest au plus aussi long queu, à cause de la propriété de monotonie.

Il « suffit » donc, pour décideru, de construire de proche en proche l’ensembleDde tous les proto-mots qu’il est possible d’obtenir en « inversant les productions » de la grammaire.D contient un nombre fini de proto-mots ; il est possible de construire de proche en proche les éléments de cet ensemble. Au terme de processus, siSest trouvé dansD, alorsuappartient àL(G), sinon,un’appartient pas àL(G).

Ce bref raisonnement ne dit rien de la complexité de cet algorithme, c’est-à-dire du temps qu’il mettra à se terminer. Dans la pratique, tous les algorithmes généraux pour les grammaires CS sont exponentiels. Quelques sous-classes particulières admettent toutefois des algorithmes de décision polynomiaux. De nouveau, le lecteur intéressé se reportera auchapitre 15, dans lequel certains de ces algorithmes sont présentés.

Pour finir, notons qu’il est possible de montrer que la réciproque n’est pas vraie, donc qu’il existe des langages récursifsqui ne peuvent être décrits par aucune grammaire contextuelle.

Dans le document Théorie des langages (Page 66-69)

Documents relatifs