La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Contourner la NP-complétude

Présentations similaires


Présentation au sujet: "Contourner la NP-complétude"— Transcription de la présentation:

1 Contourner la NP-complétude
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 1 2 3 ... C n 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 T[k,w] = max{T[k-1,w], T[k-1,w-pk] + vk}.
1 2 3 ... C n 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 Pour démontrer qu’un problème A est fortement NP-complet on peut
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 En fait, 3-PART est clairement un cas particulier de Bin-Packing.
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 P  FPTAS  PTAS  APX*  APX  NPO
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
Problème Algorithme d’approximation MAX-CLIQUE O(n/log2n) MIN-VC 2 MAX-3-SAT 8/7 MIN-BIN-PACKING 3/2 MIN-TSP MIN-VCplanaire PTAS MAX-KNAPSACK FPTAS

44 E(# clauses satisfaites)= E(C) =  E(Cj) = 7m/8.
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,
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!

51 Idée 3: Trier les objets. 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? v(x,sA)  11/9 vopt (x) + 4 Lorsque vopt = 1, cela ne garantit que rA = 47/9! Mais asymptotiquement, le ratio tend vers 11/9. De même, le meilleur algorithme connu a un ratio d’approximation borné par 1 + O(log2 vopt/ vopt) qui tend vers 1. (FPTAS asymptotique)

52 Algorithme d’approximation pour MIN-TSP.
Trouver en temps polynomial un arbre de recouvrement de poids minimal. Traverser l’arbre de recouvrement pour couvrir toutes les villes. Ce circuit passe 2 fois par chaque ville mais on peut utiliser des raccourcis pour éviter ce problème.

53 Quel ratio d’approximation peut-on garantir?
Le coût du tour optimal est plus petit que l’arbre minimal de recouvrement. À cause de l’inégalité du triangle, l’utilisation de raccourcis ne peut augmenter le coût du tour qui suit l’arbre de recouvrement minimal. Donc rA  2. On peut raffiner le même type d’algorithme et obtenir rA  3/2. Lorsque les villes sont des points dans Rd avec les distances usuelles (TSPd-euclid) il existe même un PTAS.

54 Il existe un FPTAS pour le problème du sac à dos (analyse délicate nécessaire).
Par programmation dynamique, on a un algorithme pseuso-polynomial pour Max-KS. Il ne fonctionne en temps polynomial que pour une capacité de sac borné par un polynôme. Il existe aussi un algorithme en temps polynomial dans la taille des valeurs des objets. Si les valeurs sont trop grandes, on peut tronquer ces valeurs après t bits significatifs et utiliser l’algorithme polynomial.

55 Min-KS pour les nuls. (algorithme d’approximation polynomial avec r = 2)
Ordonner les objets selon le ratio (vi / pi). Tant que la liste des objets n’est pas épuisé, rajouter l’objet i dans le sac à dos s’il tient dans la place restante. Comparer la solution obtenue à la solution qui contient l’objet de plus grande valeur. Retourner la meilleure.

56 Min-KS pour les un peu moins nuls. (PTAS, ratio  1 + 1/k)
Former tous les ensembles possibles de k objets. Pour chaque ensemble, ajouter des objets grâce à l’algorithme précédent. Retourner la meilleure valeur obtenue. Le temps de calcul est O(nk+1).

57 Limites de l’approximabilité
Comment peut-on démontrer qu’un problème d’optimisation P ne peut-être approximé en temps polynomial au delà d’une certaine limite de qualité. Si on peut démontrer qu’un algorithme d’approximation pour P avec rA < r(n) implique la possibilité de résoudre en temps polynomial un NP-complet, on aura de bonnes raisons de croire qu’un tel algorithme n’existe pas.

58 Technique du fossé Théorème:
Supposons que P  NPO est tel que pour chaque x et chaque s  S(x) on a v(x,s)  a ou v(x,s)  b. Supposons aussi qu’il est NP-ardu de différencier le cas vopt(x)  a du cas vopt(x)  b. Alors si P  NP, il n’existe pas d’algorithme d’approximation pour P avec ratio d’approximation plus petit que b/a.

59 Démonstration: Supposons qu’un tel algorithme existe. Puisqu’il est NP-ardu de différencier les instances x de P avec vopt(x)  a de celles avec vopt(x)  b, il existe pour tout L  NP, une f calculable en temps polynomial tel que si w  L alors vopt(f(w))  a mais si w  L alors vopt(f(w))  b. Supposons que P est un problème de minimisation. On peut en temps polynomial obtenir une solution s pour f(w) telle que v(f(w),s) < b/a  vopt(f(w)). Si v(f(w),s) < b alors vopt(f(w)) < b et donc vopt(f(w))  a. Si v(f(w),s)  b alors vopt(f(w)) > a/b  v(f(w),s)  a et donc vopt(f(w))  b. Donc w  L si et seulement si vopt(f(w))  a, si et seulement si v(f(w),s) < b. Ainsi L  P.

60 Mais comment peut-on trouver des problèmes d’optimisation avec cette propriété de fossé?
Dans certains cas en faisant simplement une analyse précise des réductions démontrant la NP-complétude d’un problème.

61 Un fossé pour Min-TSP Revenons à notre réduction de HC vers TSP. On transforme un graphe G = (V,E) en une matrice de distance entre les vi en prenant dij = 1 si (vi,vj)  E et dij = 2 si (vi,vj)  E. Si un circuit Hamiltonien existe dans G, il existe un tour de coût n = |V|. Sinon, tout tour a un coût d’au moins n+1.

62 Un fossé pour Min-TSP Soyons plus radicaux: dij = 1 si (vi,vj)  E et dij = n2n si (vi,vj)  E. Si un circuit Hamiltonien existe dans G, il existe un tour de coût n. Sinon, tout tour a un coût d’au moins n2n. Puisque HC est NP-complet, il est NP-ardu de différencier les instances où le coût optimal est  n de ceux ou le coût optimal est  n2n. : si P  NP, Min-TSP ne peut être approximé avec un ratio 2n. Donc Min-TSP  APX.

63 Critique possible de ce résultat: oui mais si on a seulement des petites distances?
On peut repenser les notions utiles pour les algorithmes pseudo-polynomiaux et la NP-complétude forte. Un problème d’optimisation est dit problème avec petites valeur de solution si v(x,s) est toujours borné par un polynôme p(|x|).

64 Exemples de problèmes d’optimisation avec petites valeurs de solution.
Max-CLIQUE, Min-VC, Max-3-SAT, Min-GC, Min-BP, Max-3DM, etc. Min-TSP, Min-KS, etc. lorsque l’on borne par un polynôme les entiers utilisés dans une instance.

65 Théorème: Si P  NP, alors tout problème Q avec petites valeurs de solution qui est NP-ardu n’a pas de FPTAS. Théorème très pratique pour abandonner rapidement la recherche d’un FPTAS.

66 Démonstration: Supposons que Q  Min-NPO (l’argument symmétrique fonctionne pour Max-NPO). Supposons qu’un FPTAS existe et que les valeurs de Q sont bornées par p(|x|). Prenons (n) = 1/p(n) et supposons Puisque Q est NP-ardu, le FPTAS ne peut pas toujours trouver la valeur optimale mais il retourne en temps polynomial une solution s avec v(x,s)  (1+(|x|))  vopt(x). Si x est une instance où la valeur calculée est sous-optimale alors r(n)  p(n)/(p(n)-1) puisque les valeurs sont toutes entre 1 et p(n). Donc r(n) = 1 + 1/(p(n) -1) > 1 + (n), ce qui est une contradiction.

67 Théorème: Si P  NP, et Q est un problème de minimisation pour lequel il est déjà ardu de décider si vopt(x)  k, alors aucun algorithme d’approximation en temps polynomial pour Q n’a un ratio inférieur à 1 + 1/k.

68 Théorème: Si P  NP, et Q est un problème de maximisation pour lequel il est déjà ardu de décider si vopt(x)  k+1, alors aucun algorithme d’approximation en temps polynomial pour Q n’a un ratio inférieur à 1 + 1/k.

69 Démonstration: Supposons au contraire qu’un algorithme A existe avec un ratio inférieur à 1+1/k. On veut utiliser A pour tester en temps polynomial si vopt(x)  k. Supposons que A(x) = s et que v(x,s)  k. Alors on sait que vopt(x)  k. Si v(x,s)  k + 1, alors puisque v(x,s)/vopt(x,s) < 1 + 1/k = (k+1)/k on a forcément vopt(x) > k. Donc vopt  k ssi v(x,A(x))  k, ce qui donne une contradiction.

70 Quelques applications de ce théorème (si P  NP)
Min-GC n’est pas approximable en temps polynomial avec un ratio inférieur à 4/3 car 3-COL est NP-ardu. Min-Bin-Packing n’est pas approximable en temps polynomial avec un ratio inférieur à 3/2 car Partition est NP-ardu.

71 Comment raffiner l’étude de Min-GC pour montrer qu’on ne peut pas non plus atteindre le ratio 4/3 asymptotiquement? On sait que 3-COL est NP-ardu. À partir de là on veut montrer que pour tout k, il est aussi NP-ardu de distinguer en temps polynomial un graphe dont le nombre chromatique est  3k d’un graphe dont le nombre chromatique est  4k.

72 Soit G = (V,E) un graphe avec nombre chromatique (G)
Soit G = (V,E) un graphe avec nombre chromatique (G). On construit en temps polynomial un graphe Gk de la façon suivante. On crée k copies de G. On rajoute des arêtes entre n’importe quels deux points de copies différentes de G. Il est facile de constater que (Gk) = k  (G). Donc si G est 3-coloriable, Gk est 3-coloriable mais sinon, Gk nécessite au moins 4k couleurs!  Si P  NP, alors tout algorithme d’approximation en temps polynomial a un ratio asymptotique inférieur à 4/3.

73 On peut parfois montrer que l’existence d’un algorithme avec un ratio d’approximation en dessous d’une certaine limite implique en fait l’existence d’un PTAS. Cela arrive lorsque l’on peut obtenir des “auto-réductions” qui agrandissent le fossé. (Un exemple suit!)

74 Théorème: Si MAX-IS est approximable avec un ratio d’approximation r (donc MAX-IS  APX), alors il existe un PTAS pour MAX-IS. Démonstration: Considérons pour un graphe G = (V,E), le graphe G2 = (VV, F) avec [(u,u’),(v,v’)]  F si u = v et [u’,v’]  E. ou [u,v]  E.

75 Montrons que G a un IS de k points si et seulement si G2 a un IS de k2 points.
: si I est un IS de k points dans G, alors {(u,v) : u,v  I} est un IS de k2 points dans G2. : Si I2 est un IS de k2 points dans G, alors U = {u: (u,v)  I2 pour un v  V} est un IS de G. Pour chaque u  U, l’ensemble Wu = {v: (u,v)  I2} est aussi un IS dans G. Un de ces ensembles a une taille au moins k.

76 Si MAX-IS est r-approximable avec r < 2, par l’algo A en temps nc.
Appliquons cet algorithme au graphe G2. Cela se fait en temps n2c et fournit un IS de taille au moins k2/r. Grâce à notre raisonnement précédent, on peut en obtenir un IS pour G de taille au moins k/r. Donc on obtient un algorithme d’approximation avec ratio r < r.

77 Comparer la complexité d’approximation
On cherche des notions qui nous permettront d’obtenir des résultats d’inapproximabilité pour B à partir de résultats d’inapproximabilité pour A. Pour les problèmes de décision, les réductions polynomiales nous donnaient cette possibilité.

78 Définition: Une réduction PTAS d’un problème d’optimisation A vers un problème d’optimisation B (dénoté A PTAS B) est un triplet de fonctions (f,g,) avec les propriétés: f transforme les instances x de A en instances f(x) de B et est calculable en temps polynomial. Pour chaque triplet (x,s,) où x est une instance de A, s  SB(f(x)) et   Q+, g transforme (x,s,) en une solution g(x,s,) dans SA(x) et est calculable en temps polynomial. : Q+  Q+ est une fonction surjective calculable en temps polynomial. Si rB(f(x),y))  1 + (), alors rA(x,g(x,y,))  1 + .

