ift-66975 contourner la np-complétude. que faire face à la np-complétude? pour une application...

124
IFT-66975 Contourner la NP- complétude

Upload: veillantif-auvray

Post on 04-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

IFT-66975

Contourner la NP-complétude

Page 2: 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

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.

Page 3: 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

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

Page 4: 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

2. 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é.

Page 5: 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

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

Page 6: 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

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

Page 7: 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

Pourquoi ne pas se contenter des heuristiques? Tentant de s’en remettre toujours

aux heuristiques mais1. Aucune garantie de complexité

algorithmique (pas trop grave en pratique)

2. Aucune garantie de performance sur la qualité des solutions trouvées.

3. En sautant sur la solution heuristique on laisse peut-être passer une solution algorithmique plus acceptable.

Page 8: 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

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.

Page 9: 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

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.

Page 10: 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

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.

Page 11: 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

De nombreux problèmes de graphe qui sont NP-complets ont des algorithmes polynomiaux lorsqu’on les restreints aux

1. graphes de degré borné;2. graphes de nombre chromatique borné

(nombre de couleurs nécessaires pour un coloriage valide);

3. graphes acycliques;4. arbres;5. forêts;6. graphes planaires;7. graphes bipartis.

Page 12: 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

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.

1. Preuve que HC p TSP montrait en fait HC p TSP2,,sym

2. Preuve que 3-SAT p DLP montrait en fait 3-SAT p DLP-source-cible.

Parfois il faut raffiner nos réductions.

Page 13: 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

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.

Page 14: 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

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.

Page 15: 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

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

Page 16: 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

2 cas possibles pour colorier le troisième point incident.

Fait à noter, les points extrèmes ont des couleurs égales 2 à 2.

Page 17: 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

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.

Page 18: 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

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.

Page 19: 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

Le gadget P a les propriétés suivantes. 1. Dans tout 3-coloriage de P, les points

extrèmes ont des couleurs égales 2 à 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.

3. P est planaire

Page 20: 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

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.

u v... On remplace cette arête par

u v... u’P PP

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

Page 21: 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

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.

Page 22: 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

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.

!!??!??

Page 23: 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

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.

Page 24: 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

0 1 2 3 ... C

0

1

2

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.

Page 25: 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

0 1 2 3 ... C

0 0 0 0 0 0 0

1 0

2 0

0

n 0

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

Page 26: 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

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!

Page 27: 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

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.

Page 28: 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

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.

Page 29: 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

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.

Page 30: 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

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

Page 31: 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

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

1. Partir de la définition et montrer que la restriction de A aux instances avec de “petits” nombres est NP-complète.

2. Construire une réduction d’un problème fortement NP-complet B vers A qui préserve la taille des entiers utilisés.

Page 32: 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

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

Page 33: 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

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.

Page 34: 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

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.

Page 35: 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

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.

Page 36: 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

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| + 1.274k). Note: log10 1.274 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.

Page 37: 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

Algorithme exact pour VC. Graphe G = (V,E) en entrée, VC optimal en sortie.

1. Entrée: choisir une arête (u,v).2. 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.

3. Si |Vu| |Vv| retourner |Vu| {u}, sinon retourner |Vv| {v}.

Page 38: 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

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

Page 39: 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

Limites de la complexité paramétréeIl 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).

Page 40: 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

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

1. (x,k) L (x’,k’) L’;2. k’ g(k) pour un certain g;3. La réduction se calcule en temps O(f(k)|x|c).

Page 41: 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

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.

Page 42: 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

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:

1. MAX-P: Étant donné x, trouver s S(x) tel que v(x,s) soit maximal.

2. MIN-P: Étant donné x, trouver s S(x) tel que v(x,s) soit minimal.

Page 43: 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

La classe NPO Définition: Un problème d’optimisation P

appartient à NPO s’il existe un polynôme p tel que

1. pour tout x et tout s S(x) on a |s| p(|x|);

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

