• Aucun résultat trouvé

Théorème d’Immerman-Szelepcsényi

Dans le document COMPLEXITÉ ALGORITHMIQUE (Page 140-146)

Considérations de base sur l’espace

4.5 Le rôle du non-déterminisme

4.5.3 Théorème d’Immerman-Szelepcsényi

Nous allons voir encore une fois une propriété du non-déterminisme pour l’espace qui semble contraire aux classes en temps : les classeNSPACEsont closes par complément.

Après ce qu’on vient de voir, c’est évident pourNPSPACEbien sûr (puisque ce n’est autre quePSPACE), mais c’est beaucoup plus surprenant pourNL.

Le problème de l’inaccessibilité dans un graphe

La classecoNLdes langages dont le complémentaire est dans NL(cf. définition 2-AX) peut également être caractérisée en termes de machines non déterministes commecoNP (proposition2-AY).

4.5. Le rôle du non-déterminisme 121 4-AV Proposition (coNL)

La classecoNLest l’ensemble des langagesAtels qu’il existe une machine de Turing non déterministeN fonctionnant en espace logarithmique et satisfaisant :

xAssi tous les chemins de calcul deN(x)sont acceptants.

Le résultat de clôture par complément montré indépendamment par Immerman et Sze-lepcsényi découle de deux astucieux lemmes ci-dessous qui permettent de décider dans NLle complémentaire du problèmeNL-completACCESSIBILITÉ(proposition4-AL). On notera donccoACCESSIBILITÉle problème suivant :

entrée: un graphe orientéGet deux sommetss et t; – question:test-il inaccessible depuiss dansG?

Par le même raisonnement qu’au lemme3-AI, ce problème estcoNL-complet.

Compter les sommets accessibles

L’idée est d’utiliser le nombre de sommets accessibles depuisspour vérifier que nos calculs non déterministes ont atteints tous les sommets voulus. Le premier lemme et son corol-laire montrent qu’on peut compter « dansNL» le nombre de sommets deGaccessibles depuis un sommets.

4-AW Lemme

SiGest un graphe orienté et s un sommet, on noteSi l’ensemble des sommets deGà distancei des.

Il existe une machine de Turing non déterministe N fonctionnant en espace logarith-mique sur l’entrée(G,s,i,|Si|), telle que :

N(G,s,i,|Si|)possède au moins un chemin acceptant ;

|Si+1|est inscrit en binaire sur le ruban de sortie à la fin de tout chemin acceptant.

On n’exige rien du résultat si l’entrée donne une valeur erronnée de|Si|.

Idée de la démonstration On parcourt tous les sommets et pour chaque sommet on teste s’il appartient àSi+1. Ce test est bien sûr la partie astucieuse. À la fin du processus, un compteur nous donnera la valeur de|Si+1|. Voici comment tester si un sommetu appartient àSi+1.

Il s’agit de savoir s’il est dansSi ou s’il est voisin deSi. On parcourt tous les sommets et pour chaque sommetvon teste s’il appartient àSi en se déplaçant de manière non déterministe des àvpendanti étapes. Il se peut bien sûr quevsoit accessible mais

122 Chapitre 4. Considérations de base sur l’espace que les choix non déterministes ne trouvent pas ce chemin : pour pouvoir repérer plus tard cette éventualité (et ignorer le calcul correspondant), on incrémente un compteur csi on a atteintv. Pendant le processus, on a vérifié siuétait dansSiou s’il était voisin de l’un des sommets deSi.

Si tous les choix non déterministes ont été bons, on a trouvé tous les sommets deSi, doncc=|Si|. Si ce n’est pas le cas, on rejette, sinon on a bien testé siuSi+1. L’espace est resté logarithmique.

Démonstration On aura besoin d’un test non déterministe en espace logarithmique qui admet un calcul acceptant ssi il existe un chemin de longueuri des à un sommet u (c’est-à-dire ssi u Si). Par manque d’espace, on ne peut pas deviner le chemin complet. Il nous faut progresser dans le graphe pas à pas en devinant un nouveau sommet à chaque étape et en oubliant les précédents. Voici le test pouri1.

Test1(s,u,i):