79 Supposons que A PTAS B. Alors
Lemme: Supposons que A PTAS B. Alors Si B  PTAS alors A  PTAS. Si B  APX alors A  APX.

80 (Heureusement) certaines réductions entre problèmes de décision peuvent facilement être transformées en réductions PTAS pour des problèmes d’optimisation correspondant. MAX-3-SAT PTAS MAX-IS. (ens. indép.) MAX-CLIQUE PTAS MAX-IS.

81 Complétude Un problème d’optimisation P  NPO est C-complet pour C  {APX, Min-NPO, Max-NPO} si P  C et pour tout Q  C, on a Q PTAS P. On croit que les inclusions PTAS  APX  NPO sont strictes. Donc l’APX-complétude ou la NPO-complétude sont de fortes indications d’inapproximabilité d’un problème.

82 Théorème: MAX-3-SAT est APX-complet. Mais la démonstration requiert le théorème PCP.

83 Théorème: MAX-W-SAT est MAX-NPO-complet. Instance: formule  avec variables booléennes x1, ... , xn et poids wi  N + pour chaque xi. Solutions: Toute assignation aux variables. Si s  S() et s ne satisfait pas , alors v(,s) = 1. Si s satisfait  alors v(,s) = xi = 1 wi.

84 Démonstration: On veut réutiliser intelligemment la démonstration de Cook-Levin. Supposons que A  MAX-NPO. Alors, il existe une m.t. non-déterministe M qui étant donné x choisit une solution potentielle s avec |s|  p(|x|). Ensuite, M vérifie si s  S(x) et si oui calcule v(x,s), écrit v(x,s) au début du ruban (en commençant par les bits les moins significatifs) écrit ensuite s, efface le reste du ruban et accepte. Sinon, M s’arrête et rejette.

