1 / 93

IFT-66975

IFT-66975. Chapitre 3 La NP-complétude et le théorème de Cook-Levin. Définitions. Soit A un problème de décision et C une classe de problèmes de décision. A est C -ardu (ou C -difficile) sous transformations polynomiales si pour tout C  C , on a C  p A.

calida
Download Presentation

IFT-66975

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IFT-66975 Chapitre 3 La NP-complétude et le théorème de Cook-Levin

  2. Définitions Soit A un problème de décision et C une classe de problèmes de décision. • A est C-ardu (ou C-difficile) sous transformations polynomiales si pour tout C C, on a C p A. • A est C-facile sous transformations polynomiales s’il existe C C A p C. • A est C-équivalent sous transformations polynomiales s’il est C-ardu et C-facile. • A est C-complet sous transformations polynomiales si A est C-ardu et A C. NOTE: On peut également définir ces notions en utilisant des réductions différentes (e.g. les réductions de Turing ou réductions logspace.)

  3. Pourquoi ces notions sont-elles utiles? • Si A est C-ardu et qu’un des problèmes de C n’admet pas d’algorithme efficace, alors A n’en admet pas non plus. • Si A est C-facile et que tous les problèmes de C ont des algorithmes efficaces, alors A en admet un aussi. • Si A est C-équivalent alors sa complexité représente celle de tous les problèmes de C. • Si A est C-complet, alors sa complexité représente la complexité maximale des problèmes dans C. Dernier détail: existe-t-il des problèmes ardus ou complets pour P, NP, RP, BPP, etc. ?

  4. Théorème de Cook-Levin • SAT est NP-complet. On a déjà vu que SAT  NP. Mais le théorème montre que SAT est le plus dur de sa classe.

  5. Démonstration (Cook-Levin) • Soit M une machine de Turing non-déterministe dont le temps de calcul est nk et L = L(M) le langage reconnu par cette machine. Il faut montrer que L p SAT. Donc, trouver une fonction f calculable en temps polynomial et telle que x  L  f(x)  SAT. En d’autres mots, f associe à x une formule Booléenne satisfiable ssi M accepte x!

  6. Nous allons suivre le calcul de M sur x en considérant les configurations successives de M. • Une configuration représente l’état de la machine M à un moment précis. Déterminé par • L’état du ruban. • L’état du contrôle fini. • La position de la tête de lecture. • Peut être représenté par un ruban d’une longueur correspondant au temps de M. Les cases contiennent le contenu du ruban de M. De plus, une case contient l’état du contrôle fini de M, et est placé devant la case correspondans à la position de la tête de lecture.

  7. Tableau du calcul de M nk config initiale q0 x2 # x1 ... xn # # 2ème config # # # nk config finale # #

  8. Un tableau est dit acceptant pour x si la configuration initiale est celle de x et si un des états q du tableau est un état final acceptant. Note: Comme le calcul est non-déterministe, il existe plus d’un tableau possible pour chaque entrée x. M accepte x si et seulement s’il existe un tableau acceptant pour x. Nous voulons construire une formule  qui est satisfiable ssi il existe un tableau acceptant pour x. Nous dénoterons b1, ..., bnk les bits aléatoires utilisés par M. Pour chaque choix des bi, il existe un tableau unique représentant l’exécution de M avec ces bits.

  9. Construction de  • Le tableau est formé de (nk)2 cellules cell[i,j] qui contiennent chacune soit un symbole de , soit un état de Q. • Pour chaque s  Q, on crée une variable ci,j,s avec l’intention suivante: ci,j,s = 1 ssi cell[i,j] contient s. • On crée les variables b1, ... ,bnk représentant les bits aléatoires. • Finalement, on construit  = cellinitétapeaccepte comme la conjonction de 4 formules construites séparément.

  10. Construction de cell • On veut que les variables ci,j,s représentent le contenu des différentes cellules du tableau. Pour rendre cela possible, cell s’assure que • Pour chaque i,j, au moins une variable c_{i,j,s} est vraie. • Pour chaque i,j au plus une variable c_{i,j,s} est vraie.

  11. Construction de init. On s’intéresse au tableaux dont la configuration intiale est celle de x. C’est ce que garantit init. init = c1,1,# c1,2,q0 c1,3,x1 c1,4,x2 ...  c1,n+2, xn c1,n+3,b ...  c1,nk-1,b c1,nk,# Important: Contrairement à cell, cette formule est différente pour deux entrées x différentes.

  12. Construction de accepte accepte assure qu’un état acceptant existe dans le tableau.

  13. Construction de étape. étape s’assure que la (i+1)ème configuration est bien celle atteinte à partir de la ième lorsque le bit aléatoire est bi . On considère pour ça chaque bloc 2  3 du tableau. Exemples Bloc légal

  14. Bloc légal si la transition de M en lisant c dans l’état q1 avec le bit aléatoire bi écrit un a et passe à l’état q2 et déplace la tête de lecture à droite. Bloc légal si la transition de M en lisant c dans l’état q1 avec le bit aléatoire bi écrit un a et passe à l’état q2 et déplace la tête de lecture à gauche.

  15. Bloc légal si la transition de M a réécrit le a en b. Bloc légal si la transition de M déplacé la tête de lecture à gauche.

  16. Exemples de bloc illégaux Impossible, un seul caractère peut changer par étape. Impossible, seul le caractère à droite de q1 peut avoir changé.

  17. Impossible car b ne peut être changé si la tête de lecture n’est pas sur cette position. Impossible car la tête de lecture se déplace d’une case au plus à chaque étape.

  18. Le nombre total de blocs 2  3 est (|| + |Q|)6, un nombre fini indépendant de n. Soit a1, ..., a6 les 6 symboles composant une fenêtre. Le bloc commençant en (i,j) contient ces 6 symboles ssi ci,j,a1  ci,j+1,a2 ci,j+2,a3 ci+1,j,a4 ci+1,j+1,a5 ci+1,j+2,a6 Donc le bloc est légal et bi = 1 ssi ci,j,a1 ci,j+1,a2 ci,j+2,a3 ci+1,j,a4  ci+1,j+1,a5 ci+1,j+2,a6  bi Il n’y a que deux types de blocs légaux. Ceux qui sont légaux lorsque bi =1 et ceux légaux avec bi = 0. ci,j,a1 ci,j+1,a2 ci,j+2,a3 ci+1,j,a4  ci+1,j+1,a5 ci+1,j+2,a6 ̅bi

  19. [Le bloc (i,j) est légal] À montrer: Si la première rangée du tableau est la configuration initiale sur x et si tous les blocs sont légaux alors chaque rangée du tableau est la configuration résultant de la précédente lorsque le bit aléatoire est bi.

  20. Nous avons maintenant une fonction f qui associe à x la formule  = cellinitétapeaccepte. • Cette fonction est calculable en temps polynomial! || = O(n2k) + O(nk) + O(n2k) + O(n2k) • Si x  L alors M accepte x. Soient b1, ..., bnk les bits aléatoires qui amènent M à acepter x. Par notre construction, on peut mettre en correspondance les valeurs des variables ci,j,s avec le contenu du tableau correspondant à ce choix des bi avec la garantie que cell, init et étape sont satisfaites. De plus, comme M accepte x, il existe un état acceptant dans le tableau donc accepte est aussi satisfaite. Donc  SAT. • Si  SAT, alors il existe des valeurs des ci,j,s et bi qui satisfont . Par construction, ces valeurs correspondent à un tableau du calcul sur x avec les bits aléatoires bi. Puisque accepte est satisfaite, ce tableau est acceptant pour x donc x  L.

  21. Observations utiles • Théorème: S’il existe un problème A  P avec A NP-complet alors P = NP. Démonstration: On a P  NP. Pour montrer NP  P, prenons un B  NP. On a B p A car A est NP-complet. Il existe f calculable en temps polynomial avec x  B  f(x)  A. On peut donc tester si x  B en calculant f(x) puis en utilisant un algorithme de temps polynomial pour A. Donc B  P.

  22. Observations utiles • Théorème: Si A  NP et s’il existe un B NP-complet tel que B p A alors A est NP-complet. Démonstration: On sait que A  NP, il reste à montrer que pour tout C  NP on a C p A. On sait que C p B et B p A donc C p A.

  23. NP-complet! TSP NP-complet! TSP2, , sym NP-complet! NP-complet! DHC p HC CLQ p IS p VC NP-complet! SAT p 3-SAT

  24. Démontrer qu’un problème est NP-complet • Pour démontrer que A est NP-complet il faut • Démontrer que A est dans NP. • Choisir judicieusement un problème NP-complet B et montrer que B p A.

  25. Problèmes complets pour d’autres classes? • Soit L un langage de P tel qu’il existe au moins un x1 L et un x0 L. Alors L est P-complet sous les transformations polynomiales! • Pour une notion intéressante de P-complétude on utilisera des transformations plus restrictives.

  26. Problèmes complets pour d’autres classes? • On croit généralement que les classes RP, ZPP, BPP n’ont pas de problème complet.

  27. Qu’indique la NP-difficulté? Si A est NP-ardu alors • Il n’y a pas d’algorithme connu pour A dont le temps de calcul est o(cn) pour tout c > 1. • La majorité de la communauté mathématique pense que A n’admet aucun algorithme de temps polynomial.

  28. P = NP? Pourquoi croit on que P  NP? • Parce que si c’était le cas, on aurait trouvé un algorithme de temps polynomial pour un problème NP-complet. • Parce qu’intuitivement, trouver une solution est significativement plus dur que d’en vérifier la validité. • Parce qu’on veut y croire... (Trois mauvaises raisons...)

  29. Quels problèmes sont NP-complets? • En pratique, les variantes de décision des problèmes d’optimisation combinatoire sont soit dans P soit NP-complets. • Liste sans fin (et grandissante): • problèmes de satisfiabilité • problèmes de commis-voyageur • problèmes de sac à dos • problèmes de (ré-)partition et de planification • problèmes de clique et de coloriage. • problèmes de formation d’équipe

  30. Liste de Garey & Johnson: • Théorie des graphes (65 problèmes) • 3-COL, domination, cycle Hamiltonien, etc. • Conception de réseau (51) • TSP, Max-cut, plus long chemin, etc. • Ensembles et partitions (21) • Formation d’équipes, partition • Logique (19), Planification (22), archivage (36), programmation mathématique (13), algèbre (18), jeux et puzzles (15), automates et langages (21), optimisation de code (20), autres (19) • Problèmes qu’on n’arrive à placer ni dans P ni NP-complets (12). Plus que 3!

  31. Problèmes de commis-voyageur. • Problèmes concernant la longueur des chemins et cycles d’un graphe (possiblement pondéré.) • On a déjà montré que HC, DHC, TSP, TSP2,,sym sont NP-complets.

  32. Problème du chemin le plus long (LP, DLP) Entrée: Graphe (dirigé) G = (V,E), entier k. Question: Existe-t-il dans G un chemin simple de longueur  k? • Clairement dans NP: on peut non-déterministement choisir k sommets du graphe et vérifier qu’ils forment un chemin simple.

  33. Théorème: DLP et LP sont NP-complets. Démonstration: On va montrer 3-SAT p DLP. Réutilisons la transformation de 3-SAT à DHC.

  34. 3-SAT p DLP. Problème: comment refléter avec des chemins les 2n valeurs possibles des xi? xnv x1v x2v x1 x2 xn … xnf x1f x2f Ce graphe contient 2n chemins passant par tous les sommets et qu’on va assimiler aux 2n valeurs possibles des xi. Lorsque xi est vrai on considère le chemin qui passe par xiv d’abord et xif ensuite. Lorsque xi est faux on considère le chemin qui passe par xif d’abord et xiv ensuite.

  35. Pour représenter les clauses Cj, on rajoute un sommet cj dans le graphe. De plus, chaque fois que xi ou i apparaît dans une clause, on rajoute deux point intermédiaires entre xiv et xif. xi xiv xif c9 c7 c1 Si xi apparaît dans la clause Cj on construit un détour à travers cj qui ne peut être emprunté que lorsque qu’on part de xiv vers xif. Si i apparaît dans la clause Cj, on construit un détour à travers cj qui ne peut être emprunté que lorsque l’on part de xif vers xiv. Le graphe obtenu contient un chemin simple qui passe à travers tous les sommets si et seulement si la formule 3-SAT est satisfiable.

  36. Notes: • Pour montrer DLP p LP, on procède comme pour montrer DHC p HC. • La transformation nous permet de montrer que le problème est NP-complet même si on spécifie les points entre lesquels on cherche le chemin le plus long. • Le problème du chemin le plus court est résoluble en temps polynomial (algorithme de Dijkstra).

  37. Arbre de recouvrement de degré borné (BMST) Entrée: graphe pondéré G = (V,E), borne de degré k, valeur cible C. Question: Existe-t-il un arbre de recouvrement de G avec degré  k et coût  C? • Clairement dans NP. • LP est le cas particulier de BMST où k = 2, où les poids sont 1 ou 2 et C = |V|-1. •  BMST est NP-complet.

  38. Problèmes de sac à dos Dans sa forme la plus générale (Knapsack) Entrée: Un ensemble d’objets avec un poids pi et une valeur vi + une capacité de sac à dos C + un objectif de valeur V. Question: Peut-on choisir un ensemble d’objets dont le poids total est au plus C et la valeur totale au moins V.

  39. Somme de sous-ensemble (Subset-sum) Cas particulier du sac à dos où pi = vi. Entrée: Ensemble d’entiers positifs R = {p1, ..., pn }, valeur cible S. Question: existe-t-il un sous ensemble R’ R tel que pi R pi = S.

  40. Théorème: Subset-sum est NP-complet. Démonstration: On montre 3-SAT p Subset-sum. Les deux problèmes sont de nature très différentes  la transformation sera compliquée.

  41. Idées de départ: • Chaque variable et chaque clause de l’instance de 3-SAT peut-être vraie ou fausse, chaque élément de R fait ou ne fait pas partie de R’. Exploiter cette correspondance. • Si on choisit les nombres de R avec des décimales qui sont presque toutes 0, l’effet d’un nombre sur la somme est localisé.

  42. Supposons que l’instance de 3-SAT contient n variables x1, ..., xn et m clauses C1, ..., Cm. • On construit des entiers avec m + n décimales: R = {a1, ..., an,b1, ... bn, d1, ..., dm, e1, ...,em}. • Les m premières décimales vont correspondre aux clauses et les n suivantes aux variables.

  43. m On veut faire correspondre le choix xi = 1 au choix de ai dans R’ et le choix xi = 0 choix de bi dans R’. Pour y arriver les n dernières décimales de ai et de bi sont 0, sauf celle correspondant à xi qui est 1.

  44. Exemple: C1 = x12 xn Le litéral x1 apparaît dans les clauses C1 et Cm. Le litéral 1 dans C2 seulement Si xi = 1 toutes les clauses contenant xi sont vraies. Si xi = 0, toutes les clauses contenant i sont vraies. Pour le refléter dans l’instance de subset-sum, la jème décimale de ai est 1 si xi apparaît dans Cj et 0 sinon. On choisit la jème décimale de bi si i apparaît dans Cj et 0 sinon.

  45. Chaque choix de valeur à xi correspond au choix de ai ou de bi. Si on fait ce choix pour chaque i, la somme obtenue est un entier dont les n dernières décimales sont 1. • La décimale correspondant à Cj est alors 0,1,2 ou 3 selon le nombre de litéraux vrais que contient Cj.

  46. Les dj et ej nous permettent d’effacer la distinction entre les clauses satisfaites grâce à 1,2 ou 3 litéraux dans la clause Cj. • On choisit 0 pour toutes les décimales de toutes les décimales de dj et ej sauf la j-ème qui est 1.

  47. Finalement, on choisit 3 pour les m premières décimales de S et 1 pour les n dernières.

  48. Si la formule est satisfiable alors on va trouver R’  R dont la somme est S. • Si la formule est satisfiable et que xi = 1 dans l’assignation satisfaisante, on prend ai dans R’ et bi sinon. • Si la clause Cj est satisfaite par 1 litéral, on choisit dj et ej. Si elle est satisfaite par 2 litéraux, on ne prend que dj. Si elle est satisfaite par les 3 litéraux on ne prend ni dj ni ej. • On peut voir facilement que la somme de R’ est bien S.

  49. Si un R’ avec somme S existe, alors la formule était satisfiable. • R’ doit contenir soit ai soit bi car les n dernières décimales de S sont 1. Choisissons xi = 1 ssi ai R’. • Les m premières décimales de S sont 3. Donc pour chaque j  m, il y a au moins un des ai ou des bi dans R’ qui contient un 1 dans la colonne j. • Donc la clause Cj est satisfaite.

  50. Corollaire: Knapsack est NP-complet. Démonstration: • Clairement dans NP. • Subset-sum P Knapsack Car Subset-sum est un cas particulier de Knapsack.

More Related