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 Pourquoi ne pas se contenter des heuristiques?
Tentant de s’en remettre toujours aux heuristiques mais Aucune garantie de complexité algorithmique (pas trop grave en pratique) Aucune garantie de performance sur la qualité des solutions trouvées. En sautant sur la solution heuristique on laisse peut-être passer une solution algorithmique plus acceptable.

8 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.

9 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.

10 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.

11 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.

12 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.

13 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.

14 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.

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

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

17 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.

18 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.

19 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

20 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 G’ ainsi obtenu est 3-coloriable si et seulement si le graphe G est 3-coloriable. De plus G’ peut être construit en temps polynomial.

21 Le problème 3-COLplan est donc NP-complet
Le problème 3-COLplan est donc NP-complet. Quel est le statut du problème 4-COLplan? On sait que le problèm 4-COL est NP-complet, peut-on montrer que 4-COL P 4-COLplan? Théorème des 4 couleurs: Tout graphe planaire peut-être 4-colorié. Donc 4-COLplan est dans P, puisque le problème peut être résolu par un algorithme qui accepte toutes les entrées! En particulier, 4-COL ne peut-être transformé en temps polynomial en 4-COLplan.

22 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. !!??!??

23 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.

24 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.

25 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}.

26 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!

27 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.

28 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.

29 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.

30 ... 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.

31 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.

32 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.)

33 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(Fi) = ib + i -1, l(Fi) = 1, d(Fi) = ib + i.

34 La leçon à retenir Dans certains cas, on peut contourner la NP-complétude de problèmes impliquant des entiers si ces entiers sont relativement petits. (En général grâce à la programmation dynamique) Ce n’est pas toujours possible. Pour identifier les problèmes qui n’admettent pas d’algorithme pseudo-polynomial, on peut utiliser un raffinement de nos notions de complétude et de réduction.

35 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. Même si la complexité reste exponentielle (ou pire!) l’algorithme est potentiellement utile pour un k suffisamment petit.

36 Exemples Le résultat le plus célèbre en complexité paramétrée: k-Vertex-Cover peut être résolu en temps O(k|V| k). Note: log  0,1. Donc l’algorithme reste utilisable si 10k/10 est petit. De nombreux exemples en théorie des graphes (le paramètre peut être le nombre chromatique du graphe, sa “treewidth”, etc.) en base de données (paramètre classique: taille d’une requête) etc.

37 Algorithme exact pour VC
Algorithme exact 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}.

38 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).

39 Limites de la complexité paramétrée
Il existe de fortes indications que le problème suivant n’est pas FPT. weight-k-SAT Entrée: Formule . Sortie: Existe-t-il une assignation satisfaisante qui contient k variables vraies? On pense que ce problème n’admet aucun algorithme dont le temps de calcul est inférieur à nO(k).

40 Réductions paramétrées: on peut utiliser ce résultat pour montrer que d’autres problèmes ne sont probablement pas FPT. Mais il faut modifier notre définition de réduction. Une réduction paramétrée du langage paramétré L vers le langage paramétré L’ est un algorithme qui étant donné une entrée (x,k) calcule (x’,k’) tel que (x,k)  L  (x’,k’)  L’; k’  g(k) pour un certain g; La réduction se calcule en temps O(f(k)|x|c).

41 On peut montrer qu’il existe des réductions paramétrées de weight-k-SAT vers k-CLIQUE, k-Ensemble-indépendant, k-Domination-par-sommets etc. Cela permet d’inférer que ces problèmes ne peuvent probablement être attaqués grâce aux méthodes de complexité paramétrée.

42 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.

43 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.

44 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.

45 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).

46 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).

47 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.

48 Exemple de Max-3-SAT 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. Montrons qu’il existe un algorithme d’approximation pour MAX-3-SAT dont le temps d’exécution est polynomial et dont le ratio d’approximation est 8/7 dans le pire cas. 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.

49 E(Cj | xi = 1) = E(Cj) = (2k-1)/2k.
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.

50 E(C | x1 = b1; x2 = 1) et E(C | x1 = b1; x2 = 0).
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 au moins 7/8 des clauses. Mais vopt()  m donc le ratio d’approximation est 8/7 dans le pire cas.

51 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.

52 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!

53 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.

54 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.

55 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.

56 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

57 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 seaux nécessaires 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.

58 Idée 1: Placer chaque objet dans un nouveau seau à moins qu’il ne 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).

59 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.

60 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!

61 Idée 3: Trier les objets. Placer chaque objet dans un nouveau seau à moins qu’il ne 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)