85 Appliquons la réduction du théorème de Cook-Levin
Appliquons la réduction du théorème de Cook-Levin. Si M s’exécute en temps p(n) on peut construire pour chaque entrée x une formule  qui est satisfiable si et seulement si M accepte x. Dans ce cas, la variable booléenne cp(|x|),j,1 est vraie lorsque la case j du ruban lors de la fin du calcul acceptant contient 1. Supposons que les cases 1 à r sont utilisées pour encoder v(x,s). On attribue alors à cp(|x|),j,1 le poids 2j. Toutes les autres variables ont un poids 0.

86 On a donc une fonction f calculable en temps polynomial qui transforme une instance x de A en une formule  avec des poids. Il faut définir s = g(x,y,) où x est une instance de A, y  SB(f(x)) et s  SA(x). Si y satisfait  alors les variables encodent un calcul acceptant de M. Donc, on peut examiner la dernière ligne du tableau et retrouver le s  SA(x) tel que le calcul de M sur x avec choix non-déterministe s correspond à y. Finalement, on choisit () = .

87 Dernier détail: montrer que si rB(f(x),y)  1 + () alors rA(x,g(x,y,))  1 + .
À cause de notre choix de poids, le poids de y est égal à v(x,s).

88 Étude de cas: VC Le problème de couverture par sommets est NP-complet. Que faire alors? Considérons 3 options raisonnables.

