Sch´
emas d’approximation
MTH6311
S. Le Digabel, ´Ecole Polytechnique de Montr´eal
H2018
Plan
1. Introduction
1. Introduction
D´
efinition
Un algorithme A est unsch´ema d’approximation pour un probl`eme P si pour tout ε > 0 et pour toute instance I de P , cet algorithme permet de d´eterminer en temps polynomial en |I| une solution de valeur A(I) telle que
I OPT(I) ≤ A(I) ≤ (1 + ε)OPT(I) si P est un probl`eme de minimisation.
I (1 − ε)OPT(I) ≤ A(I) ≤ OPT(I) si P est un probl`eme de maximisation.
Un sch´ema d’approximation A estcompl`etement polynomial si le temps requis pour d´eterminer A(I) est un polynˆome en |I| et 1/ε.
Exemple 1
Montrer qu’il n’existe probablement aucun sch´ema d’approximation compl`etement polynomial pour le deuxi`eme probl`eme de bin packing, dans lequel on veut minimiser le nombre de sacs.
1. Introduction
Sch´
ema d’approximation pour le sac `
a dos
SAD3
Poser k ← min{d1/εe − 2, n} et best ← 0 Pour tout sous-ensemble K ⊆ {1, 2, . . . , n}
tel que |K| ≤ k et P
i∈K
wi ≤ W
Appliquer SAD2 `a IK obtenue en ne
consid´erant que les Oj tels que
j /∈ K et vj ≤ min{vr: r ∈ K},
avec la capacit´e W −Pi∈Kwi
Soit JK les indices de la solution
Si P
i∈K
vi+ SAD2(IK) > best
M´emoriser K ∪ JK (meilleure solution)
best ← P
i∈K
Exemple 2
Analyser si l’algorithme SAD3 est un sch´ema d’approximation pour le probl`eme du sac `a dos.
Sch´
ema d’approximation compl`
etement polynomial
pour le sac `
a dos
Consid´erons le probl`eme du sac `a dos avec capacit´e W et n objets O1, O2, . . . , On de poids wi et de valeur vi, pour i ∈ {1, 2, . . . , n}.
´
Etant donn´e k ∈ {1, 2, . . . , n} et un entier positif z, nous allons consid´erer le probl`eme dual DSAD(k, z) suivant qui consiste `a d´eterminer la plus petite capacit´e de sac n´ecessaire pour atteindre une valeur z `a l’aide des objets O1, O2, . . . , Ok :
min x k P i=1 wixi s.c. k P i=1 vixi≥ z xi ∈ {0, 1} pour tout i ∈ {1, 2, . . . , n}.
Sch´
ema d’approximation compl`
etement polynomial
pour le sac `
a dos (suite)
Si on note OPT(I) la valeur optimale d’une instance I du sac `a dos et DSAD(I,k,z) la valeur optimale du probl`eme DSAD(k, z), on a, par la dualit´e :
DSAD(I, n, z) ≤ W ⇔ OPT(I) ≥ z .
R´esoudre le probl`eme du sac `a dos revient donc `a d´eterminer la valeur z∗ maximale telle que DSAD(I, n, z∗) ≤ W , et on aura OPT(I)= z∗.
Ceci peut ˆetre r´ealis´e `a l’aide d’un algorithme de programmation dynamique.
Sch´
ema d’approximation compl`
etement polynomial
pour le sac `
a dos : Algorithme de programmation
dynamique
DSAD(I,1,z)= w1 si 0 < z ≤ v1 0 si z = 0 ∞ si z > v1 DSAD(I,k,z)=minwk+ DSAD(I, k − 1, max{0, z − vk}) , DSAD(I, k − 1, z)
pour tout k > 1.
Sch´
ema d’approximation compl`
etement polynomial
pour le sac `
a dos (suite)
I Notons V la valeur totale de tous les objets, et soit U une borne sup´erieure sur OPT(I).
I On a donc OPT(I)≤ U ≤ V .
I On peut ainsi calculer DSAD(I,k,z) pour tout k ∈ {1, 2, . . . , n} et pour tout z ∈ {0, 1, . . . , U }.
I On peut donc d´eterminer OPT(I) en temps O(nU ) ⊆ O(nV ).
I 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.
Exemple 3
Soit le probl`eme suivant de sac `a dos `a 7 objets avec W = 9 :
i 1 2 3 4 5 6 7
vi 6 5 8 9 6 7 3
wi 2 3 6 7 5 9 4
Donner le tableau de programmation dynamique pour z ∈ {0, 1, . . . , 16} et k ∈ {1, 2, . . . , 7}.
Sch´
ema d’approximation compl`
etement polynomial
pour le sac `
a dos (suite)
I Soit une instance I. ´Etant donn´e s > 0, on note Is l’instance obtenue en rempla¸cant chaque vi par bvi/sc.
I Soit X∗ l’ensemble des indices des objets `a prendre pour obtenir la solution optimale de I, et soit Xs l’ensemble des indices des objets `a prendre pour obtenir la solution optimale de Is.
I On note A(I) la valeur totale des objets d’indices appartenant ` a Xs. I On a A(I)= P i∈Xs vi ≥ s P i∈Xs bvi/sc ≥ s P i∈X∗ bvi/sc > P (v − s) = OPT(I) −s|X∗| ≥ OPT(I)−sn.
Sch´
ema d’approximation compl`
etement polynomial
pour le sac `
a dos (suite)
I Si s ≤ ε OPT(I)/n alors on a montr´e que
A(I) > OPT(I) − εOPT(I) = (1 − ε)OPT(I) .
I On peut par exemple choisir
I s = εV /n2puisque V /n ≤ max{v
1, v2, . . . , vn} ≤ OPT(I), ou I s = εSAD2(I)/n car SAD2(I) ≤ OPT(I).
Sch´
ema d’approximation compl`
etement polynomial
pour le sac `
a dos : Algorithme
SAD4
1. Ex´ecuter SAD2(I)
2. Si ε < 2n/SAD2(I)
D´eterminer OPT(I) `a l’aide de la
programmation dynamique avec 2×SAD2(I)
comme borne sup´erieure sur OPT(I)
Sinon
Poser s ← ε SAD2(I)/n ≥ 2
3. Construire l’instance Is en rempla¸cant
chaque vi par bvi/sc
4. D´eterminer OPT(Is) `a l’aide de la
Exemple 4
Montrer que l’algorithme SAD4 est un sch´ema d’approximation compl`etement polynomial pour le probl`eme du sac `a dos.