Complexit des Problmes Combinatoires Module IADRPROComplexit Philippe Chrtienne
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, …. , an} 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 xj P clauses Cp sur les xj Existe t ’il une fonction de vérité telle que toutes les clauses soient vraies?
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( ).
Algorithme A résolvant . Donnée : x = mot sur . Résultat : "oui" si x LY( ), "non" sinon. Fonction complexité temporelle pire-cas de A : TA(n) = nombre maximum d'opérations élémentaires exécutées par A sur un énoncé de longueur n. A est un algorithme 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) : log 2(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(log 2(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 NP est l’ensemble des problèmes de décision "résolus" par un algorithme Non déterministe Polynomial. Algorithme non déterministe V résolvant . Donnée : (x, y) où x est un mot de L( ) et y est un mot de . Si V se termine pour la donnée (x, y) , alors le résultat V(x, y) appartient à {oui, non}. V doit satisfaire la propriété suivante : a) Si x est un mot de LY( ), il existe y tel que V(x, y)="oui"; b) Si x n'est pas un mot de LY( ), pour tout mot y de : soit V ne se termine pas, soit V(x, y)="non".
Algorithme non déterministe polynomial V résolvant . Donnée : (x, y) où x est un mot de L( ) et y est un mot de . Si V se termine pour la donnée (x, y) , alors le résultat V(x, y) appartient à {oui, non}. V doit satisfaire la propriété suivante : Il existe un polynôme q(n) tel que : • Si x est un mot de LY( ) de longueur n, il existe y de longueur au plus q(n) tel que V(x, y)="oui" après au plus q(n) steps de calcul; b) Si x n'est pas un mot de LY( ), pour tout mot y de : soit V ne se termine pas, soit V(x, y)="non".
Exemple: CLIQUE Soit I=(G, k) un énoncé de CLIQUE. Pour définir un algorithme non déterministe polynomial résolvant CLIQUE, on se pose la question : Quelle information sur I est nécessaire pour 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(n 2) à 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 sont appelés 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.
V est un algorithme non déterministe polynomial qui "résout" CLIQUE car : 1) la longueur d'un certificat est en O(p(n)) (n=longueur de I) où p est un polynôme ; 2) 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 : 1) un certificat T est codé par son vecteur caractéristique sur 2) l'ensemble des sommets de G ; 3) 2) La complexité de l'algorithme de vérification V est O(n 2).
Propriétés de NP • P NP On peut utiliser l’algorithme polynomial A qui résout comme algorithme de vérification V. Dans ce cas, les certificats sont inutiles. • Si NP, est résolu par un algorithme de complexité O(2 r(n)) où r est un polynôme. Soit V un algorithme non déterministe polynomial pour . Soit q le polynôme associé à V. Soit x un mot de L( ) de longueur n. Soit C(n) l'ensemble des mots sur de longueur au plus q(n).
Algorithme A résolvant . 1. Si tous les mots de C(n) ont été examinés 2. alors Répondre "x Y "; Stop ; 2. Choisir un nouveau mot y de C(n); 3. t: =1; 4. Exécuter le step t de V pour (x, y) : Si V est terminé alors si V(x, y)="oui" alors Répondre "x Y "; Stop; 2. sinon Répondre "x Y "; Stop ; • t: =t+1; • Si t<q(n) alors aller en 4. sinon aller en 1. Si l'alphabet servant à coder les certificats contient a lettres, alors A examine au plus O(aq(n)) mots y (certificats) et exécute pour chacun d’eux au plus q(n) steps. D’où la complexité de A: O(q(n) aq(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 (notée 1 2 ): Application f calculable polynomialement telle que: f: D( 1) D( 2) I Y ( 1) f(I) Y ( 2) La notation: 1 2 se lit : ( 1 plus facile que 2 ou encore 1 se réduit polynomialement à 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, *
Théorème de COOK Résultat fondamental (Cook 1971) SAT est NP-complet. Schéma de la preuve: Problème de NP, c'est à dire résolu par un algorithme non déterministe polynomial V. A un énoncé x de , on fait correspondre un énoncé f(x) de SAT qui possède la propriété suivante : f(x) est satisfiable si et seulement si il existe un mot y de (de longueur polynomiale en la longueur de x ) tel que V répond oui (en temps polynomial en la longueur de x) pour la donnée (x, y)
Quelques réductions 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 variable de I clause à 1 littéral x f(I): énoncé de 3 -SAT variable de f(I) 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 variables; P clauses) clause à 2 littéraux: {x, y} clause à 3 littéraux: {x, y, z} clause à k(>3) littéraux {z 1, …………, zk} f(I): énoncé de 3 -SAT (N’ var. ; P’clauses) 1 variable suppl. w 2 clauses: {x, y, w}, {x, y, w} 1 clause: {x, y, z} k-3 variables suppl. u 1, …, uk-3 k-2 clauses: {z 1, z 2, u 1} {u 1, z 3, u 2} {u 2, z 4, u 3} ………. {uk-4, zk-2, uk-3} {uk-3, zk-1, zk}
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, …………, zk} Si z 1 ou z 2 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 z 1, z 2 , 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 ): {z 1, …………, zk} et supposons qu ’elle soit « fausse » Comme toutes les clauses associées à c sont vraies, on a: {z 1, z 2, u 1} {u 1, z 3, u 2} vrai donc u 2 faux {uk-3, zk-1, zk} faux vraie donc ………………. . contradiction u 1 faux {uk-4, zk-2, uk-3} vrai donc uk-3 faux 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 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) variable b f(I): énoncé de VC arête b b arêtes médianes a clause {a, b, c} triangle K=2 P+N b c
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)=2 P+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: a Les arêtes des triangles sont couvertes: b c
Réciproquement, supposons qu ’il existe un support W de f(I) tel que Card(W)≤ 2 P+N. Comme tout support de f(I) a au moins 2 P+N sommets, on a Card(W)=2 P+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: arête associée à la variable b b b valeur de vérité de b : b= « vrai » si le sommet est dans W
Soit c une clause; soit z le sommet de T(c) non couvert par W; soit b l’étiquette de z; soit z’ l’autre extrémité de l’arête médiane issue de z. b z’ b a b z W b est le littéral qui étiquette le sommet z. c Le sommet z’ appartient nécessairement au support W car z n’appartient pas à W. On a donc b= « vrai » et par conséquent la clause c est vraie. 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 3 P+2 N, 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.
- Slides: 26