89 Algorithme d’approximation. Initialiser V’ = .
Tant que V’ ne couvre pas toutes les arêtes, choisir arête (u,v) non couverte. V’ = V’  {u,v}. Temps d’exécution  O(|E|).

90 Qualité de l’approximation?
Soit V* la plus petite VC du graphe et E’ les arêtes qui sont “doublement” couvertes par la VC V’ fournie par l’algo. On a |V*|  |E’| car aucune deux arêtes de E’ n’ont de sommet en commun. Par définition |V’|  2 |E’|. Donc |V’|  2 |V*| et le ratio d’approximation est 2.

91 Peut-on obtenir un meilleur ratio?
Il existe un algorithme avec ratio d’approximation 2- (log log |V| / log |V|). NP-ardu à approximer avec un ratio plus petit que 7/6.

92 Algorithme heuristique Initialiser V’ = .
Tant que V’ n’est pas une VC Choisir v  V’ couvrant un maximum d’arêtes non-couvertes. V’ = V’  {v}. Temps d’exécution  O(|E|2).

93 Quelle est le ratio d’approximation?
Considérons un graphe G = (V,E) dont les sommets sont répartis en k niveaux L1, ..., Lk. Niveau Li contient k/i sommets. Chaque point du niveau 1 est relié à un point de chaque autre niveau et ces arêtes sont réparties uniformément. (donc le sommet j de L1 est connecté au sommet j/i +1 du ième niveau.) Pour j  2, tous les sommets de Lj (sauf peut-être un) ont un degré j. Les sommets de L1 ont un degré k-1.

