Algorithmes d’approximation et Big Data Lionel Eyraud-Dubois et Olivier Beaumont 2015-2016

publicité
Algorithmes d’approximation
et Big Data
Lionel Eyraud-Dubois et Olivier Beaumont
2015-2016
Dans ce cours : Algorithmes d’approximation
I
Définition
I
Algorithmes gloutons : Vertex Cover, TSP, Bin Packing
I
Approximation pour l’ordonnancement
I
À base de programmes linéaires
I
Schémas d’approximation : Sac à Dos
I
Énumération partielle :
Problèmes d’optimisation
Définition :
(problème d’optimisation)
Un problème d’optimisation est défini par un ensemble d’instances
I, et pour chaque instance I ∈ I :
I
un ensemble de solutions valides S(I )
I
Une fonction objective f : S(I ) → Q (ou N)
Définition :
(problème de décision associé)
Le problème de décision associé à un problème d’optimisation P
est DecP défini par :
I
IDecP = IP × Q
I
+
IDec
= {(I , v )/∃s, fI (s) ≤ v }
P
(≥ v si maximisation)
Algorithmes d’approximation
Définition :
(approximation relative)
Un algorithme A est une ρ-approximation d’un problème P si :
1. Il résoud P : ∀I ∈ IP , A(I ) ∈ SP (I )
2. En temps polynomial : ∃p poly, ∀I ∈ IP , temps(A, I ) ≤ p(|I |)
3. De manière approchée : ∀I ∈ IP , ∀s ∈ SP (I ), f (A(I )) ≤ ρf (s)
(≥ si maximisation)
I
Valeur optimale de f pour l’instance I :
Opt(I ) = mins∈S(I ) f (s), parfois notée f ∗ (I )
I
Alors (3) devient ∀I ∈ IP , f (A(I )) ≤ ρOpt(I ).
I
Ratio d’approximation de A :
le plus petit ρ tel que A est une ρ-approximation.
I
Approximation additive : ∀I ∈ IP , f (A(I )) ≤ Opt(I ) + µ
Plan du cours
Algorithmes gloutons
Vertex Cover
I
Présentation de la notion d’algorithme glouton
Problème VertexCover
I = {graphes}, S(G ) = {couvertures de G }, f (G , s) = card(s)
I
Étant donné un graphe, donner une couverture de taille
minimale Algorithme glouton qui n’est pas une approximation
Vertex Cover
I
Présentation de la notion d’algorithme glouton
Problème VertexCover
I = {graphes}, S(G ) = {couvertures de G }, f (G , s) = card(s)
I
Étant donné un graphe, donner une couverture de taille
minimale Algorithme glouton qui n’est pas une approximation
Random choisir un nœud au hasard jusqu’à avoir une couverture
Vertex Cover
I
Présentation de la notion d’algorithme glouton
Problème VertexCover
I = {graphes}, S(G ) = {couvertures de G }, f (G , s) = card(s)
I
Étant donné un graphe, donner une couverture de taille
minimale Algorithme glouton qui n’est pas une approximation
Random choisir un nœud au hasard jusqu’à avoir une couverture
DegMax rajouter un nœud de degré maximal jusqu’à avoir une
couverture
Vertex Cover
I
Présentation de la notion d’algorithme glouton
Problème VertexCover
I = {graphes}, S(G ) = {couvertures de G }, f (G , s) = card(s)
I
Étant donné un graphe, donner une couverture de taille
minimale Algorithme glouton qui n’est pas une approximation
Random choisir un nœud au hasard jusqu’à avoir une couverture
DegMax rajouter un nœud de degré maximal jusqu’à avoir une
couverture
I
Algorithme glouton 2-approché
Vertex Cover
I
Présentation de la notion d’algorithme glouton
Problème VertexCover
I = {graphes}, S(G ) = {couvertures de G }, f (G , s) = card(s)
I
Étant donné un graphe, donner une couverture de taille
minimale Algorithme glouton qui n’est pas une approximation
Random choisir un nœud au hasard jusqu’à avoir une couverture
DegMax rajouter un nœud de degré maximal jusqu’à avoir une
couverture
I
Algorithme glouton 2-approché
Super rajouter les deux extrémités d’une arête jusqu’à avoir une
couverture
Bonus : DegMax n’est pas une approximation
Pour k fixé, soit G = (U ∪ V , E ) le graphe biparti suivant :
I
I
U contient k nœuds
V est divisé en k parties Vi
I
I
Chaque nœud de Vi est connecté à i nœuds de U
Donc card(Vi ) = ki , et deg(u) ≤ k pour u ∈ U
U
V1
V2
P k ≥
V3
Pk
k
i=1 ( i
I
card(V ) =
I
Donc card(V ) ≥ k(log k − 1)
i
i
V4
V5 V6 V7 V8 V9 V10
− 1) = k
Pk
1
i=1 i
−k
Bonus : DegMax n’est pas une approximation
I
card(V ) ≥ k(log k − 1)
I
deg(v ) = i pour v ∈ Vi , et deg(u) ≤ k pour u ∈ U
U
V1
V2
V3
V4
V5 V6 V7 V8 V9 V10
I
U est une couverture de taille k.
I
Il est possible que Glouton prenne tous les nœuds de V : après
avoir pris Vk , Vk−1 , . . . , Vi−1 , le degré restant des nœuds de
U est ≤ i.
I
Donc ∀k ∈ N, ∃I ∈ I, f (Glouton(I )) ≥ (log k − 1)f ∗ (I )
Bonus : DegMax est une O(ln n)-approximation
Théorème :
Pour tout m, DegMax est une (1 + ln m)-approximation pour
VertexCover restreint aux graphes à au plus m arêtes.
Preuve :
I
Soit Ei = {arêtes non couvertes après i itérations}
I
Soit f ∗ la taille optimale d’une couverture de G
I
À l’étape i, on peut couvrir toutes les arêtes avec f ∗ nœuds
I
Donc le degré max. d’un nœud est au moins
I
Donc |Ei+1 | ≤ (1 −
I
|Ei | ≤ (1 −
1 i
f∗)
|E |
f ∗ (ln m
1
f ∗ ) |Ei |
∗
≤ e −i/f
|Ei |
f∗
|E |
+ 1), |Ej | < 1
I
Pour j =
I
Donc DegMax termine en au plus f ∗ (1 + ln m) itérations.
Bin Packing
Problème BinPacking
I
Instance : n entiers ai , taille de boı̂te B, avec ∀i, ai ≤ B
I
Solution
: partition de [1, n] en (Bj )1≤j≤k telles que
P
∀j, i∈Bj ai ≤ B
I
Objectif : minimiser le nombre de boı̂tes k.
I
Le problème de décision associé à BinPacking est
NP-complet.
Algorithme glouton : NextFit
S ← ∅ ; B ← ∅;
pour chaque objet i faire
si ai rentre dans B alors B ← B ∪ {i};
sinon S ← S ∪ B ; B ← {i} ;
fin
retourner S;
I
Bin Packing : NextFit
NextFit
Pour chaque objet, le rajouter dans la boı̂te courante s’il peut y
entrer. Sinon, ouvrir une nouvelle boı̂te.
Théorème :
NextFit est une 2-approximation pour BinPacking.
Preuve :
Bin Packing : NextFit
NextFit
Pour chaque objet, le rajouter dans la boı̂te courante s’il peut y
entrer. Sinon, ouvrir une nouvelle boı̂te.
Théorème :
NextFit est une 2-approximation pour BinPacking.
Preuve :
I
Soit I une instance, S =
P
i
ai . Clairement, Opt(I ) ≥
S B
.
Bin Packing : NextFit
NextFit
Pour chaque objet, le rajouter dans la boı̂te courante s’il peut y
entrer. Sinon, ouvrir une nouvelle boı̂te.
Théorème :
NextFit est une 2-approximation pour BinPacking.
Preuve :
I
I
P
ai . Clairement, Opt(I ) ≥
P
Soit (B1 , . . . , Bk ) = NextFit(I ), et Sj = i∈Bj ai
Soit I une instance, S =
i
S B
.
Bin Packing : NextFit
NextFit
Pour chaque objet, le rajouter dans la boı̂te courante s’il peut y
entrer. Sinon, ouvrir une nouvelle boı̂te.
Théorème :
NextFit est une 2-approximation pour BinPacking.
Preuve :
I
I
I
P
ai . Clairement, Opt(I ) ≥
P
Soit (B1 , . . . , Bk ) = NextFit(I ), et Sj = i∈Bj ai
Soit I une instance, S =
i
S B
.
Les objets contenus dans deux boı̂tes consécutives ne tiennent
pas dans une boı̂te : ∀j < k, Sj + Sj+1 > B
Bin Packing : NextFit
NextFit
Pour chaque objet, le rajouter dans la boı̂te courante s’il peut y
entrer. Sinon, ouvrir une nouvelle boı̂te.
Théorème :
NextFit est une 2-approximation pour BinPacking.
Preuve :
I
I
I
I
P
ai . Clairement, Opt(I ) ≥
P
Soit (B1 , . . . , Bk ) = NextFit(I ), et Sj = i∈Bj ai
Soit I une instance, S =
i
S B
.
Les objets contenus dans deux boı̂tes consécutives ne tiennent
pas dans une boı̂te : ∀j < k, Sj + Sj+1 > B
P
P
En sommant, on a (k − 1)B < k−1
j=1 Sj + Sj+1 ≤ 2
j Sj
Bin Packing : NextFit
NextFit
Pour chaque objet, le rajouter dans la boı̂te courante s’il peut y
entrer. Sinon, ouvrir une nouvelle boı̂te.
Théorème :
NextFit est une 2-approximation pour BinPacking.
Preuve :
I
I
I
I
I
P
ai . Clairement, Opt(I ) ≥
P
Soit (B1 , . . . , Bk ) = NextFit(I ), et Sj = i∈Bj ai
Soit I une instance, S =
i
S B
.
Les objets contenus dans deux boı̂tes consécutives ne tiennent
pas dans une boı̂te : ∀j < k, Sj + Sj+1 > B
P
P
En sommant, on a (k − 1)B < k−1
j=1 Sj + Sj+1 ≤ 2
j Sj
S S
Donc k − 1 < 2 B , d’où k ≤ 2 B ≤ 2Opt(I )
Bin Packing : NextFit
Théorème :
Le ratio d’approximation de NextFit est exactement 2.
Preuve :
I
Pour tout n, on considère l’instance In qui contient 2n objets :
(1, n, 1, n, . . . , 1, n), avec B = n.
I
∀n, Opt(In ) = n + 1
I
NextFit met chaque objet dans des boı̂tes différentes
I
Donc kNF (In ) = 2n
I
limn→+∞
I
NextFit n’est pas une ρ-approximation pour tout ρ < 2.
kNF (In )
Opt(In )
=2
Bin Packing : First Fit Decreasing
Autre algorithme très connu : FirstFitDecreasing
Trier les ai dans l’ordre décroissant;
∀j, Bj ← ∅;
pour chaque objet i dans l’ordre faire
Soit ji le plus petit j tel que ai rentre dans Bj ;
Bji ← Bji ∪ {i} ;
fin
retourner {Bj |Bj non vide};
Théorème
FirstFitDecreasing est une 23 -approximation asymptotique :
3
∀I , kFFD (I ) ≤ Opt(I ) + 1
2
Bin Packing : First Fit Decreasing
Théorème
∀I , kFFD (I ) ≤ 32 Opt(I ) + 1
Preuve :
I
4 catégories d’objets : A = {ai > 23 }
B = { 23 ≥ ai > 21 } C = { 12 ≥ ai > 31 }
D = { 31 ≥ ai }
Bin Packing : First Fit Decreasing
Théorème
∀I , kFFD (I ) ≤ 32 Opt(I ) + 1
Preuve :
I
I
4 catégories d’objets : A = {ai > 23 }
B = { 23 ≥ ai > 21 } C = { 12 ≥ ai > 31 } D = { 31 ≥ ai }
S’il existe dans FFD(I ) une boı̂te incluse dans D :
I
I
Pour toute boı̂te Bj (sauf la dernière), Sj > 23 B.
Donc BS > 23 · (kFFD − 1)
Bin Packing : First Fit Decreasing
Théorème
∀I , kFFD (I ) ≤ 32 Opt(I ) + 1
Preuve :
I
I
4 catégories d’objets : A = {ai > 23 }
B = { 23 ≥ ai > 21 } C = { 12 ≥ ai > 31 } D = { 31 ≥ ai }
S’il existe dans FFD(I ) une boı̂te incluse dans D :
I
I
I
Pour toute boı̂te Bj (sauf la dernière), Sj > 23 B.
Donc BS > 23 · (kFFD − 1)
Sinon, soit I 0 = I \D. Alors kFFD (I 0 ) = kFFD (I )
I
I
I
I
Clairement, Opt(I 0 ) ≤ Opt(I )
FFD est optimal pour I 0 . Dans toute solution :
Les objets de A sont seuls, au plus un objet de B par boı̂te, au
plus 2 objets de B ∪ C par boı̂te
FFD apparie optimalement les objets de C et de B.
Bin Packing : autres résultats
I
Si on ne trie pas les objets avant, on obtient FirstFit.
I
I
17
10
Si P 6= NP, il n’existe pas de ρ-approximation pour
BinPacking avec ρ < 32 .
I
I
Ratio d’approximation de FirstFit :
Pourquoi ?
On peut montrer ∀I , kFFD (I ) ≤
11
9 Opt(I )
+ 1 [Yue, 1991]
Voyageur de commerce
Tsp
I
Instance : une matrice de distance d(i, j) pour i, j ≤ n
I
Solution : un parcours de toutes les villes, i.e. une
permutation σ de [1, n]
I
Objectif : minimiser la distance du parcours σ, i.e.
P
n−1
i=1 d(σ(i), σ(i + 1)) + d(σ(n), σ(1))
I
La version de décision TspDec est NP-complet.
Si P 6= NP, il n’existe pas d’algorithme ρ-approché pour tout
ρ ≥ 1.
Pourquoi ?
I
I
Problème TriangleTsp : restreint aux matrices qui vérifient
l’inégalité triangulaire
∀i, j, k ∈ [1, n],
d(i, k) ≤ d(i, j) + d(j, k)
Voyageur de commerce avec inégalité triangulaire
TriangleTsp
Tsp tel que ∀i, j, k ∈ [1, n],
d(i, k) ≤ d(i, j) + d(j, k)
Algorithme ApproxTsp
Calculer un MST T de G ;
Choisir arbitrairement une racine u;
Parcourir T depuis u en profondeur;
Renvoyer l’ordre obtenu;
I
Théorème : ApproxTsp est une 2-approximation pour
TriangleTsp
Voyageur de commerce avec inégalité triangulaire
TriangleTsp
Tsp tel que ∀i, j, k ∈ [1, n],
d(i, k) ≤ d(i, j) + d(j, k)
Algorithme ApproxTsp
Calculer un MST T de G ;
Choisir arbitrairement une racine u;
Parcourir T depuis u en profondeur;
Renvoyer l’ordre obtenu;
I
Théorème : ApproxTsp est une 2-approximation pour
TriangleTsp
I
Si T est un arbre couvrant de poids minimum, alors
P
e=(i,j)∈T d(i, j) ≤ OptTriangleTsp
Téléchargement