1 / 106

IFT-66975

IFT-66975. Contourner la NP-complétude. Que faire face à la NP-complétude?. Pour une application précise, je veux trouver la plus grande clique possible dans un graphe ou répartir une tâche de façon optimale, ou satisfaire simultanément un ensemble de clauses booléennes.

aminia
Télécharger la présentation

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 Contourner la NP-complétude

  2. Que faire face à la NP-complétude? • Pour une application précise, je veux trouver la plus grande clique possible dans un graphe ou répartir une tâche de façon optimale, ou satisfaire simultanément un ensemble de clauses booléennes. • Mais CLIQUE, SWI, SAT sont NP-complets! Est-ce la fin du monde? • R: Peut-être... mais il y a un peu d’espoir si on réduit nos exigences ou nos attentes.

  3. S’assurer que l’on ne fait pas face à un sous-cas relativement simple d’un problème NP-complet. • L’application nous fournit-elle des informations additionnelles sur les instances? • problèmes sur des classes de graphes relativement simples; • 2-SAT, Horn-SAT, 2-COL, ... • Algorithmes pseudo-polynomiaux et NP-complétude forte.

  4. Pour les problèmes d’optimisation, on peut souvent obtenir un algorithme efficace qui trouve une solution quasi-optimale. • Possible dans plusieurs cas mais avec une qualité d’approximation très variable. • Nouvelles classes de problèmes: PTAS, FPTAS, APX. • Résultats d’inapproximabilité.

  5. Réduire l’explosion du temps de calcul à un paramètre relativement petit. • Par exemple: trouver une couverture par sommets de taille k est réalisable en temps O(1.27k + |V|). Pas si mal si on cherche des petites couvertures dans un grand graphe. • Un temps O(f(k)  nc) n’est pas déraisonnable si k est très petit mais O(nf(k)) ne l’est pas. • Problèmes traitables pour paramètre fixe (FPT), réductions paramétrées. • W[1]-complétude.

  6. Heuristiques •  faire un peu n’importe quoi et espérer que tout aille pour le mieux. • Heuristiques spécifiques à un problème. • Fouille aléatoire, algorithmes génétiques. • Complexité des problèmes à boîte noire.

  7. L’analyse de sous-problèmes • En pratique, les problèmes que nous avons à résoudre ont souvent beaucoup de structure qu’on a tendance à oublier lors d’une première analyse. • Lorsqu’un problème qui nous intéresse est NP-complet, la première étape est de s’assurer que l’on ne fait pas face à un sous-cas plus simple. Dans ce cas, il y a peut-être un algorithme polynomial pour ce sous-cas.

  8. Exemples • Le théorème de Schaefer nous donne 6 variantes polynomiales de SAT. • SAT est résoluble en temps polynomial si chaque variable apparaît dans au plus 2 clauses.

  9. DLP est NP-complet. • DLP est résoluble en temps polynomial pour les graphes acycliques. • TSP est NP-complet. • TSP2 est NP-complet. • TSP2, est NP-complet. • TSP2,,sym est NP-complet.

  10. De nombreux problèmes de graphe qui sont NP-complets ont des algorithmes polynomiaux lorsqu’on les restreints aux • graphes de degré borné; • graphes de nombre chromatique borné (nombre de couleurs nécessaires pour un coloriage valide); • graphes acycliques; • arbres; • forêts; • graphes planaires; • graphes bipartis.

  11. Démontrer qu’un sous-cas est NP-complet • Parfois, notre démonstration que A est NP-complet montre en fait un résultat plus fort si on en fait une analyse détaillée. • Preuve que HC p TSP montrait en fait HC p TSP2,,sym • Preuve que 3-SAT p DLP montrait en fait 3-SAT p DLP-source-cible. • Parfois il faut raffiner nos réductions.

  12. On a déjà vu que 3-COL est NP-complet. • Est-ce que le problème reste NP-complet lorsqu’on restreint le problème aux graphes planaires? Notre réduction de 3-SAT vers 3-COL produit un graphe qui en général n’est pas planaire. On va montrer que 3-COL p 3-COLplan.

  13. Le défi est de transformer un graphe G en un graphe planaire G’ tel que G est 3-COL si et seulement si G’ est 3-COL. L’idée est de remplacer localement les arêtes avec des croisements par des gadgets planaires qui simulent l’arête.

  14. Essayons de colorier le gadget suivant lorsque le point de droite est rouge.

  15. 2 cas possibles pour colorier le troisième point incident. Fait à noter, les points extrèmes ont des couleurs égales 2 à 2.

  16. Second cas... Donne lieu à deux sous-sous-cas, selon la couleur du sommet du haut. Les 4 sommets extrèmes ont la même couleur.

  17. Dernier cas... Impossible de colorier le dernier point! Donc les 2 cas précédents sont les seuls coloriages possibles, à une permutation des couleurs près.

  18. Le gadget P a les propriétés suivantes. • Dans tout 3-coloriage de P, les points extrèmes ont des couleurs égales 2 à 2. • Si on colorie les points extrèmes avec des couleurs égales 2 à 2, alors on peut légalement colorier les autres points de P. • P est planaire

  19. Pour compléter notre réduction de 3-COL vers 3-COLplan, on considère une représentation de G dans le plan. Soit (u,v) une arête de G qui intersecte un certain nombre d’autres arêtes. On remplace cette arête par ... u v ... u P P P u’ v À cause des propriétés de P, le graphe ainsi obtenu est 3-coloriable si et seulement si le graphe G est 3-coloriable.

  20. Algorithmes pseudo-polynomiaux • Nous avons vu que le problème du sac à dos est NP-complet. • Maintenant nous allons voir que le problème du sac à dos est dans P. • !!??!??

  21. Une instance du problème de sac à dos est spécifiée par n objets de valeur vi et de poids pi et une capacité du sac à dos C. • Algorithme de programmation dynamique: on crée une table T de (n+1) rangées (0 à n) et de C + 1 colonnes (0 à C). • On veut que l’entrée T[k,w] représente la valeur maximale atteinte en choisissant parmi les k premiers objets et sans dépasser le poids w. L’entrée T[n,C] est la réponse que l’on cherche.

  22. On peut facilement remplir la première rangée et la première colonne car T[0,w] = 0 et T[k,0] = 0.

  23. On complète maintenant le tableau rangée par rangée. Supposons que les rangées 0 à k-1 ont été remplies. Un choix optimal parmi les k premiers objets contient ou ne contient pas l’objet k. Donc T[k,w] = max{T[k-1,w], T[k-1,w-pk] + vk}.

  24. Quelle est la complexité de l’algorithme? • Il y a O(Cn) entrées à remplir. Chaque entrée peut-être remplie en temps constant. • Donc l’algorithme a un temps d’exécution très raisonnable. • À condition que C ne soit pas beaucoup plus grand que n!

  25. 3-SAT p Subset-Sum p Knapsack. • Notre réduction de 3-SAT vers SS contruisait 2n+2m entiers avec n+m décimales. L’entier cible C de l’instance Knapsack ainsi construite est C  10n+m! Donc un algorithme de complexité O(Cn) est totalement inutilisable.

  26. Problèmes sur grands entiers • On désigne (de façon floue) comme problème de décision sur les grands entiers tout problème dont les instances comportent des entiers dont la taille n’est pas nécessairement borné par un polynôme de la longueur des données. • Exemples: TSP, Network-flow, Knapsack, Partition, Bin-Packing, etc. • Non-exemples: CLQ, VC, Primalité, Col, etc.

  27. NP-complétude forte... • Un problème sur de grands entiers est fortement NP-complet si sa restriction aux instances où les entiers sont bornés par un polynôme p(n) de la taille totale de l’entrée est également NP-complet. • Exemples: Puisque TSP2 est NP-complet, TSP est fortement NP-complet. De la même façon TSP,sym est fortement NP-complet.

  28. ... vs algorithmes pseudo-polynomiaux • Un algorithme pour un problème sur grands entiers est dit pseudo-polynomial si son temps d’exécution est polynomial lorsque les entiers de l’instance sont bornés par un polynôme p(n). • Exemple: l’algorithme de programmation dynamique pour Knapsack est pseudo-polynomial. Partition et Subset-sum ont aussi des algorithmes pseudo-polynomiaux.

  29. Théorème: si P  NP, alors les problèmes fortement NP-complets n’admettent pas d’algorithme pseudo-polynomial. Pour démontrer qu’un problème A est fortement NP-complet on peut • Partir de la définition et montrer que la restriction de A aux instances avec de “petits” nombres est NP-complète. • Construire une réduction d’un problème fortement NP-complet B vers A qui préserve la taille des entiers utilisés.

  30. Le problème 3-partition est fortement NP-complet et est très utile pour montrer la NP-complétude forte d’autres problèmes. Entrée: k seaux de taille b N et n = 3k objets de taille aiN avec b/4 < ai < b/2. Question: Peut-on répartir les n éléments dans les k seaux? À noter: si cela est possible, alors chaque seau contient exactement 3 objets. (D’où le nom de 3-Partition.)

  31. Exemples: • 3-PART p,* Bin-Packing En fait, 3-PART est clairement un cas particulier de Bin-Packing. • 3-PART p,* SWI Idée de la construction similaire à celle montrant que PART p SWI. • Nos n objets de taille ai deviennent des tâches Ai avec r(Ai) = 0, d(Ai) = kb + k -1 et l(Ai) = ai. • On introduit également des tâches F1, ..., Fk-1 avec r(F_i) = ib + i -1, l(F_i) = 1, d(F_i) = ib + i.

  32. Optimisation et approximation • Définition: Un problème d’optimisation P associe à chaque instance x un ensemble de solutions S(x) et à chaque s  S(x) une valeur v(x,s) N+. Chaque problème d’optimisation A est associé à deux problèmes algorithmiques: • MAX-P: Étant donné x, trouver s  S(x) tel que v(x,s) soit maximal. • MIN-P: Étant donné x, trouver s  S(x) tel que v(x,s) soit minimal.

  33. La classe NPO • Définition: Un problème d’optimisation P appartient à NPO s’il existe un polynôme p tel que • pour tout x et tout s  S(x) on a |s|  p(|x|); • il existe un algorithme de complexité de temps p(n) qui étant donné (x,s) détermine si s  S(x) et calcule v(x,s). Note: on dénote MAX-NPO et MIN-NPO les deux restrictions naturelles de NPO.

  34. Exemples • MAX-CLIQUE, MAX-Independent-Set, MAX-k-SAT, MAX-KNAPSACK  MAX-NPO. • MIN-TSP, MIN-Set-Cover, MIN-Bin-Packing, MIN-VC, MIN-GC  MIN-NPO. • NPO contient la très grande majorité des problèmes algorithmiques les plus rencontrés en pratique.

  35. Algorithme d’approximation • Un algorithme d’approximation pour un problème MAX-P d’optimisation est un algorithme qui étant donné une instance x retourne une solution s  S(x). • Soit vopt(x) = maxs  S(x) v(x,s). La qualité d’une solution s est le ratio r(x,s) = vopt(x)/v(x,s).

  36. Algorithme d’approximation • Un algorithme d’approximation pour un problème MIN-P d’optimisation est un algorithme qui étant donné une instance x retourne une solution s  S(x). • Soit vopt(x) = mins  S(x) v(x,s). La qualité d’une solution s est le ratio r(x,s) = v(s,x)/vopt(x).

  37. Qualité d’un algorithme d’approximation • Le ratio d’approximation (ou qualité) d’un algorithme d’approximation A est rA(n) := max { r(x,s): |x|  n  A(x) = s } On a toujours rA(n)  1. Un algorithme d’approximation est d’autant plus performant que rA est petit.

  38. Deux objectifs à atteindre dans la conception d’algorithmes d’approximation: • Petit ratio d’approximation. • Temps de calcul polynomial. • Soit r : N [1,+) une fonction croissante. On définit les classes suivantes: • APX(r(n)): classe des problèmes de NPO pour lesquels il existe un algorithme d’approximation avec temps de calcul polynomial et ratio d’approximation rA(n)  r(n). • APX: union des classes APX(c) pour c  1. • APX*: intersection des classes APX(c) pour c > 1.

  39. APX* contient les problèmes qui peuvent être approximés en temps polynomial pour n’importe quel ratio d’approximation constant. • On peut être encore plus exigeant en demandant à un algorithme d’approximation d’atteindre un ratio d’approximation spécifié en entrée par l’usager. • Intuitivement clair: plus on spécifie un ratio petit et plus l’algorithme va avoir besoin de temps!

  40. Une stratégie d’approximation en temps polynomial (PTAS) pour le problème d’optimisation P est un algorithme qui reçoit en entrée (x,) où x est une instance de P et  > 0 est un rationnel qui et produit en temps polynomial dans la taille de x (mais dépendant possiblement de ) une solution avec ratio d’approximation 1+ dans le pire cas. • La classe de complexité PTAS est la classe des problèmes de NPO pour lesquels il existe un PTAS.

  41. Une stratégie d’approximation en temps entièrement polynomial (FPTAS) pour le problème d’optimisation P est un algorithme qui reçoit en entrée (x,) où x est une instance de P et  > 0 est un rationnel qui et produit en temps polynomial dans la taille de x et de 1/ une solution avec ratio d’approximation 1+ dans le pire cas. • La classe de complexité FPTAS est la classe des problèmes de NPO pour lesquels il existe un FPTAS.

  42. On a donc P  FPTAS  PTAS  APX* APX  NPO Un problème qui possède un FPTAS est à toute fin pratique traitable. Un PTAS peut être acceptable et même un algorithme d’approximation APX avec un ratio d’approximation relativement faible peut nous suffire surtout si on a de fortes raisons de croire qu’il n’y a pas de meilleure alternative.

  43. Algorithmes d’approximation classiques

  44. Algorithme d’approximation pour MAX-3-SAT avec ratio 8/7. • Rappel: Max-3-SAT est la recherche d’une assignation aux xi qui maximise le nombre de clauses satisfaites. Chaque clause contient exactement 3 litéraux distincts. • Idée de départ: Considérons une assignation aléatoire aux xi et appelons Cj la variable aléatoire qui est 1 si la clause cj est satisfaite par cette assignation et 0 sinon. Alors Pr[Cj = 1] = 7/8 donc E(Cj) = 7/8. Donc si C =  Cj on a E(# clauses satisfaites)= E(C) =  E(Cj) = 7m/8. Une assignation moyenne satisfait 7/8 des clauses. Il suffit d’en trouver une qui atteint la moyenne.

  45. Algorithme: soit x1, ..., xn les variables booléennes de . • Pour i = 1, ..., n on considère les deux valeurs possibles 0,1 pour xi. • Pour les clauses cj, calculer E(Cj | xi = b). Supposons que cj contient k litéraux. • Si cj ne contient k ni xi, ni i, alors E(Cj | xi = 1) = E(Cj) = (2k-1)/2k. • Si cj contient xi alors E(Cj | xi = 1) = 1. • Si cj contient i alors E(Cj | xi = 1) = (2k-1-1)/2k-1. • Comparer E(C | xi = 0) et E(C | xi = 1). Choisir xi = b tel que E(C | xi = b) soit maximal. • Répéter 1 à 3 sur la formule  où les occurrences de xi sont remplacées par 0 ou 1.

  46. Remarques • L’algorithme s’exécute en temps O(mn). • E(C) = ½ E(C | x1 = 1) + ½ E(C | x1 = 0). Or E(C) = 7/8 m donc soit E(C | x1 = 1)  7/8 m soit E(C | x1 = 0)  7/8 m. • À la seconde étape notre algorithme calcule E(C | x1 = b1; x2 = 1) et E(C | x1 = b1; x2 = 0). Par le même raisonnement, une de ces deux quantités est au moins 7/8 m. • L’algorithme construit donc une assignation qui satisfait 7/8 des clauses. Mais vopt()  m donc le ratio d’approximation est 8/7 dans le pire cas.

  47. Algorithmes d’approximation pour MIN-BP. (Objets de taille p1, ..., pn et seaux de taille c. Quel est le nombre minimal de seau nécessaire pour placer tous les objets?) • Idée: pour des algorithmes corrects (sans plus) on suit les idées les plus naturelles. Dans ce cas, des algorithmes voraces.

  48. Idée 1: Placer chaque objet dans un nouveau seau à moins qu’il tienne dans un seau qui n’est pas encore rempli à pleine capacité. • Quel ratio peut-on garantir? Chaque seau est forcément rempli au moins jusqu’à la moitié. Donc rA 2. • En fait, cet algorithme retourne un s tel que v(x,s) 1.7 vopt(x). • On peut construire des instances avec vopt arbitrairement grand mais sur lesquelles l’algorithme retourne une solution s avec v(s,x)  1.7 (vopt(x) -1).

  49. Supposons que la capacité de chaque seau est 1 et qu’on a 18m objets. • 6m objets de taille 1/7 + ; • 6m objets de taille 1/3 + ; • 6m objets de taille 1/2 + ; • On peut utiliser 6m seaux avec un objet de chaque type. • Notre algorithme va en fait créer m seaux avec 6 petits objets, 3m seaux avec 2 objets moyens et 6m seaux avec des grands objets. 10m seaux en tout pour une qualité de solution 5/3.

  50. Idée 2: Placer chaque objet dans un nouveau seau à moins qu’il tienne dans un seau qui n’est pas encore rempli à pleine capacité. Dans ce cas, placer l’objet dans le seau dont la capacité non-utilisée est la plus proche de la taille de l’objet. • Quel ratio peut-on garantir? Essentiellement le même en pire cas!

More Related