94 La VC optimale contient les k sommets du niveau L1.
Notre heuristique choisit d’abord le sommet du niveau Lk car son degré est k. Ensuite, les arêtes incidentes à ce point sont effacées donc les sommets de L1 ont degré k-2. Donc tous les sommets de Lk-1 sont ensuite choisis. La taille de la VC construite par notre algorithme   k/i  k log k. Le ratio d’approximation est donc (log k)!

95 Algorithme exact A pour VC
Algorithme exact A pour VC. Graphe G = (V,E) en entrée, VC optimal en sortie. Entrée: choisir une arête (u,v). Soit Gu est le graphe dont on a effacé u et ses arêtes incidentes. Récursivement calculer VC optimal Vu pour Gu et Vv pour Gv. Si |Vu|  |Vv| retourner |Vu|  {u}, sinon retourner |Vv|  {v}.

96 Temps d’exécution? Note: Si k est la taille de la VC optimale on peut borner la profondeur de récurrence par 2k. Temps total d’exécution O(|V|  4k). En raffinant ce type d’idée, on peut même obtenir des temps O(1.27k + k|V|).

97 Complexité paramétrée
Un problème de décision paramétré a des instances de la forme  I, k . On dit que ce problème est FPT s’il existe un algorithme de complexité de temps O(|I|c  f(k)) pour une constante c.

98 Exemples k-Clique, k-IS sont des problèmes FPT.
Par contre, k-DS, k-weight-SAT et plusieurs autres ne sont probablement pas dans FPT.

99 Heuristiques universels
Soit A un problème de MIN-NPO dont les solutions s sont décrites par des chaînes de n bits s = (s1, ..., sm). On veut décrire deux algorithmes qui peuvent s’appliquer à n’importe quel problème de ce type.

100 Algorithme Metropolis
L’algorithme est spécifié pour une constante T judicieusement choisie. Choisir une solution s au hasard et calculer v(x,s). Créer une nouvelle solution s’ en choisissant aléatoirement un bit si de s et en changeant sa valeur. Si v(x,s’)  v(x,s), alors garder s’ et abandonner s. Si v(x,s’) > v(x,s) alors garder s’ avec probabilité 2-(v(x,s’) – v(x,s))/T et garder s sinon. Répéter 2-4 jusqu’à l’épuisement.

101 Algorithme de simulation d’alliage
L’algorithme est spécifié par une température de départ T et un facteur de refroidissement . Le principe est exactement le même que celui de l’algorithme Metropolis mais à l’étape i, on remplace T par i  T.

102 Algorithmes génétiques
Large classe d’algorithmes qui maintiennent une liste de solutions avec leur valeur et génèrent de nouveaux points

103 Pourquoi utiliser autre chose?
Aucune garantie sur la qualité des solutions fournies. Souvent utilisé aveuglément. D’autres alternatives sont souvent plus complexes à implémenter mais on de nombreuses qualités.

104 Un algorithme pour 3-SAT
Pour une 3-SAT formule avec n variables, il existe un algorithme probabiliste dont le temps d’exécution est p(n) (4/3)n pour un certain polynôme p.

105 Si aucun  n’a été trouvé satisfiant  retourner 0.
Répéter 30  (4/3)n fois. Choisir une assignation  pour les xi au hasard. Si  satisfait , retourner 1. Sinon, choisir aléatoirement une clause non-satisfaite et changer la valeur d’un des trois litéraux. Répéter l’étape (2) 3n fois. Si aucun  n’a été trouvé satisfiant  retourner 0.

106 Il est clair que cet algorithme a le temps d’exécution promis.
Aussi, si   SAT alors l’algorithme retourne 0. Quelle est la probabilité que l’algorithme retourne 0 si   SAT?


Télécharger ppt "Contourner la NP-complétude"

Présentations similaires


Annonces Google