• Aucun résultat trouvé

B.2 Algorithmes d’analyse polynomiaux

B.2.2 Reconnaissance selon une CCFG

Théorème B.6. Étant donné une CCFG G et un mot w = l1. . . ln, l’algo-

rithme d’analyse rappelé dans la figure B.2 permet de dériver le fait (~1S, 0, n)

si et seulement si w ∈ L(G), et appartient à la classe de complexité LogCFL. Démonstration. Comme pour la preuve de l’algorithme d’analyse des CRG, nous montrons inductivement l’équivalence entre la dérivabilité d’un fait et un ensemble d’affirmations portant sur les langages des non-terminaux de G, et en déduisons la correction et la complétude de l’algorithme. Ainsi, nous montrons qu’un fait (v, i, j) est dérivable si et seulement si ces affirmations sont vraies :

2. li+1. . . lj = w1. . . wm tel que pour tout i ∈ [m], wi ∈ L(Ai).

Par abus de notation, le facteur li+1. . . lj de w désigne le mot vide si i ≥ j. Le

mot w0 en revanche, est supposé non-vide dans tous les cas (aucun fait de la forme (~0, i, j) n’est dérivable).

Nous prouvons d’abord la correction de l’algorithme, en montrant l’impli- cation directe dans l’équivalence précédente. Nous procédons par induction sur la dérivation de (v, i, j), en considérant chacune des règles susceptibles de conclure cette dernière :

Vide Dans ce cas, i = j et v est un vecteur unitaire ~1A. Nous posons donc

w0 = A, satisfaisant immédiatement les affirmations 1 et 2 car ε ∈ L(A). Constante Dans ce cas, i = j − 1 et v = ~1A. Nous posons donc à nouveau

w0 = A, satisfaisant immédiatement les affirmations 1 et 2 car li ∈ L(A).

Analyse Dans ce cas, v = ~1A et, en raison des pré-conditions de la règle,

deux faits (~1B, i, k) et (~1C, k, j) sont dérivables. En appliquant l’hypo-

thèse d’induction aux deux faits précédents, nous obtenons que li+1. . . lk

appartient à L(B) et lk+1. . . lj à L(C) (puisque, suivant le cas, w0 = B

ou w0 = C respectivement). Or A se réécrit en B C en raison de la troisième pré-condition, donc si w0 = A (satisfaisant l’affirmation 1), le mot li+1. . . lklk+1. . . lj, concaténant les deux facteurs précédents,

appartient effectivement à L(A), satisfaisant l’affirmation 2.

Réduction Dans ce cas, nous savons qu’un fait (v, i, j) est dérivable, avec v ∈ ψ(G, A). Par hypothèse d’induction sur (v, i, j), il existe un mot w” formé par les symboles non-terminaux de v, et appartenant donc au langage commutatif de A. De plus, les symboles de w” se réécrivent en une série de facteurs distincts formant le mot li+1. . . lj (affirmation

2 de l’hypothèse d’induction). Par suite, li+1. . . lj appartient à L(A)

(celui-ci incluant, par le langage commutatif de A, un terme équivalent à un terme de frontière w”). Nous posons donc w0 = A, vérifiant les affirmations 1 et 2.

Combinaison Dans ce cas, le vecteur v vérifie v = u1+ u2, et il existe un

indice k tel que les faits (u1, i, k) et (u2, k, j) sont dérivables. Aussi, nous

pouvons établir les affirmations suivantes en utilisant à deux reprises l’hypothèse d’induction :

— il existe un mot b = B1. . . Bl tel que ψ(b) = u1,

— li+1. . . lk = b1. . . bl où chaque bi appartient à L(Bi) ;

— il existe un mot c = C1. . . Cp tel que ψ(c) = u2

— lk+1. . . lj = c1. . . cp où chaque ci appartient à L(Ci) ;

Par suite, nous posons m = l + p, et Ai et wi désignent soit Bi et bi

(lorsque i ≤ l), soit Ci−l et ci−l (lorsque i > l). Il s’ensuit immédiate-

ment qu’il existe w0 = A1. . . Am ayant pour image de Parikh u1+u2 = v

(affirmation 1), et que li+1. . . lklk+1. . . lj = w1. . . wm avec wi ∈ L(Ai),

vérifiant l’affirmation 2 et concluant l’induction.

à L(S), et donc w ∈ L(G).

Nous montrons maintenant la réciproque de l’implication, afin d’établir la complétude de l’algorithme. Nous supposons la validité des affirmations 1 et 2, et montrons qu’un fait (v, i, j) correspondant est dérivable, par induction sur la somme des tailles des dérivations montrant que wi ∈ L(Ai). En raison

de l’affirmation 1, il existe un mot w0 = A1. . . Am; nous distinguons deux cas

selon la longueur de w0 : soit m > 1, soit m = 1 (par hypothèse, w0 6= ε). Dans le premier cas, le vecteur v correspondant n’est pas unitaire, et la règle Combinaison doit donc être appliquée pour dériver (v, i, j). Nous choisissons 0 < p < m et en tirons les quatre affirmations suivantes :