62 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.

63 Bonne idée: de toute façon: d34  d23 + d24
11 8 2 4 1 9 5 6 10 7

64 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 pour obtenir rA  3/2. Lorsque les villes sont des points dans Rd avec les distances usuelles (TSPd-euclid) il existe même un PTAS.

65 Étude de cas: Problème du sac à dos
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.

66 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).

67 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. Si les valeurs sont trop grandes, on peut tronquer ces valeurs après t bits significatifs et utiliser l’algorithme polynomial. Idée semble bonne mais dans les faits ne fonctionne pas comme on le voudrait. On va plutôt utiliser un algorithme de programmation dynamique dont l’éxécution est polynomiale dans la taille des valeurs des objets.

68 Nous avons n objets de poids pi et de valeur vi ainsi qu’une capacité C. Soit V = max {vi}. Note: le défi est de maximiser la valeur totale tout en minimisant le poids total. Notre premier algorithme pseudo-polynomial considérait pour chaque k  n et chaque c  C la valeur maximale Mk,c que l’on pouvait atteindre en prenant parmi les k premiers objets avec un poids total inférieur à c. Approche duale: pour chaque k  n et chaque v  nV, soit Wk,v le poids minimal lorsque l’on choisit parmi les k premiers objets un ensemble dont la valeur totale est exactement v.

69 Wk+1,v = min {Wk,v, Wk,v-vk+1 + pk+1}
Valeur atteinte 1 2 3 ... nV n objets disponibles La première rangée est  car il n’y a pas moyen d’obtenir une valeur non-nulle sans choisir d’objets. Pour remplir le tableau: quel est le poids minimal pour un choix des k+1 premiers objets avec valeur totale v? Deux possibilités: l’objet k+1 fait ou ne fait pas partie de ce choix optimal. Wk+1,v = min {Wk,v, Wk,v-vk+1 + pk+1}

70 Cet algorithme s’exécute en temps O(n2V)
Cet algorithme s’exécute en temps O(n2V). Algorithme pseudo-polynomial, mais le temps ne dépend pas du poids des objets ou de C! Supposons que V soit trop grand. Pour une instance x = {v1, ..., vn, p1, ..., pn, C} de KS définissons l’instance approximative de X x’ = {v1’, ..., vn’, p1, ..., pn, C} où vi’ = 2b vi/2b. (les b derniers bits sont remplacés par 0.) Note: chaque solution valide pour x’ est une solution valide pour x car les poids sont demeurés inchangés. De plus la solution optimale pour x’ peut être calculé en temps O(n2V/2b) acr on peut ignorer le bloc de b 0. Chaque bit délaissé divise par 2 le temps de calcul.

71 On obtient donc un algorithme d’approximation pour KS qui, étant donné x forme x’ et retourne en temps O(n2V/2b) la solution optimale S’ pour x’. Comment se compare cette solution à la solution optimale S pour x? Quelle relation existe entre vopt(x) = vopt(x,S) et v(x,S’)?

72 vopt(x)/v(x,S’)  vopt(x)/(vopt(x) – n2b)  1 + n2b/V
vopt(x) = iS vi  iS’ vi (car S optimal) iS vi  iS’ vi  iS’ vi’ (car vi  vi’) iS vi  iS’ vi  iS’ vi’  iS vi’ (car S’ est optimal pour x’) i S’ vi’  i  S vi’  i S(vi – 2b) (par définition des vi’) i S(vi – 2b)  i S vi – n2b = vopt(x) – n2b En particulier v(x,S’) = i S’vi  vopt(x) – n2b. Donc le ratio d’approximation est au pire vopt(x)/v(x,S’)  vopt(x)/(vopt(x) – n2b)  1 + n2b/V car on peut supposer vopt(x) – n2b  V.

73 Qu’a-t-on en fin de compte?
Algorithme d’approximation qui s’exécute en temps O(n2V/2b). Ratio d’approximation 1 + n2b/V. Si un usager demande une approximation de qualité (1+), on choisit b = log V/n. En tronquant les b derniers bits, notre algorithme s’exécute en temps O(n2V/2b) = O(n3/) et la qualité d’approximation est bien 1+. Ainsi KS  FPTAS.

74 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.

75 Technique du fossé Définition: Soit Q  Max-NPO et K un problème NP-complet. Une réduction avec fossé (a,b) de K vers Q est une transformation polynomiale f des instances de K vers les instances de Q telle que: x  K  vopt (f(x))  b x  K  vopt (f(x))  a.