ws (se souvenir du dernier sommet) ; – pourd de1ài faire

devinerun sommet x,

rejetersi x̸=wet xn’est pas voisin dew,

acceptersix=u,

wx;

rejeter.

L’espace utilisé par ce test est celui nécessaire pour stockerd,wet x, c’est-à-dire loga-rithmique.

Lorsqueu̸∈Si, le test précédent n’a que des calculs rejetant. Mais au contraire nous voulons un test qui possède toujours au moins un chemin acceptant, et que ceux-ci renvoient1 lorsque u Si et 0 lorsque u ̸∈Si. L’astuce pour réaliser un tel test est d’utiliser une information supplémentaire, la taille deSi, avec un compteur pour vérifier que l’on a bien atteint tous les sommets deSi. Voici donc le nouveau test.

Test2(s,u,i,|Si|):

c0(compteur pour le nombre de sommets atteints) ; – b0(booléen pour savoir siua été atteint) ;

pour toutsommetvfaire

tester sivSi par l’algorithme Test1,

sile calcul est acceptant

· cc+1

4.5. Le rôle du non-déterminisme 123

· siv=ualorsb1;

sic=|Si|alors accepteretrenvoyerb; – sinon rejeter.

Il existe bien sûr des suites de choix non déterministes telles que pour tout vSi, les tests «vSi? » effectués par Test1donnent tous un calcul acceptant. Le long de ces calculs, on incrémentecà chaque nouveau sommetvSi, donc on accepte. Sur chacun de ces calculs acceptants, on renvoie la valeur deb, c’est-à-dire1siuSi et0 sinon.

Les autres calculs ont raté au moins l’un des sommets v Si, donc c < |Si| et ils rejettent. Ainsi, il existe des chemins acceptants, ils renvoient tous la même valeur et cette valeur est1ssiuSi. L’espace utilisé est logarithmique car il suffit de maintenir un compteur, d’énumérer les sommets et d’utiliser le test précédent.

On peut enfin calculer|Si+1|en fonction de|Si|à l’aide d’un compteurk et de Test2. – k0(compteur pour le nombre de sommets atteints) ;

pour toutsommetufaire

b0(booléen pour savoir siuSi+1),

pour toutsommetvfaire

· tester sivSi par l’algorithme Test2

· sile calcul de Test2est acceptant et renvoieb =1, etsi uest égal àvou est un voisin dev,alorsb1,

kk+b;

sitous les calculs de Test2ont accepté,alors accepteret ren-voyerk;

sinon rejeter.

Si l’on a suivi un calcul acceptant pour tous les testsvSipar l’algorithme Test2, alors on a incrémenték dès que u est un sommet deSi ou un voisin, donc l’algorithme renvoie la bonne valeur |Si+1|. L’espace utilisé est logarithmique puisqu’il suffit de maintenir le compteurk, d’énumérer les sommetsuetvet d’utiliser Test2. ⊓⊔

4-AX Corollaire

Il existe une machine de Turing non déterministe N fonctionnant en espace logarith-mique sur l’entrée(G,s), oùGest un graphe orienté ets un sommet deG, telle que :

N(G,s)possède des chemins acceptants ;

124 Chapitre 4. Considérations de base sur l’espace

– le nombre de sommets accessibles depuis s est inscrit en binaire sur le ruban de sortie à la fin de tout chemin acceptant.

Démonstration Il suffit de calculer successivement grâce à l’algorithme du lemme précé-dent, en partant de|S0|=1, les valeurs de|S1|, …,|Sn|, oùnest le nombre de sommets deG(car si un sommet est accessible, il l’est par un chemin de longueurn). On a besoin de retenir seulement la valeur|Si|pour calculer|Si+1|donc l’espace utilisé reste

logarithmique. ⊓⊔

Algorithme pour l’inaccessibilté

Ce comptage des sommets accessibles est un élément central dans l’algorithme du lemme suivant.

4-AY Lemme

coACCESSIBILITÉNL.