3. il existe wg = A1. . . Ap tel que ψ(wg) = u1,

4. li+1. . . lk = w1. . . wp tel que pour tout i ∈ [p], wi ∈ L(Ai),

5. il existe wd= Ap+1. . . Am tel que ψ(wd) = u2,

6. lk+1. . . lj = wp+1. . . wm tel que pour tout p < i ≤ m, wi ∈ L(Ai).

La somme des tailles des dérivations impliquées dans les affirmations 4 et 6 (montrant que wi ∈ L(Ai)) est immédiatement strictement inférieure à celle de

l’affirmation 2. Par conséquent, nous pouvons appliquer l’hypothèse d’induc- tion sur les affirmations 3,4 et 5,6 pour établir que les faits (u1, i, k) et (u2, k, j)

sont dérivables. Or v = u1+ u2, donc la règle Combinaison permet de dériver

le fait (v, i, j), nous permettant de conclure dans le cas où m > 1.

Nous supposons maintenant que m = 1. Nous notons w0 = A1 = A, v = ~1A

et t est le terme de T (A) permettant d’établir que w1 = li+1. . . lj appartient

à L(A). Nous distinguons quatre cas de figure en fonction de la structure de t et de sa dérivation (observons que l’induction procède sur la taille de celle-ci, puisque l’affirmation 2 ne suppose qu’une seule dérivation lorsque m = 1).

— Supposons d’abord que frt(t) = ε. Ce cas est résolu immédiatement puisqu’il entraîne que li+1. . . lj = ε et donc que i = j. Le fait à dériver

est donc (A, i, i), est peut-être immédiatement obtenu en appliquant la règle Vide, le terme t satisfaisant son unique pré-condition.

Une conséquence particulière est que nous pouvons supposer à l’avenir que t 6= ε ; nous considérons donc les trois cas restants : soit t = a, soit t = t1 t2, soit enfin t = ⊗ t1 t2.

— Si t = a, alors li+1. . . lj = a ; par conséquent, i = j − 1 et a = lj.

Puisque G est en forme normale, le terme t doit avoir été dérivé par une production A(a) ← ; nous pouvons donc appliquer la règle Constante pour dériver le fait (~1A, j − 1, j) attendu.

— Si t = t1 t2, alors G contient une production de la forme A( x y) ←

B(x) C(y). En outre, nous pouvons séparer le mot li+1. . . lklk+1. . . lj

en deux composantes, à une position k. La première vérifie les deux affirmations suivantes :

— il existe w” = A1. . . Ap tel que ψ(wg) = ~1B

Ce qui entraîne, par hypothèse d’induction, que le fait (~1B, i, k) est dé-

rivable. Suivant le même raisonnement, la seconde composante permet d’établir la dérivabilité du fait (~1C, k, j). Observons que cette sépara-

tion est possible en raison de la présence de l’opérateur à la racine de t : celle-ci entraîne que tout terme équivalent à t a pour frontière la concaténation de deux mots distincts (la frontière d’un terme équivalent à t1 et celle d’un terme équivalent à t2). Pour conclure, la production

de G qui permet de construire t et les deux faits établis comme déri- vables en utilisant l’hypothèse d’induction permettent, en utilisant la règle Analyse, de dériver le fait (~1A, i, j).

— Enfin, nous traitons le cas où t = ⊗ t1 t2. Nous considérons alors un

vecteur u, défini comme l’image de Parikh associée à la plus grande sous-dérivation de t qui ne contienne que des symboles non-terminaux et l’opérateur ⊗. En d’autres termes, cette dérivation est obtenue en considérant celle de t et en excluant toutes les étapes de réécritures requérant une production terminale ou l’emploi de l’opérateur : la frontière du terme obtenu se compose exclusivement de symboles non- terminaux, et son image de Parikh u appartient par définition au lan- gage commutatif ψ(G, A) de A. Nous en tirons les deux affirmations suivantes :

— il existe w” = A1. . . Am tel que ψ(w”) = u

— li+1. . . lj = w1. . . wm, avec wi ∈ L(Ai) pour tout i ∈ [m]

Le mot w” réordonne simplement les symboles non-terminaux formant la frontière de la sous-dérivation décrite plus haut. L’appartenance des mots wi à L(Ai) est donnée par les sous-dérivations précédemment ex-

clues (utilisant des productions terminales ou l’opérateur ), dont la somme des tailles est strictement inférieure à celle de la dérivation ori- ginale (au moins une occurrence de l’opérateur ⊗, à la racine de t, en est exclue, requérant un pas de réécriture à partir de A). Par conséquent, notre hypothèse d’induction montre que le fait (u, i, j) est dérivable et, puisque u ∈ ψ(G, A), la règle Réduction nous permet de dériver le fait (~1A, i, j), concluant la preuve de l’implication réciproque.

Finalement, si un mot w est dérivable selon G, alors il existe w0 = S (de vecteur associé ~1S), tel que w = l1. . . ln appartient à L(S). Par conséquent,

