É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