Complexité des Problèmes Combinatoires Module IAD/RP/RO/Complexité Philippe Chrétienne
Plan du cours Problèmes de décision. Algorithme déterministe. La classe P. Algorithme non déterministe. La classe NP. Propriétés de la classe NP. Réduction polynomiale dans NP. Problème NP-complet. Quelques réductions.
Problèmes de décision Un problème de décision est défini par: un nom, des paramètres génériques, une question. PARTITION A={a 1,….,a n } s :A Existe t ’il B A tel que s(B)=s(A/B)? CLIQUE Graphe G=(S,A) 1<k<n=Card(S) Existe t ’il une clique d ’ordre k dans G? SAT N var. logiques x j P clauses C p sur les x j Existe t ’il une fonction de vérité telle que toutes les clauses soient vraies?
Notations Problème Sous-ensemble des énoncés à réponse « oui »: Y , Si l ’on code les énoncés à partir d ’un alphabet ∑ et d ’une fonction codage « raisonnable »: Chaque énoncé est un mot de ∑*, Langage des énoncés L( ), Langage des énoncés à réponse « oui »:LY( ) Ensemble des énoncés D ,
UC une unité centrale Algorithme résolvant Machine de Turing déterministe: 3) fonction de transition: : Q {q Y,q N } Q {-1,+1} 1) alphabet contenant le « blanc » noté et un sous-alphabet { } 2) ensemble fini d ’états « de contrôle » pour l ’UC Q={q 0,q Y,q N,….,q C } où q 0 est l ’état initial et q Y,q N sont 2 états « terminaux ». Programme P de DTM: L/E une tête de lecture-écriture Bande une bande doublement infinie
Exécution P(x) du programme P pour la donnée x. Etat initial global: Etape de calcul: (c est le caractère pointé par LE, b est la position de LE, et q est l ’état de l ’UC) 1. Si q {q Y,q N } alors stop; 2. Soit (q ’,c ’,d ’)= (q,c)); 3. B(b):=c ’;q:=q ’; b:=b+d ’. 3 issues possibles pour P(x): arrêt pour état q Y, arrêt pour état q N, pas d ’arrêt. q0q0 01 x -22
Langage reconnu par P: L(P)= {x ∑* P(x) s ’arrête dans l ’état q Y.}. P est un algorithme qui reconnaît un langage L ∑* si 1) pour tout x ∑*, P(x) s ’arrête; (terminaison) 2) L(P)=L. (validité) P est un algorithme qui résout s ’il reconnaît LY( ). Complexité d ’un algorithme A: Soit A (x) le nombre de steps exécutés par A pour la donnée x. La fonction complexité T A est définie par: T A (n)=Max{ A (x) l(x)=n} Si T A (n)=O(p(n)) où p est un polynôme, alors A est un algorithme polynomial.
La classe NP Une « garantie » possible est d ’exiger que A écrive le sous-ensemble T de sommets formant la clique. Un problème de NP: CLIQUE Deux amis A et B discutent d ’un énoncé I=(G,k) de CLIQUE. A affirme à B que I est à réponse « oui ». En effet, B peut alors vérifier que: 1) Card(T)=k 2) chaque paire de sommets de T est une arête de G. Quelle « preuve » B peut-il demander à A?
Considérons l ’algorithme V qui, étant donné un certificat T de l ’énoncé I, répond « oui » pour la donnée (I,T) si: 1) Card(T)=k; 2) chaque paire de sommets de T est une arête de G; et « non » dans le cas contraire. Pour l ’énoncé I=(G=(V,E),k) de CLIQUE, les sous-ensembles de sommets constituent les « preuves » (encore appelées « certificats ») de l ’énoncé I. On notera (I) l ’ensemble des certificats. Le couple ( ,V) est un algorithme non déterministe qui « résout » CLIQUE car: I Y CLIQUE, c (I) / V(I,c) répond oui. I Y CLIQUE, c (I), V(I,c) répond non.
Machine de Turing non déterministe une machine de Turing un module devin L/E UCDevin 0x Programme de NDTM: V=(Q,q 0,q Y,q N, , , ) Calcul V(x,y) du programme V: Le calcul V(x,y) est réussi s ’il s ’arrête dans l ’état q Y. Le mot x est reconnu par V s ’il existe y tel que V(x,y) est réussi. y 1) le module devin écrit y (i.e:B[-1..-l(y)]:=y) ; 2) V est exécuté à partir de l ’état initial: (q 0 ;B[1..l(x)]=x,B[-1..-l(y)]=y;b=1)
Si T V (n)=O(p(n)) où p(n) est un polynôme, alors V est un algorithme non déterministe polynomial. Durée d ’un calcul réussi V(x,y): (x,y)= l(y)+ V (x,y) Durée de reconnaissance de x: r(x)=Min{ (x,y) y tel que V(x,y) est réussi} Fonction complexité de l ’algorithme non déterministe V: T V (n)=Max{r(x) x L(V) et l(x)=n} Le mot x est reconnu par V s ’il existe y tel que V(x,y) est réussi. L(V) est le langage des mots reconnus par V
Les problèmes de NP Soit un problème de décision et soit V un algorithme non déterministe polynomial. La classe NP est l ’ensemble des problèmes de décision résolus par un algorithme non déterministe polynomial. Si L(V)=LY( ), alors V est un algorithme non déterministe polynomial qui résout .
Propriétés de NP P NP À ( ,V) est associé un polynôme p tel que: pour tout énoncé I de Y de longueur n, il existe un certificat c de (I) tel que: On peut utiliser l ’algorithme polynomial A qui résout comme algorithme de vérification V avec un unique certificat vide. Si NP, est résolu par un algorithme de complexité O(2 q(n) ) où q est un polynôme. l(c)+ V (I,c)<p(n) Soit ( ,V) un algorithme non déterministe polynomial pour .
Il en résulte que: 1) seuls les certificats de longueur ≤ p(n) dans (I) suffisent pour prouver que I Y ; 2) pour I et c (I) fixés, il suffit d ’exécuter V jusqu ’au 1 er des 2 événements suivants: E1: l ’état q Y est atteint, E2: p(n) steps ont été exécutés. Pour un énoncé I, l ’algorithme A examine les certificats c (I): Pour chaque certificat c (I) de longueur ≤p(n) Exécuter pas à pas V(I,c): Si E1 alors réponse de A:= « oui »;stop. Si E2 alors passer au certificat suivant. Si Card =a, alors A examine au plus O(a p(n) ) certificats et exécute pour chacun d ’eux au plus p(n) steps. D ’où la complexité de A: O(p(n) a p(n) )=O(2 q(n) ).
Réductions dans NP Intuitivement, 2 est plus difficile que 1 si un algorithme qui résout 2 peut aussi être utilisé pour résoudre 1 « à un coût polynomial près » Application f calculable polynomialement telle que: f: D( 1 ) D( 2 ) I Y ( 1 ) f(I) Y ( 2 ) Notation: 1 2 Soient 1 et 2 deux problèmes de NP. Réduction polynomiale de 1 sur 2 :
Propriétés de dans NP Deux problèmes 1 et 2 sont équivalents si 1 2 et 2 1 La relation induit un ordre partiel sur les classes d ’équivalence. Question: Existe t ’il une classe de problèmes de NP plus difficiles que tous les autres? Définition:Un problème * est dit NP-complet si pour tout NP, * S ’il existe au moins un problème NP-complet, sa classe répond à la question. La relation est réflexive et transitive.
Quelques réductions SAT 3-SAT 3-SAT est le sous-problème de SAT constitué des énoncés pour lesquels chaque clause contient exactement 3 littéraux. Réduction I:énoncé de SAT f(I): énoncé de 3-SATvariable de I variable de f(I) clause à 1 littéral x 2 variables suppl. u et v 4 clauses: {x,u,v}, {x, u,v} {x,u, v},{x u, v)}
I:énoncé de SAT (N var.;P clauses) f(I): énoncé de 3-SAT (N’ var.; P’clauses) clause à 2 littéraux:{x,y} 1 variable suppl. w 2 clauses: {x,y,w}, {x, y, w} clause à 3 littéraux:{x,y,z}1 clause: {x,y,z} clause à k(>3) littéraux {z 1,…………,z k } k-3 variables suppl. u 1,…,u k-3 {u 1,z 3, u 2 } {u 2,z 4, u 3 } ………. {u k-4,z k-2, u k-3 } {z 1,z 2, u 1 } {u k-3,z k-1,z k } k-2 clauses:
Supposons que I est satisfiable: Toutes les clauses de type 1), 2) et 3) de f(I) sont vraies. Considérons une clause c de type 4): {z 1,…………,z k } Si z 1 ou z 2 est vrai, on pose: u j =« vrai » pour j=1,..,k-3 Si z k-1 ou z k est vrai, on pose: u j =« faux » pour j=1,..,k-3 Si z 1,z 2, z k-1,z k sont « faux », soit z i le premier littéral « vrai ». La clause de f(I) contenant z i est {u i-2,z i, u i-1 } Posons: u j =« faux » pour j=1..i-2 u j =« vrai » pour j=i-1..k-3 Alors toutes les clauses de f(I) associées à la clause c de I sont vraies. Il en résulte que f(I) est satisfiable.
Réciproquement, supposons que f(I) soit satisfiable. Soit c une clause de type 1) et 2) de I. Il existe une clause c’de f(I) pour laquelle tous les littéraux de c’ non présents dans c sont faux. Donc c est vraie. Les clauses de type 3 sont trivialement vraies. Considérons une clause c de type 4 ): {z 1,…………,z k } et supposons qu ’elle soit « fausse » Comme toutes les clauses associées à c sont vraies, on a: {u 1,z 3, u 2 } vrai donc u 2 faux …………………………….. {u k-4,z k-2, u k-3 } vrai donc u k-3 faux {z 1,z 2, u 1 } vraie donc u 1 faux {u k-3,z k-1,z k } faux contradiction Il en résulte que I est satisfiable. Comme N’ et P’ sont majorés par des polynômes en N P, la réduction f est polynomiale.
3-SAT VERTEX COVER Donnée: un graphe non orienté G=(V,E) et un nombre k(1<k<n) Le problème VC: Question: existe t ’il un support de G d ’au plus k sommets? I:énoncé de 3-SAT (N var.;P clauses) f(I): énoncé de VC variable b b b b arête clause {a,b,c} triangle a b c arêtes médianes K=2P+N
Supposons que I soit satisfiable. Chaque clause c de I contient au moins un littéral l(c) « vrai ». Considérons le sous-ensemble W de sommets de f(I) formé 1) des sommets-arêtes étiquetés par un littéral « vrai » 2) des 2 sommets du triangle T(c) non étiquetés par l(c) On a Card(W)=2P+N. W est aussi un support car: Les arêtes des triangles sont couvertes: a b c Les arêtes associées aux variables sont couvertes:b b b Les arêtes médianes sont couvertes:
Réciproquement, supposons qu ’il existe un support W de f(I) tel que Card(W)≤2P+N. Comme tout support de f(I) a au moins 2P+N sommets, on a Card(W)=2P+N. Comme il faut au moins 2 sommets pour « couvrir » chaque triangle et au moins 1 sommet pour couvrir chaque arête associée à une variable, W contient exactement 2 sommets par triangle et 1 sommet par arête associée à une variable. Considérons la fonction de vérité définie par: b b b b=« vrai »
Soit c une clause, soit z(c,W) le sommet de T(c) non couvert par W, soit l(c,W) l’étiquette de z(c,W), soit z’(c,W) l’autre extrémité de l ’arête médiane issue de z(c,W). Le sommet z’(c,W) appartient nécessairement au support W car z(c,W) n ’appartient pas à W. On a donc l(c,W) « vrai » et par conséquent c est vraie. a b c b b b z(c,W) z’(c,W) b est le littéral l(c,W). I est donc satisfiable.
Une fonction longueur pour VC est l VC (G,k)=Card V. Comme le nombre de sommets de f(I) est 3P+2N, la réduction f est calculable polynomialement en l 3-SAT (I)=N P. Il en résulte que 3-SAT VC et que VC est NP-complet.
Sous-problèmes et complexité Sous-problème de . Un sous-problème ’ de est défini par un sous-ensemble des énoncés de et la même question que celle de . Exemples: 2-SAT et 3-SAT sont 2 sous-problèmes de SAT Un sous-problème est donc caractérisé par l ’ajout de contraintes supplémentaires sur les paramètres génériques. Exemple: Si un graphe G est un paramètre générique de , on obtient un sous-problème si l ’on impose que G est planaire ou encore que G est biparti.
Complexité des sous-problèmes Remarque: Un code raisonnable pour les énoncés de ne l ’est pas forcément pour les sous-problèmes de . Exemple: Supposons qu ’ un graphe G soit un paramètre de . G est codé avec O(n 2 ) caractères. Considérons le sous-problème de obtenu en imposant à G d ’être un graphe complet. G est alors codé avec O(log n) caractères. Propriété 1: Soit P. Si ’ est un sous-problème de dont les énoncés sont reconnaissables en temps polynomial, alors ’ P.
Propriété 2: Soit ’ un sous-problème NP-complet de . S ’il existe un algorithme polynomial qui transforme un codage raisonnable de en un codage raisonnable de ’, alors est NP-complet. Exemple: 3-SAT NP-complet SAT NP-complet Frontière entre sous-problèmes faciles et difficiles de . On fait « varier » un paramètre de , et l ’on s ’intéresse à la complexité des sous-problèmes associés. Exemple 1: Sous-problèmes de SAT obtenus en faisant varier le nombre de littéraux par clause. 2-SAT est polynomial, 3-SAT est NP-complet.
Exemple 2: Sous-problèmes de UET-SCHEDULING obtenus en faisant varier le nombre de machines. m=2: polynomial, m=3: ouvert, m paramètre: NP-complet Exemple 3: Sous-problèmes de UET-SCHEDULING obtenus en faisant varier le graphe de précédence. Arborescence: polynomial, graphe quelconque: NP-complet Problème UET-SCHEDULING Donnée: n tâches T i de durée unitaire, un graphe de précédence, m machines identiques, un nombre entier B. Question: Existe t ’il un ordonnancement de durée au plus B?
Problèmes NP-difficiles Problème de recherche : A chaque énoncé I correspond un ensemble (éventuellement vide) de solutions noté S(I). Un algorithme A résout le problème si pour tout énoncé I, - il fournit une solution de S(I) si S(I) est non vide - écrit « pas de solution » si S(I) est vide. Remarques: Les problèmes de décision sont des problèmes de recherche: - les énoncés de Y ont une solution « oui », - les autres n’ont pas de solution. Les problèmes d’optimisation sont des problèmes de recherche: S(I) est l’ensemble des solutions optimales de l’énoncé I.
Réduction de Turing La réduction de Turing notée T étend aux problèmes de recherche la réduction polynomiale dans NP. Définition: Soient 1 et 2 deux problèmes de recherche. 1 T 2 si l ’existence d ’un algorithme « oracle » résolvant 2 en un step implique que 1 est polynomial. Remarque: Si 1 et 2 sont 2 problèmes de NP on a: 1 2 1 T 2 (à partir de I 1, calcul de I 2 = f(I 1 ) et réponse pour I 2 en un step)
Exemple: Soit TSP le problème du voyageur de commerce (énoncé : formé (matrice D des distances entre n villes, nombre B); Soit TSP c le problème de décision complémentaire; Soit TSP_OPT le problème d ’optimisation associé (énoncé: D) Remarque: On ne sait pas si TSP c est dans NP. Propriété: TSP T TSP c et TSP T TSP_OPT Soit I un énoncé de TSP, et soit un algorithme virtuel 1-pas pour TSP c. Si la réponse (I) est « oui » (resp. « non »), alors I est à réponse « non » (resp; « oui »). Soit I=(D,B) un énoncé de TSP, et soit un algorithme virtuel 1-pas pour TSP_OPT. Soit s le tour retourné par (I). Si d(s)≤B (resp >B) alors I est à réponse « oui » (resp. « non »).
Problème NP-difficile: Un problème de recherche est NP-difficile s’il est plus difficile au sens de la réduction de Turing qu ’un problème NP-complet. est NP-difficile s’il existe ’ NP-complet tel que ’ T . Exemple: les problèmes TSP c et TSP_OPT sont NP-difficiles. D’une manière générale, le problème d’optimisation associé à un problème de décision NP-complet est NP-difficile. La réciproque est généralement vraie: Un problème de décision est plus difficile au sens de la réduction de Turing que le problème d ’optimisation associé.
Exemple: TSP_OPT T TSP On introduit un problème de décision intermédiaire TSP_INT: Donnée: (D,B,L) où L est une liste de sommets distincts de G. Question: Existe t ’il un tour s=(L.R) de coût au plus B? TSP_INT T TSP. Preuve: TSP_INT est dans NP et TSP est NP-complet. TSP_OPT T TSP_INT Soit l ’algorithme virtuel 1-pas qui résout TSP_INT. On considère alors l ’algorithme suivant de complexité polynomiale en l(I) qui permet de calculer le coût minimal d’un tour :
Soit C le coût du tour (1,2,3,...,n,1); l:=0 ; u:=C; Tantque u-l>0 faire k:= 1/2(u+l) ; Si (D,k, )=« oui » alors u:=k sinon l:=k+1; FinTantque; C*:=k. On utilise ensuite l’algorithme suivant, de complexité polynomiale en l(I), qui permet de construire un tour de coût minimal.
L:=(1); R:=(2,..,n); Pour k de 2 à n-1 faire r:=PREMIER(R); O(1) Tantque (D,C*,(L,r) ) =« non » faire O(1) r:= SUIVANT(r,R); O(1) FinTantque; L:=(L,r); O(1) R:=SUPPRIMER(r,R); O(n) FinPour. La liste L retournée est un tour de coût minimal. En effet, l’invariant suivant est vrai: A la fin de l’itération k de la boucle Pour, il existe un tour de coût C* préfixé par L. De plus l’algorithme est de complexité O(n 2 ).