Schémas d approximation MTH6311 S. Le Digabel, École Polytechnique de Montréal H2014 (v2) MTH6311: Schémas d approximation 1/17
Plan 1. Introduction 2. Problème du sac à dos MTH6311: Schémas d approximation 2/17
1. Introduction 2. Problème du sac à dos MTH6311: Schémas d approximation 3/17
Définition Un algorithme A est un schéma d approximation pour un problème P si pour tout ε > 0 et pour toute instance I de P, cet algorithme permet de déterminer en temps polynomial en I une solution de valeur A(I) telle que OPT(I) A(I) (1 + ε)opt(i) si P est un problème de minimisation. (1 ε)opt(i) A(I) OPT(I) si P est un problème de maximisation. Un schéma d approximation A est complètement polynomial si le temps requis pour déterminer A(I) est un polynôme en I et 1/ε. MTH6311: Schémas d approximation 4/17
Exemple 1 Montrer qu il n existe probablement aucun schéma d approximation complètement polynomial pour le deuxième problème de bin packing, dans lequel on veut minimiser le nombre de sacs. MTH6311: Schémas d approximation 5/17
1. Introduction 2. Problème du sac à dos MTH6311: Schémas d approximation 6/17
Schéma d approximation pour le sac à dos SAD3 Poser k min{ 1/ε 2, n} et best 0 Pour tout sous-ensemble K {1, 2,..., n} tel que K k et w i W i K Appliquer SAD2 à I K obtenue en ne considérant que les O j tels que j / K et v j min{v r : r K}, avec la capacité W i K w i Soit J K les indices de la solution Si v i + SAD2(I K ) > best i K Mémoriser K J K (meilleure solution) best v i + SAD2(I K ) i K MTH6311: Schémas d approximation 7/17
Exemple 2 Analyser si l algorithme SAD3 est un schéma d approximation pour le problème du sac à dos. MTH6311: Schémas d approximation 8/17
Schéma d approximation complètement polynomial pour le sac à dos Considérons le problème du sac à dos avec capacité W et n objets O 1, O 2,..., O n de poids w i et de valeur v i, pour i {1, 2,..., n}. Étant donné k {1, 2,..., n} et un entier positif z, nous allons considérer le problème dual DSAD(k, z) suivant qui consiste à déterminer la plus petite capacité de sac nécessaire pour atteindre une valeur z à l aide des objets O 1, O 2,..., O k : k min w i x i x i=1 k v s.c. i x i z i=1 x i {0, 1} pour tout i {1, 2,..., n}. MTH6311: Schémas d approximation 9/17
Schéma d approximation complètement polynomial pour le sac à dos (suite) Si on note OPT(I) la valeur optimale d une instance I du sac à dos et DSAD(I,k,z) la valeur optimale du problème DSAD(k, z), on a, par la dualité : DSAD(I, n, z) W OPT(I) z. Résoudre le problème du sac à dos revient donc à déterminer la valeur z maximale telle que DSAD(I, n, z ) W, et on aura OPT(I)= z. Ceci peut être réalisé à l aide d un algorithme de programmation dynamique. MTH6311: Schémas d approximation 10/17
Schéma d approximation complètement polynomial pour le sac à dos : Algorithme de programmation dynamique DSAD(I,1,z)= w 1 si 0 < z v 1 0 si z = 0 si z > v 1 DSAD(I,k,z)= min { w k + DSAD(I, k 1, max{0, z v k }), DSAD(I, k 1, z) } pour tout k > 1. MTH6311: Schémas d approximation 11/17
Schéma d approximation complètement polynomial pour le sac à dos (suite) Notons V la valeur totale de tous les objets, et soit U une borne supérieure sur OPT(I). On a donc OPT(I) U V. On peut ainsi calculer DSAD(I,k,z) pour tout k {1, 2,..., n} et pour tout z {0, 1,..., U}. On peut donc déterminer OPT(I) en temps O(nU) O(nV ). Ce n est pas un algorithme polynomial car V n est pas polynomial en la taille de l instance I : On dit qu il s agit d un algorithme pseudo-polynomial. MTH6311: Schémas d approximation 12/17
Exemple 3 Soit le problème suivant de sac à dos à 7 objets avec W = 9 : i 1 2 3 4 5 6 7 v i 6 5 8 9 6 7 3 w i 2 3 6 7 5 9 4 Donner le tableau de programmation dynamique pour z {0, 1,..., 16} et k {1, 2,..., 7}. MTH6311: Schémas d approximation 13/17
Schéma d approximation complètement polynomial pour le sac à dos (suite) Soit une instance I. Étant donné s > 0, on note Is l instance obtenue en remplaçant chaque v i par v i /s. Soit X l ensemble des indices des objets à prendre pour obtenir la solution optimale de I, et soit X s l ensemble des indices des objets à prendre pour obtenir la solution optimale de I s. On note A(I) la valeur totale des objets d indices appartenant à X s. On a A(I)= v i s v i /s s v i /s i X s i X s i X > (v i s) = OPT(I) s X OPT(I) sn. i X MTH6311: Schémas d approximation 14/17
Schéma d approximation complètement polynomial pour le sac à dos (suite) Si s ε OPT(I)/n alors on a montré que A(I) > OPT(I) εopt(i) = (1 ε)opt(i). On peut par exemple choisir s = εv/n 2 puisque V/n max{v 1, v 2,..., v n } OPT(I), ou s = εsad2(i)/n car SAD2(I) OPT(I). MTH6311: Schémas d approximation 15/17
Schéma d approximation complètement polynomial pour le sac à dos : Algorithme SAD4 1. Exécuter SAD2(I) 2. Si ε < 2n/SAD2(I) Déterminer OPT(I) à l aide de la programmation dynamique avec 2 SAD2(I) comme borne supérieure sur OPT(I) Sinon Poser s ε SAD2(I)/n 2 3. Construire l instance I s en remplaçant chaque v i par v i /s 4. Déterminer OPT(I s ) à l aide de la programmation dynamique avec 2 SAD2(I)/s comme borne supérieure sur OPT(I s ) MTH6311: Schémas d approximation 16/17
Exemple 4 Montrer que l algorithme SAD4 est un schéma d approximation complètement polynomial pour le problème du sac à dos. MTH6311: Schémas d approximation 17/17