Algorithmes d ’approximation Module IAD/M2/RO/RP Philippe Chrétienne
Plan du chapitre Problème de recherche Algorithme d ’approximation Garanties Exemples (bin-packing, TSP) Approximation et complexité
Problème de recherche Un problème est dit « de recherche » si: à tout énoncé I de est associé un ensemble S*(I) de solutions. Un algorithme qui résout doit: pour tout énoncé I écrire une solution de S*(I) si S*(I)≠, sinon écrire « pas de solution pour cet énoncé ». Un problème d ’optimisation (minimisation ou maximisation) est un problème de recherche pour lequel S*(I) est défini à partir: - d ’un ensemble de solutions candidates S(I), - d ’une fonction objectif fI: S(I) . S*(I) = {s S(I)fI(s) est optimal}
Exemples de problèmes d ’optimisation : TSP (voyageur de commerce) I défini à partir d ’une matrice D des distances entre n villes. Une solution candidate est un tour. Une solution est un tour de longueur totale minimale. SAC à DOS I défini à partir - d ’un ensemble d ’articles A, - d ’une fonction poids p: A , - d ’une fonction valeur v : A , - d ’un poids maximum P. Une solution candidate est un sous-ensemble d ’articles de poids ≤ P Une solution est une solution candidate de valeur maximale.
Algorithme d ’approximation Soit un problème d ’optimisation. On suppose que la fonction objectif fI est à minimiser. On suppose que pour tout énoncé I: S(I) est non vide et fini. On note alors fI * = Min{fI(s)s S(I) } la valeur (optimale) d ’une solution. On a alors S*(I)= {s S(I) fI(s) = fI*} Un algorithme d ’approximation  pour doit fournir, pour tout énoncé I de et en temps polynomial en la longueur l(I) de l ’énoncé I : une solution candidate (notée Â(I)) de valeur fI(Â(I)) « assez proche » de fI*.
Garanties relatives Garanties absolues On suppose que pour tout énoncé I: fI*>0 Un algorithme d ’approximation  pour le problème de minimisation (,fI) offre la garantie relative 1+ si pour tout énoncé I de : fI(Â(I)) ≤ (1 + ) fI*. Un algorithme d ’approximation  pour le problème de maximisation (,fI) offre la garantie relative 1- si pour tout énoncé I de : fI(Â(I)) ≥ (1 - ) fI*. Garanties absolues Un algorithme d ’approximation  pour le problème de minimisation (,fI) offre la garantie absolue si pour tout énoncé I de : fI(Â(I)) - fI* ≤ . Un algorithme d ’approximation  pour le problème de maximisation (,fI) offre la garantie absolue si pour tout énoncé I de : fI*- fI(Â(I)) ≤ .
Taux de performance de  (problème de minimisation) Le taux de performance (Â) de  est défini par : (Â) = Sup {fI(Â(I))/fI* I D } Si 1+ est une garantie relative offerte par Â, alors 1+ est un majorant de (Â). Souvent, on ne sait pas calculer (Â) . Si on détermine un énoncé J de tel que: fJ(Â(J)) = (1 + ) fJ* alors on a : (Â) = (1 + ). L ’ énoncé J représente alors un plus mauvais cas pour Â.
Exemples BIN PACKING Donnée: n articles A1, A2, …. , An; pour chaque Ai, sa hauteur h i (0 < h i < 1). Une solution candidate est une partition B1, B2, … , BK des n articles telle que pour toute « boîte » Bk: Ai Bk h i ≤ 1. Une solution est une solution candidate pour laquelle le nombre K de boîtes est minimum. Remarque: BIN PACKING est un problème difficile (NP-complet au sens fort)
L ’algorithme d ’approximation FIRST FIT (FF) Etape courante (r(Bi) est la hauteur résiduelle de la boîte Bi): Soit P = (A1, A2, …. , A p-1) la liste des articles déjà placés; Soit B = (B1, B2, …. , Bk-1) la liste des boîtes déjà utilisées; Si, pour toute boîte Bi de B: r(Bi) < hp, alors B := B. (Bk) ; %créer une nouvelle boîte% r(Bk):= 1- hp; K:=K+1 sinon %placer l ’article dans la première boîte possible% soit Bj la première boîte de B telle que r(Bj)≥ hp; r(Bj):= r(Bj)-hp Finsi
Notons NFF(I) le nombre de boîtes de FF(I). Propriété : FF est un algorithme d ’approximation de BIN PACKING fournissant la garantie relative 2 : pour tout I : NFF(I) ≤ 2 fI*. Notation : H = i=1..n h i Lemme 1: fI* ≥ H Preuve: Si l ’on pouvait « couper » les articles, le nombre minimum de boîtes serait égal à H. Lemme 2: Soit B = (B1, B2, …. , BK) la liste des boîtes de FF(I). Au plus une boîte Bj satisfait r(Bj)≥1/2. Preuve (récurrence sur le nombre d ’articles placés): La propriété est vraie pour le 1er article. Supposons qu ’elle reste vraie après le placement des p-1 premiers articles.
Si pour toute boîte Bj,on a r(Bj) < 1/2, alors la propriété reste vraie, que l ’on crée une boîte ou pas pour placer l ’article Ap. S’il existe une boîte Bj telle que r(Bj)≥ 1/2, alors si hp ≤ 1/2, la propriété reste vraie car on peut placer Ap dans Bj ; si hp > 1/2, la propriété reste encore vraie, car si FF crée une nouvelle boîte Bk pour Ap, on a: r(Bk) < 1/2. Preuve de la propriété: Soit B = (B1, B2, …. , BK) la liste des boîtes de FF(I). On a j=1..K (1-r(Bj)) = H. D ’après le lemme 2, on a 1- r(Bj) > 1/2 pour au moins K-1 indices, on a donc j=1..K (1-r(Bj)) > (K-1)/2. Il en résulte que K-1 < 2H. On a donc (lemme 1) : K = NFF(I) ≤ 2H ≤ 2 H ≤ 2 fI*.
Remarques: 1) L ’algorithme FF fournit une meilleure garantie que 2. On a pu montrer que: pour tout I: NFF(I) ≤ (17/10) fI* + 2 De plus, il existe des énoncés pour lesquels on a l ’égalité. 2) L ’ intuition dit que l ’on a intérêt à placer en priorité les articles les plus hauts. L ’algorithme associé FFD (FIRST FIT DECREASING) est identique à FF sauf qu ’il commence par trier articles par hauteur décroissante au sens large. On a pu montrer (preuve très longue et difficile) que: pour tout I: NFFD(I) ≤ (11/9) fI* + 4 De plus, il existe des énoncés pour lesquels on a l ’égalité.
TSP euclidien Donnée: une matrice D des distances (euclidiennes) entre n villes. Pour tout triplet de villes {i,j,k}: D(i,j)≤ D(i,k)+D(k,j) . Une solution candidate est un tour, c ’est-à-dire une permutation (i1, i2, …. , in) des n villes. Une solution est un tour (i1, i2, …. , in) dont la longueur D(i1,i2)+ D(i2,i3)+ ….+ D(in-1 ,in) + D(in,i1) est minimum. Remarque: TSP euclidien est un problème difficile (NP-complet au sens fort)
Un algorithme d ’approximation  pour TSP euclidien. 1. Déterminer un arbre couvrant H= (V,E) de coût minimum sur le graphe complet des n villes valué par les distances D(i,j). 2. Construire le graphe K= (V, F) obtenu à partir de H en remplaçant chaque arête {u,v} de E par un arc (u,v) et un arc (v,u) valués chacun par D(u,v). 3. Déterminer un circuit eulérien C de K à partir d ’un parcours en profondeur de K. 4. Déterminer le tour obtenu à partir de C en utilisant les arêtes du co-arbre de H pour ne pas repasser 2 fois par le même sommet intermédiaire.
1. Déterminer un arbre couvrant H= (V,E) de coût minimum sur le graphe complet des n villes valué par les distances D(i,j).
2. Construire le graphe K= (V, F) obtenu à partir de H en remplaçant chaque arête {u,v} de E par 2 arcs (u,v) et (v,u) valués par D(u,v).
3. Déterminer un circuit eulérien C de K à partir d ’un parcours en profondeur de K. 1 10 9 6 2 5 8 4 3 7
4. Déterminer le tour obtenu à partir de C en utilisant les arêtes du co-arbre de H pour ne pas repasser 2 fois par un même sommet. 1 2 3 4 5 6 7 8 9 10
Notons l(H) la longueur de l ’arbre H. Soit T*(I) un tour optimal. En supprimant une arête de T*(I), on obtient un arbre couvrant H ’(I) du graphe complet des n villes. Comme H est de longueur minimum, on a : l(H) ≤ l(H ’(I)) ≤ fI* Par définition d ’un circuit eulérien, on a: l(C)= 2 l(H). Par construction du tour Â(I) et en utilisant l ’inégalité triangulaire, on a: l(Â(I)) ≤ l(C). Il en résulte que: l(Â(I)) ≤ 2 fI*.
Complexité et Approximation Question: Etant donné: un problème d ’optimisation difficile , une garantie relative 1+ , peut-on toujours trouver un algorithme d ’approximation pour fournissant cette garantie? Soit B un entier naturel strictement positif. On note (B) le problème de décision associé à : Existe t ’il une solution candidate s telle que f(s) ≤ B? Propriété: Si (B) est NP-complet, l ’existence d ’un algorithme d ’approximation fournissant une garantie inférieure à (1+1/B) implique P=NP.
Preuve de la propriété. Supposons que l ’algorithme  fournisse la garantie relative (1+ ) strictement inférieure à (1+1/B) pour . Soit I un énoncé de (B). Si I est un énoncé à réponse « oui », on a: 1) fI* ≤ B, 2) fI(Â(I)) ≤ (1+ ) fI* ≤ B. Si I est un énoncé à réponse « non », on a: 1) fI* > B, 2) fI(Â(I)) > B. Il en résulte que la valeur fI(Â(I)) permet de décider si I est à réponse « oui » ou « non ». Comme f(Â(I)) est calculable en temps polynomial, on a P=NP.
Les garanties absolues sont plutôt rares. Pour certains problèmes NP-complets, l ’existence d ’une garantie absolue numérique implique P=NP. Exemple: SAC à DOS. Propriété: Si un algorithme d ’approximation  fournit une garantie absolue numérique pour le problème SAC à DOS, alors P=NP Preuve: Supposons que  fournisse la garantie absolue pour SAC à DOS. (on peut supposer entier strictement positif)
Soit I= (A, p, P, v) un énoncé de SAC à DOS. Considérons maintenant l ’énoncé I ’= (A, p, P, (1+ )v) Par définition de I ’, I et I ’ ont les mêmes solutions candidates. Si s est une solution candidate, on a: fI ’(s)=(1+ ) fI(s). I et I ’ ont donc la même solution optimale. On a donc : fI ’* = (1+ ) fI*. En appliquant  à I ’, on a: f I ’* - f I ’(Â(I ’)) ≤ . Soit encore: (1+ ) (f I * - f I (Â(I ’)) ≤ . Il en résulte que: f I * = f I (Â(I ’)) et donc que Â(I ’) est une solution optimale de I. On a donc P=NP.