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. CLIQUE Graphe G=(S,A) 1<k<n=Card(S) Existe t ’il une clique d ’ordre k dans G? SAT N var. logiques xj P clauses Cp sur les xj Existe t ’il une fonction de vérité telle que toutes les clauses soient vraies? PARTITION A={a1,….,an} s :A Existe t ’il BA tel que s(B)=s(A/B)? Le caractère pour l ’ensemble des entiers naturels n ’est pas esthétique. Définir oralement ce qu ’est une clause.
Notations Problème de décision Ensemble des énoncés : D, 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é de est un mot sur , - le langage des énoncés est noté L(), - le langage des énoncés à réponse « oui » est noté LY(). Expliquer oralement ce qu’est un codage raisonnable: Codage (injectif)+ nombres codés en base >1.
Algorithme A résolvant . Donnée : x = mot sur . Résultat : "oui" si x LY( ), "non" sinon. Complexité temporelle pire-cas de A (par rapport à n=nombre de lettres de x) : TA(n) = nombre maximum d'opérations élémentaires exécutées par A sur un énoncé de longueur n. A est polynomial si TA(n)=O(p(n)) où p est un pôlynome.
Exemple : énoncé : (a,b) : 2 entiers positifs a et b (a≥b) question : a et b sont-ils premiers entre eux ? alphabet : = {[,0,;,1,]}; mot associé à l'énoncé (a,b) : [bin(a);bin(b)] longueur de l'énoncé (a,b) : log2(a) Algorithme : fonction PR(a,b) ; (à valeurs dans {"oui","non"}) x:=a ; y:=b ; r:=x mod y ; tantque r > 0 faire z:=y; y:= x mod y ; x:=z; fintantque; si (x=1) alors Retourner("oui") sinon Retourner("non"). Complexité de PR : O(log2(a)) (théorème de Lamé)
La classe P. C'est l'ensemble des problèmes de décision polynomiaux. Remarque : En dépit d'une recherche intense, aucun algorithme de complexité polynomiale n'a été déterminé pour de nombreux problèmes : voyageur de commerce ; clique d'ordre k dans un graphe ; PARTITION ; SAT ; ..... L'hypothèse de non existence d'un tel algorithme pour ces problèmes s'est alors de plus en plus renforcée. Une nouvelle classe (incluant P) a été définie pour capturer ces problèmes de décision : la classe NP.
La classe NP Certificats d'un énoncé et algorithme de vérification. Exemple: CLIQUE Soit I=(G,k) un énoncé de CLIQUE. Question : A partir de quelle information sur I peut-on vérifier efficacement que I est à réponse "oui"? Réponse : Le sous-ensemble T des sommets de la clique. En effet, on peut alors vérifier en O(n2) à partir de (I,T) si : 1) Card(T)=k ; 2) chaque paire de sommets de T est une arête de G ; et répondre "oui" si 1) et 2) sont vraies pour (I,T) et "non" sinon.
Pour l’énoncé I de CLIQUE, les sous-ensembles de sommets constituent les « certificats » de l’énoncé I. On notera (I) l’ensemble des certificats de I. Soit V l’algorithme qui, pour 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 répond « non » dans le cas contraire. Le couple (,V) définit un algorithme non déterministe qui « résout » CLIQUE car : I YCLIQUE, c (I) / V(I,c) répond oui. I YCLIQUE ,c (I), V(I,c) répond non. Ne parler ici que d ’algorithme non déterministe. Introduire le caractère polynomial sur la page suivante.
Le couple (,V) est un algorithme non déterministe polynomial qui "résout" CLIQUE car : la longueur d'un certificat est en O(p(n)) (n=longueur de I) où p est un polynôme ; la complexité temporelle pire-cas de V est en O(q(n)) où q est un polynôme. En effet, pour le problème CLIQUE : un certificat T est codé par son vecteur caractéristique sur l'ensemble des sommets de G ; 2) La complexité de l'algorithme de vérification V est O(n2).
Algorithme non déterministe polynomial résolvant . Soit un problème de décision. Le couple (,V) est un algorithme non déterministe qui « résout » si : I Y, c (I) / V(I,c) répond oui. I Y ,c (I), V(I,c) répond non. Le couple (,V) est un algorithme non déterministe polynomial qui « résout » si de plus : la longueur de tout certificat c est en O(p(n)) ; la complexité de V est en O(q(n)) ; où : n est la longueur de I et p,q sont 2 polynômes. La classe NP est l’ensemble des problèmes de décision résolus par un algorithme non déterministe polynomial.
Propriétés de NP PNP On peut utiliser l’algorithme polynomial A qui résout comme algorithme de vérification V avec un unique certificat (qui ne sert à rien!). Si NP, est résolu par un algorithme de complexité O(2r(n)) où r est un polynôme. Soit (,V) un algorithme non déterministe polynomial qui "résout" . A (,V) correspond les 2 polynômes p et q tels que, si n est la longueur de l'énoncé I : la longueur d'un certificat est majorée par p(n) ; le nombre d'opérations élémentaires exécutées par V est majorée par q(n). On note C(I) le nombre de certificats de l'énoncé I.
Algorithme (déterministe) résolvant : fonction SIMUL(I, ,V) ; (à valeurs dans {"oui","non"}) encore := "vrai" ; nex := 0; TantQue encore et (nex<C(I)) faire Choisir un certificat c (I) non examiné ; Exécuter V(I,c) ; Si V(I,c) se termine avec réponse « oui » alors encore:="faux" sinon nex := nex+1; FinTantQue; Si encore="faux" alors Retourner("oui") sinon Retourner("non"). Si l'alphabet servant à coder les certificats contient a lettres, alors A examine au plus O(a p(n)) certificats et exécute pour chacun d’eux au plus q(n) steps. D’où la complexité de A: O(q(n) a p(n)) = O(2 r(n) ) où r est un polynôme.
Réductions dans NP Soient 1 et 2 deux problèmes de NP. 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". Réduction polynomiale de 1 sur 2 : Application f calculable polynomialement telle que: f: D(1) D(2) I Y (1) f(I) Y (2) Notation: 1 2 (se lit : 1 plus facile que 2 ) Remarque importante : Supposons 1 2. Si 2 est polynomial alors 1 l'est aussi.
Propriétés de dans NP La relation est réflexive et transitive. 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, *
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-SAT variable 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 {z1,…………,zk} k-3 variables suppl. u1,…,uk-3 {u1,z3, u2} {u2,z4, u3} ………. {uk-4,zk-2, uk-3} {z1,z2, u1} {uk-3,zk-1,zk} 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): {z1,…………,zk} Si z1 ou z2 est vrai, on pose: uj=« vrai » pour j=1,..,k-3 Si zk-1 ou zk est vrai, on pose: uj=« faux » pour j=1,..,k-3 Si z1,z2 , zk-1,zk sont « faux », soit zi le premier littéral « vrai ». La clause de f(I) contenant zi est {ui-2,zi, ui-1} Posons: uj=« faux » pour j=1..i-2 uj=« 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 ): {z1,…………,zk} et supposons qu ’elle soit « fausse » Comme toutes les clauses associées à c sont vraies, on a: {z1,z2, u1} vraie donc u1 faux {u1,z3, u2} vrai donc u2 faux …………………………….. {uk-4,zk-2, uk-3} vrai donc uk-3 faux {uk-3,zk-1,zk} faux contradiction Il en résulte que I est satisfiable. Comme N’ et P’ sont majorés par des polynômes en NP, la réduction f est polynomiale.
3-SAT VERTEX COVER Le problème VC: Donnée: un graphe non orienté G=(V,E) et un nombre k(1<k<n) 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 arête arêtes médianes clause {a,b,c} triangle a b c 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 associées aux variables sont couvertes: b b Les arêtes médianes sont couvertes: Les arêtes des triangles sont couvertes: a b c
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=« 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) . a b c b z(c,W) z’(c,W) b est le littéral l(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. I est donc satisfiable.
Une fonction longueur pour VC est lVC(G,k)=Card V. Comme le nombre de sommets de f(I) est 3P+2N, la réduction f est calculable polynomialement en l3-SAT(I)=NP. Il en résulte que 3-SAT VC et que VC est NP-complet.