Page 44: 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

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.

Page 45: 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

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

Page 46: 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

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

Page 47: 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

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.

Page 48: 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

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.

Page 49: 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

Algorithme: soit x1, ..., xn les variables booléennes de .

1. Pour i = 1, ..., n on considère les deux valeurs possibles 0,1 pour xi.

2. Pour les clauses cj, calculer E(Cj | xi = b). Supposons que cj contient k litéraux.

a. Si cj ne contient k ni xi, ni i, alors

E(Cj | xi = 1) = E(Cj) = (2k-1)/2k.

b. Si cj contient xi alors E(Cj | xi = 1) = 1.

c. Si cj contient i alors E(Cj | xi = 1) = (2k-1-1)/2k-1.

3. Comparer E(C | xi = 0) et E(C | xi = 1). Choisir xi = b tel que E(C | xi = b) soit maximal.

4. Répéter 1 à 3 sur la formule où les occurrences de xi sont remplacées par 0 ou 1.

Page 50: 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

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.

Page 51: 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

Deux objectifs à atteindre dans la conception d’algorithmes d’approximation:

1. Petit ratio d’approximation.2. 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.

Page 52: 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

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!

Page 53: 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

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.

Page 54: 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

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.

Page 55: 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

On a doncP 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.

Page 56: 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

Algorithmes d’approximation classiques

ProblèmeAlgorithme

d’approximation

MAX-CLIQUE O(n/log2n)

MIN-VC 2

MAX-3-SAT 8/7

MIN-BIN-PACKING 3/2

MIN-TSP 3/2

MIN-VCplanaire PTAS

MAX-KNAPSACK FPTAS

Page 57: 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

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.

Page 58: 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

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

Page 59: 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

Supposons que la capacité de chaque seau est 1 et qu’on a 18m objets.

1. 6m objets de taille 1/7 + 2. 6m objets de taille 1/3 + 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.

Page 60: 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

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!

Page 61: 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

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)

Page 62: 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

Algorithme d’approximation pour MIN-TSP.

1. Trouver en temps polynomial un arbre de recouvrement de poids minimal.

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

Page 63: 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

113

9

28

10

4

1

5

7

6

Bonne idée: de toute façon: d34 d23 + d24

Page 64: 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

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.

Page 65: 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

Min-KS pour les nuls. (algorithme d’approximation polynomial avec r = 2)

1. Ordonner les objets selon le ratio (vi / pi).

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

3. Comparer la solution obtenue à la solution qui contient l’objet de plus grande valeur. Retourner la meilleure.

Étude de cas: Problème du sac à dos

Page 66: 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

Min-KS pour les un peu moins nuls. (PTAS, ratio 1 + 1/k)

1. Former tous les ensembles possibles de k objets.

2. Pour chaque ensemble, ajouter des objets grâce à l’algorithme précédent.

3. Retourner la meilleure valeur obtenue.

Le temps de calcul est O(nk+1).

Page 67: 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

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.

Page 68: 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

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.

Page 69: 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

1 2 3 ... nV

0 1

2

n

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}

Valeur atteinte

objets disponibles

Page 70: 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

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.

Page 71: 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

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’)?

Page 72: 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

vopt(x) = iS vi iS’ vi (car S optimal)

iS vi iS’ vi iS’

vi’ (car v

i v

i’)

iS vi iS’ vi iS’

vi’ iS 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 pirevopt(x)/v(x,S’) vopt(x)/(vopt(x) – n2b) 1 + n2b/V

car on peut supposer vopt(x) – n2b V.

Page 73: 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

Qu’a-t-on en fin de compte?1. Algorithme d’approximation qui s’exécute en

temps O(n2V/2b).2. 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.

Page 74: 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

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.

Page 75: 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

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.

Page 76: 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

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.

Page 77: 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

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.

Page 78: 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

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

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

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

Page 79: 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

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.

Page 80: 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

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

Page 81: 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

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.

Page 82: 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

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