comme nous venons de l’établir, le fait (~1S, 0, n) est dérivable, ce qui montre

la complétude de l’algorithme.

Nous montrons maintenant que cet algorithme appartient à la classe de complexité LogCFL, définie comme l’ensemble des problèmes réductibles en espace logarithmique à l’appartenance d’un mot à un langage hors-contexte. Nous exploitons pour ce faire une caractérisation de cette classe établie par Ruzzo [1980], qui correspond à l’ensemble des problèmes décidables par une machine de Turing alternante[Chandra et al., 1981] en espace logarithmique et avec un arbre de calcul de taille polynomiale. Sans donner de construction

précise, nous expliquons le fonctionnement général d’une machine de Turing alternante qui implémente l’algorithme, et donnons les arguments clés permet- tant d’établir que celle-ci respecte les contraintes évoquées ci-dessus en termes de mémoire et de taille de l’arbre d’exécution.

Considérons le système de règles donné par la figure B.1 : chacune de ses règles dérive un fait de la forme (v, i, j), où 0 ≤ i, j ≤ n et v est un vec- teur de dimension constante (N ) et dont la norme supremum est bornée par n + 1. Par conséquent, ces faits peuvent être représentés en espace logarith- mique par rapport à |w| = n. La machine de Turing alternante qui implémente cet algorithme choisit une règle de l’algorithme (ainsi qu’une valeur pour ses prémisses) lorsqu’elle est dans un état existentiel, et prouve ensuite chacune des prémisses de cette règle depuis un état universel. Cette machine représente originellement sur sa bande le fait (~1S, 0, n), et accepte le mot w passé en en-

trée si et seulement si elle parvient à éliminer toutes les prémisses des règles qu’elle choisit d’appliquer.

Puisque la bande de la machine ne contient à tout instant qu’un unique fait dépendant de |w|, celle-ci fonctionne en espace logarithmique par rapport à n ; reste à borner polynomialement la taille de l’arbre de calcul. Celui-ci peut être vu comme le nombre d’états effectivement traversés lors d’un calcul réussi minimal de la machine : il inclut à chaque transition depuis un état existentiel la taille minimale d’un arbre de calcul réussi parmi les successeurs possibles, et à chaque transition depuis un état universel la somme des tailles minimales des arbres de calculs des différents successeurs. La borne que nous établissons repose sur deux observations clés : d’une part, il n’existe qu’un nombre polynomial de faits dérivables lors de l’analyse d’un mot w ; d’autre part, il existe une métrique sur ces faits qui décroît rapidement lors de toute transition depuis un état universel.

Observons tout d’abord que toutes les prémisses des règles de l’algorithme sont soit des faits de dérivation, soit vérifiables dans NL (dans le cas de la règle Réduction), soit en temps constant (pour toutes les autres règles). Il suffit donc de borner le nombres d’étapes de calcul servant à établir des faits de dérivation. Compte tenu de la borne sur kvk et des valeurs possibles de i et j, le nombre de faits de dérivation distincts est borné par nN +2, où N = #(N )

est le nombre (constant) de symboles non-terminaux dans G. Par conséquent, toute branche de calcul est de hauteur au plus polynomiale : en effet, si une branche de calcul possède une hauteur supérieure nN +2, alors elle cherche à établir au moins deux fois un même fait et peut donc être élaguée. Nous consi- dérons maintenant la taille d’une étape de calcul, définie comme la taille j − i du fragment de w qu’elle reconnaît : tout arbre de calcul comprenant une étape de taille 1 ou 0 se conclut immédiatement par une application de la règle Constante ou Vide. En outre, toute étape de taille supérieure à 1 possède soit un seul successeur par une transition universelle (règle Réduction), soit deux successeurs tels que la somme de leurs tailles égale celle l’étape précé-

dente (règles Analyse et Combinaison). Aussi, puisque la hauteur de l’arbre de calcul est bornée polynomialement, et que sa largeur est bornée logarithmi- quement à terme, la taille totale de l’arbre demeure bornée polynomialement, entraînant que le problème de l’analyse d’un mot selon une CCFG appartient à LogCFL. A(li) ← ∈ P Constante (~1A, i − 1, i) ∃t ∈ TG(A). frt(t) = ε Vide (~1A, i, i) (~1B, i, j) (~1C, j, k) A( x y) ← B(x) C(y) ∈ P Analyse (~1A, i, k) (u, i, j) (v, j, k) ku + vk ≤ |w| + 1 Combinaison (u + v, i, k) (v, i, j) v ∈ ψ(G, A) Réduction (~1A, i, j)

Figure B.2 – Algorithme d’analyse selon une CCFG

B.3

Algorithme d’analyse général

Cette section contient les démonstrations des différentes propriétés du sys- tème de typage sémantique des termes proposé dans la section 5.6. Elle se conclut par les preuves de correction, complétude et complexité de l’algorithme de reconnaissance général présenté à l’issue du chapitre5.