Idée de la démonstration Pour décider si t n’est pas accessible depuis s dansG, on utilise l’algorithme du corollaire précédent pour compter le nombrek de sommets accessibles depuiss. Puis on énumère tous les sommetsuet pour chacun on teste de manière non déterministe s’il est accessible par un chemin de taillen. Pendant ce processus on a également compté le nombre de sommets accessibles en incrémentant un compteur c. À la fin du calcul, si c= k alors on a bien visité tous les sommets accessibles donc on accepte ssit n’a jamais été atteint depuiss.

Démonstration Pour résoudrecoACCESSIBILITÉ, voici l’algorithme non déterministe que l’on utilise sur l’entrée(G,s,t):

c0(compteur pour le nombre de sommets atteints) ; – b0(booléen pour savoir sit a été atteint) ;

– compter le nombre k de sommets accessibles depuis s grâce à l’algorithme du corollaire4-AX (rejeter si le calcul n’est pas ac-ceptant) ;

pour toutsommetufaire

tester s’il existe un chemin de s à u de taille n en se dé-plaçant dansGde manière non déterministe comme dans la preuve du lemme4-AW,

4.5. Le rôle du non-déterminisme 125

si le chemin a atteintu

· cc+1

· si u=t alorsb1,

sic=ket b=0alors accepter; – sinon rejeter.

Un calcul ne peut être acceptant que sic=k, c’est-à-dire que tous les sommets acces-sibles depuiss ont été atteints. Il y a toujours au moins un tel calcul. Sit ne fait pas partie des sommets atteints, alorsb =0et on accepte, ce qui correspond bien au cas où t n’est pas accessible depuis s. Sit a été atteint, alors il est accessible depuis s et b=1pour tous les calculs tels quec=k, donc tous les calculs rejettent. Au final, cet algorithme décide biencoACCESSIBILITÉ.

L’espace qu’il utilise est logarithmique puisqu’il suffit d’énumérer tous les sommets, de maintenir un compteur et d’exécuter des tests recquérant un espace logarithmique.

DonccoACCESSIBILITÉNL. ⊓⊔

Nous obtenons en corollaire le théorème suivant dû à Szelepcsényi [Sze87] et indépen-damment à Immerman [Imm88].

4-AZ Théorème (Szelepcsényi 1987, Immerman 1988) Pour toute fonctions(n)lognconstructible en espace,

coNSPACE(s(n)) =NSPACE(s(n)).

En particulier,NL=coNL.

Démonstration Il s’agit simplement de faire du padding (cf. proposition 2-AU). Soit AcoNSPACE(s(n))etAsa version « paddée » :

A={(x, 12s(|x|))|xA}.

Sin=|x|, la taille de l’entrée deAest maintenantm=n+2s(n). Puisques(n)logn, on a2s(n)m21+s(n).

Pour déciderA, on calcule s(n)en unaire, on en déduit l’écriture binaire de2s(n), on vérifie que l’entrée est de la forme(x, 12s(n))(en parcourant les1et en décrémentant le compteur contenant2s(n)), puis on lance l’algorithmecoNSPACEpourAsur l’entrée x. Sur une entrée de taille m, cette procédurecoNSPACEutilise un espaceO(s(n)), c’est-à-direO(logm).

Ainsi, A coNL. Par complétude de coACCESSIBILITÉ, A Lm coACCESSIBILITÉ. Donc par le lemme4-AY,ANL, c’est-à-dire queA est reconnu par une machine non déterministeNfonctionnant en espaceO(logm). On en déduit l’algorithme non

126 Chapitre 4. Considérations de base sur l’espace déterministe suivant pourAsur l’entrée x. Simuler le comportement de N(x, 12s(n)) sans écrire12s(n) mais en maintenant sur un ruban de travail un compteur binairec égal à la position de la tête du ruban de lecture deN. Sic[1,n]alors le symbole lu sur le ruban d’entrée estxc, sic[n+1,n+2s(n)]alors le symbole lu est1, sinon c’est le symbole blancB. Cela nous permet donc de simulerN sans avoir à écrire 12s(n) qui prendrait trop d’espace. L’espace total utilisé par cet algorithme pour Aest la taille du compteur c plus l’espace utilisé parN, c’est-à-dire O(logm) =O(s(n)).

DoncANSPACE(s(n)). ⊓⊔

Dans le document COMPLEXITÉ ALGORITHMIQUE (Page 140-146)