76 Technique du fossé Définition: Soit Q  Min-NPO et K un problème NP-complet. Une réduction avec fossé (a,b) de K vers Q est une transformation polynomiale f des instances de K vers les instances de Q telle que: x  K  vopt (f(x))  a x  K  vopt (f(x))  b.

77 Technique du fossé Théorème:
Supposons que Q  Max-NPO (Min-NPO) et qu’il existe une réduction avec fossé (a,b) d’un problème NP-complet K vers Q. Alors si P  NP, il n’existe pas d’algorithme d’approximation pour P avec ratio d’approximation strictement plus petit que b/a.

78 vopt(f(x)) < b/a  a = b.
Démonstration: Supposons qu’un tel algorithme existe. Montrons que cela implique K  P. Soit x une instance de K. On peut calculer en temps polynomial f(x) et appliquer notre algorithme d’approximation dont le ratio d’approximation est strictement inférieur à b/a. On peut en temps polynomial obtenir une solution s pour f(x) telle que v(f(x),s) > a/b  vopt(f(x)). Supposons que v(f(x),s)  a. Alors vopt(f(x)) < b/a  a = b. Mais on sait que si vopt(f(x)) < b alors en fait vopt(f(x))  a et x  K. Supposons maintenant que v(f(x),s) > a. Alors on a forcément vopt(f(x)) > a. Donc x  K. Donc x  K si et seulement si v(f(w),s)  a. Comme on peut vérifier cette seconde condition en temps polynomial, on a K  P. C’est une contradiction si on suppose P  NP.

79 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.

80 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. On peut donc voir cette réduction comme une réduction avec fossé (n,n+1).

81 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 inférieur à n de ceux ou le coût optimal est supérieur à n2n. Fossé (n,n2n).  si P  NP, Min-TSP ne peut être approximé avec un ratio 2n. Donc Min-TSP  APX.

82 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|).

83 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.

84 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.

85 v(x,s)/vopt(x)  (1+(|x|)).
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). 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)/vopt(x)  (1+(|x|)). Mais si x est une instance où la valeur calculée est sous-optimale alors v(x,s)  vopt(x) + 1. On a donc v(x,s)/vopt(x)  p(n)/(p(n)-1) = 1 + 1/(p(n)-1) puisque les valeurs sont toutes entre 1 et p(n). Il y a une contradiction puisque 1 + 1/(p(n) -1) > 1 + (n)!.

86 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.

87 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.

88 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.

89 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.

90 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.

91 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.

92 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!)

93 Théorème: Si MAX-IS est approximable avec un ratio d’approximation r (si 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.

94 : si I est un IS de k points dans G, alors I2 = {(u,u’) : u, u’  I}
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 I2 = {(u,u’) : u, u’  I} est un IS de k2 points dans G2. : Si I2 est un IS de k2 points dans G2, alors U = {u: (u,u’)  I2 pour un u’  V} est un IS de G. Si U a au moins k points on a gagné. Sinon, pour chaque u  U, l’ensemble Wu = {v: (u,v)  I2} est aussi un IS dans G. Puisque I2 = Wu1  ...  Wut (avec t < k) un de ces ensembles a une taille au moins k.

95 Si MAX-IS est r-approximable par l’algorithme A en temps nc
Si MAX-IS est r-approximable par l’algorithme A en temps nc. Supposons que G est un graphe avec ensemble indépendant maximal de taille k. 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. En itérant cette construction, on peut obtenir un degré d’approximation 4pr, 8pr, etc... Donc IS 2 PTAS.

96 Il existe un algorithme d’approximation simple qui obtient un ratio d’approximation (k+1) où k est le degré maximal d’un sommet du graphe. Aucun algorithme d’approximation plus performant n’est connu pour le problème IS restreint aux instances où le degré maximal est k.

97 Comparer les degrés 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é.

98 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 + .

99 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.

100 (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.

101 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.

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

103 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. Valeurs: si s  S() et s ne satisfait pas , alors v(,s) = 1. Si s satisfait  alors v(,s) = xi = 1 wi.

104 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.

105 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.

106 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 () = .

107 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).

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

109 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|).

110 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.

111 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.

112 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).

113 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.

114 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)!

115 Algorithme exact pour VC
Algorithme exact 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}.

116 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|).

117 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.

118 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.

119 Algorithme de recuit simulé
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.

120 Algorithmes génétiques
Large classe d’algorithmes qui maintiennent une liste de solutions avec leur valeur et génèrent de nouvelles solutions potentielles en “croisant” les solutions.

121 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 ont de nombreuses qualités.

122 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.

123 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.

124 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