Page 83: 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

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.

Page 84: 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

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.

Page 85: 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

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 doncv(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)!.

Page 86: 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

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.

Page 87: 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

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.

Page 88: 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

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.

Page 89: 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

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.

Page 90: 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

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.

Page 91: 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

Soit G = (V,E) un graphe avec nombre chromatique (G). On construit en temps polynomial un graphe Gk de la façon suivante.

1. On crée k copies de G.2. 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.

Page 92: 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

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

Page 93: 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

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 = (VV, F) avec [(u,u’),(v,v’)] F si u = v et [u’,v’] E. ou [u,v] E.

Page 94: 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

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.

Page 95: 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

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.

Page 96: 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

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.

Page 97: 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

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

Page 98: 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

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:

1. f transforme les instances x de A en instances f(x) de B et est calculable en temps polynomial.

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

3. : Q+ Q+ est une fonction surjective calculable en temps polynomial.

4. Si rB(f(x),y)) 1 + (), alors rA(x,g(x,y,)) 1 + .

Page 99: 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

Lemme: Supposons que A PTAS B. Alors

1. Si B PTAS alors A PTAS.2. Si B APX alors A APX.

Page 100: 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

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

Page 101: 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

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.

Page 102: 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

Théorème: MAX-3-SAT est APX-complet.

Mais la démonstration requiert le théorème PCP.

Page 103: 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

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.

Page 104: 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

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.

Page 105: 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

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.

Page 106: 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

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

Page 107: 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

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

Page 108: 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

Étude de cas: VC

Le problème de couverture par sommets est NP-complet. Que faire alors?

Considérons 3 options raisonnables.

Page 109: 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

Algorithme d’approximation.

1. Initialiser V’ = .2. Tant que V’ ne couvre pas toutes

les arêtes, 1. choisir arête (u,v) non couverte.2. V’ = V’ {u,v}.

Temps d’exécution O(|E|).

Page 110: 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

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.

Page 111: 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

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.

Page 112: 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

Algorithme heuristique

1. Initialiser V’ = . 2. Tant que V’ n’est pas une VC

1. Choisir v V’ couvrant un maximum d’arêtes non-couvertes.

2. V’ = V’ {v}.

Temps d’exécution O(|E|2).

Page 113: 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

Quelle est le ratio d’approximation?

Considérons un graphe G = (V,E) dont les sommets sont répartis en k niveaux L1, ..., Lk.

1. Niveau Li contient k/i sommets.

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

Page 114: 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

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

Page 115: 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

Algorithme exact pour VC. Graphe G = (V,E) en entrée, VC optimal en sortie.

1. Entrée: choisir une arête (u,v).2. 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.

3. Si |Vu| |Vv| retourner |Vu| {u}, sinon retourner |Vv| {v}.

Page 116: 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

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

Page 117: 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

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.

Page 118: 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

Algorithme Metropolis L’algorithme est spécifié pour une constante T

judicieusement choisie.

1. Choisir une solution s au hasard et calculer v(x,s).

2. Créer une nouvelle solution s’ en choisissant aléatoirement un bit si de s et en changeant sa valeur.

3. Si v(x,s’) v(x,s), alors garder s’ et abandonner s.

4. Si v(x,s’) > v(x,s) alors garder s’ avec probabilité 5. 2-(v(x,s’) – v(x,s))/T et garder s sinon. 6. Répéter 2-4 jusqu’à l’épuisement.

Page 119: 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

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.

Page 120: 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

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.

Page 121: 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

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.

Page 122: 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

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.

Page 123: 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

Répéter 30 (4/3)n fois.1. Choisir une assignation pour les xi

au hasard. 2. Si satisfait , retourner 1. Sinon,

choisir aléatoirement une clause non-satisfaite et changer la valeur d’un des trois litéraux.

3. Répéter l’étape (2) 3n fois. Si aucun n’a été trouvé

satisfiant retourner 0.

Page 124: 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

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?