Cours de conception et analyse d`algorithmes

publicité
École polytechnique
Promotion 2012
Majeure informatique
Cours de conception et analyse d'algorithmes
TD 9 Recherche locale et révision
26 novembre 2013
1. Équilibrage de charge
On considère m machines identiques et une séquence de n tâches auxquelles sont associées
des charges de travail p1 , . . . , pn . Le but est de répartir les tâches de manière à équilibrer les
charges, ou autrement dit, à minimiser le maximum des sommes des charges des machines.
i. Dans un premier temps on suppose que les tâches sont distribuées arbitrairement sur
les machines au départ et que l'équilibrage se fait localement : à chaque étape, deux machines
sont mises en contact et échangent des tâches de manière à équilibrer leur charge. Autrement
dit un échange de tâches est favorable si le maximum des deux charges après l'échange est
strictement inférieur au maximum des deux charges avant l'échange.
Une distribution de charge est stable si aucun échange favorable n'est possible.
a. Montrer qu'il existe toujours une distribution de charge stable et qu'on peut l'obtenir
par recherche locale.
b. Montrer que toute distribution de charge stable a une charge maximale inférieure à
deux fois l'optimum.
ii. On considère maintenant la variante online : il faut placer les tâches sur les machines
au fur et à mesure de leur arrivée en minimisant la charge maximale. (Les tâches ne nissent
pas durant l'exercice.)
Montrer que l'algo glouton qui place chaque tâches sur la machine la moins chargée est
α-compétitif pour α = 2 ou mieux encore pour α = 2 − 1/m.
2. Arbre couvrant de degré minimum
On rappelle que le problème
Chemin Hamiltonien
suivant est NP-complet :
Donnée : un graphe G = (V, E) connexe de taille n = |V | ;
Question : existe-t-il un chemin passant une et une seule fois par chaque sommet
de G ?
On considère le problème
Arbre-Couvrant-Degré-Min
suivant :
Donnée : un graphe G = (V, E) connexe de taille n = |V | et un entier k
Question : existe-t-il un arbre couvrant T de G dont les sommets soient de degré
au plus k dans T ?
Étant donné un sous-ensemble d'arêtes F ⊂ E d'un graphe G = (V, E), on note δF (x) le degré
de x dans F , c'est-à-dire le nombre d'arêtes de F incidente à x et ∆(F ) = maxx∈V δF (x) le
degré maximal dans F . Enn on note ∆∗ (G) le minimum de ∆(T ) pour T dans l'ensemble
des arbres couvrants de G. Le problème Arbre-Couvrant-Degré-Min(G,k) est alors de
décider si ∆∗ (G) ≤ k .
1
1. Montrer que si k ≥ ∆(E) alors la réponse au problème
Min(G, k) est positive.
Arbre-Couvrant-Degré-
2. Montrer que pour tout k xé le problème k -Arbre-Couvrant-Degré-Min, qui prend
en entrée G et qui renvoie le résutat de Arbre-Couvrant-Degré-Min(G, k), est NPcomplet. (Indication : on pourra commencer montrer la NP-complétude dans le cas
k = 2).
Un arbre couvrant T de G est localement optimal si pour toute arête (u, v) de G \ T et tout
sommet w sur le chemin T [u, v] entre u et v dans T , le degré δT (w) de w dans T est au plus
égal à max(δT (u), δT (v)) + 1.
4. Proposer un algorithme pour trouver un arbre couvrant localement optimal dans un
graphe connexe G. Indication : montrer que si l'arbre couvrant T de G n'est pas localement optimal alors il existe un autre arbre couvrant T 0 de G, dont les degrés des sommets
sont plus petits que ceux de T en un certain sens.
Nous allons montrer que le degré maximal d'un arbre couvrant localement optimal donne
(presque) une approximation de ∆∗ (G) à un facteur d'approximation constant. Pour cela il
nous faut dans un premier temps un moyen d'estimer (ou au moins de minorer) ∆∗ (G).
3. Considérons un sous-ensemble de k arêtes d'un arbre couvrant T de G et soit T1 , . . . , Tk+1
les composantes connexes de T privé de ces arêtes. Montrer que si S est un ensemble
de sommets de G qui couvre toutes les arêtes de G joignant des composantes Ti et Tj
distinctes, alors le degré moyen des sommets de S dans n'importe quel arbre couvrant
T 0 de G est au moins k/|S|. En déduire qu'alors ∆∗ (G) ≥ k/|S|.
Il nous reste à montrer que dans un arbre localement optimal T on peut trouver un sousensemble d'arêtes et un ensemble S auquel appliquer la question 3. On va pour cela considérer
les ensembles Si constitués des sommets de G de degré au moins i dans T , pour tout i.
4. Montrer que pour tout i, il y au moins (i − 1)|Si | + 1 arêtes distinctes de T incidentes
aux sommets de Si (utiliser le fait que T est un arbre couvrant), et que si on supprime
ces arêtes, alors toute arête de G joignant deux des composantes obtenues est incidente
à un sommet de Si−1 (utiliser l'optimalité locale).
5. Montrer par ailleurs que pour toute constante c > 1 il existe i ≥ ∆∗ (T ) − logc n tel que
0 < |Si−1 | ≤ c|Si |.
6. Déduire des questions précédentes que le degré maximal d'un arbre localement optimal
T est au plus c∆∗ (G) + dlogc ne.
3. Algorithme approché pour la couverture par sommets (Pâle 2010)
On rappelle que le problème CouvrantMin(G) consiste à trouver dans un graphe G un
ensemble couvrant de cardinal minimum où un ensemble S de sommets est couvrant si chaque
arête de G a au moins une de ses extrémités dans S .
On suppose dans un premier temps que le graphe est connexe et on considère l'algorithme
suivant : choisir un sommet x0 arbitraire, construire un arbre couvrant en profondeur de G à
partir de x0 et renvoyer l'ensemble des sommets qui ne sont pas des feuilles (i.e. qui ont au
moins un descendant dans l'arbre).
On rappelle qu'un arbre couvrant en profondeur de racine x0 s'obtient comme ensemble des
arêtes marquées par l'appel DFS(x0 ) où DFS est la procédure de parcours récursif suivante :
2
DFS(x) : tant que x a un voisin y encore non visité
faire { marquer l'arête {x, y} et faire DFS(y )}
1. Donner la complexité de cet algorithme en fonction des nombres n de sommets et/ou m
d'arêtes du graphe.
2. Montrer que l'ensemble obtenu est un ensemble couvrant de G.
3. Quel est le facteur d'approximation de la solution obtenue. (Indication 1 : On pourra
montrer que s'il existe un couplage à k sommet dans G (i.e. un ensemble de k arêtes
disjointes) alors tout ensemble couvrant de G contient au moins k sommets. Indication 2 :
colorier les sommets internes de l'arbre couvrant alternativement en deux couleurs et
utiliser la couleur la plus fréquente pour construire un couplage ).
4. Adapter l'algorithme au cas où le graphe n'est plus nécessairement connexe. Quel est
alors le facteur d'approximation obtenu ?
4. Équilibrage de charge (Pâle 2013)
On considère un problème d'équilibrage de charge sur m machines {s1 , . . . , sm } pour une
suite de tâches T = (t1 , . . . , tn ) à eectuer : l'aectation de la tâche ti ∈ T à la machine sj
induit une charge c(i, j) correspondant au temps d'exécution de cette tâche sur cette machine ;
la charge totale d'une machine est la somme des temps correspondant aux tâches qui lui sont
assignées ; le but est d'aecter les tâches aux machines de façon à minimiser le maximum des
charges totales des machines. On appelera valeur d'une aectation ce maximum. La valeur de
la meilleure aectation possible connaissant T est notée C ∗ (T ).
On s'intéresse à la version online du problème dans laquelle les tâches arrivent une à une
et doivent être aectées immédiatement, sans possibilité de revenir en arrière. On suppose
connu l'ensemble des types de tâches susceptibles de devoir être traitées, seul le nombre de
tâches de chaque type et l'ordre dans lequel ces tâches seront proposées est inconnu. Le but
de l'exercice est de concevoir un algorithme online ayant un facteur de compétitivité borné
pour ce problème.
Supposons dans un premier temps qu'on dispose d'un algorithme online affecte(α), paramétré par un réel α > 0, et d'une constante β ≥ 1, telle que pour tout α > 0, et toute
séquence de taches T = (t1 , . . . , tn ),
Si α < C ∗ (T ), l'algorithme affecte(α) échoue lors du traitement de la k ème tâche pour
un certain k ≤ n, et renvoie une aectation des k − 1 premières tâches de valeur au plus
αβ .
Si α ≥ C ∗ (T ), l'algorithme affecte(α) construit une aectation des n tâches de valeur
au plus αβ .
1. Montrer qu'on peut utiliser l'algorithme affecte(α) pour résoudre notre problème d'affectation online avec un facteur de compétitivité de 4β .
Au vu de la question précédente le problème se ramène à concevoir l'algorithme affecte(α).
On suppose dorénavant α xé et on normalise les données du problème : soit c̄(i, j) = c(i, j)/α
et Si = {sj ∈ S | c̄(i, j) < 1}.
2. Montrer que s'il existe une aectation de valeur inférieure ou égale à α alors elle aecte
la tâche ti à une machine de Si .
À une suite de tâche T à traiter on associe le programme linéaire entier (P ) à n · m variables
suivant :
3
maximiser :
X X
yi,j
ti ∈T sj ∈Si
sous les contraintes :
∀ti ∈ T,
X
yi,j ≤ 1
sj ∈Si
X
∀sj ∈ S,
c̄(i, j)yi,j ≤ 1
ti ∈T,sj ∈Si
3. Écrire le programme dual (on notera xj , j = 1, . . . , m et zi , i = 1, . . . , n les variables
duales).
4. Montrer que si α ≥ C ∗ (T ) alors l'optimum du problème linéaire (P ) est exactement
n, et en déduire que dans ce cas il n'existe pas de solution au problème dual de valeur
strictement inférieure à n.
On considère maintenant l'algorithme suivant :
Initialisation : ∀j , xj := 1/(2m), ∀i, zi := 1, ∀i, j , yi,j := 0.
à chaque fois qu'une nouvelle tâche ti arrive,
1. si Si = ∅ ou s'il existe une machine xj avec xj > 1 échouer.
2. sinon
(a) soit s` ∈ Si une machine minimisant c̄(i, `)x` ,
(b) Assigner la tâche ti à la machine s` ,
(c) Faire zi := 1 − c̄(i, j)x` et yi,` := 1,
(d) Faire x` := x` (1 + 21 c̄(i, `)).
5. Montrer que la charge de chaque machine est au plus O(log m) à la n de l'exécution de
l'algorithme. (indication : on montrera qu'on a toujours xj ≤ 3/2 et on liera la valeur
nale de xj à la valeur de la charge nale sur la machine sj )
6. Montrer que si l'algorithme échoue à l'étape (1) alors le programme dual admet une
solution de valeur strictement inférieure à n.
7. Conclure à l'existence d'un algorithme de facteur de compétitivité O(log m).
4
Téléchargement