École polytechnique Promotion 2011 Majeure informatique Cours conception et analyse d'algorithmes TD 7 Algorithmes d'approximation 13 novembre 2013 1. Voyageur de commerce avec inégalité triangulaire n sommets numérotés de 1 à n n(n − 1)/2 arêtes) ; à chaque arête est associée une distance. Le voyageur de commerce part du sommet 1 du graphe, et passe une fois et une seule par chacun des autres sommets du graphe avant de nalement revenir en 1, et ce en parcourant la distance minimale. La version décision" de ce problème est un problème N P -complet. On suppose que la distance vérie l'inégalité triangulaire : pour tous sommets u, v et w , d(u, v) ≤ d(u, w) + d(w, v). On considère l'algorithme suivant : • calculer un arbre couvrant minimal T enraciné en 1. • renvoyer le tour H obtenu en parcourant les sommets dans l'ordre préxe associé à l'arbre T . Ce problème consiste en la donnée d'un graphe complet non-orienté à (et donc i. Quelle est la complexité de cet algorithme ? ii. H∗ H ∗. Soit totale de iii. 2c(T ). iv. une tournée optimale. Montrer que le poids c(T ) de En utilisant l'inégalité triangulaire, montrer que la longueur T est inférieur ou égal à la longueur c(H) de H est inférieure ou égale à En déduire un algorithme d'approximation à un facteur 2. Montrer qu'il existe des cas où l'algorithme construit un tour de coût supérieur à (2 − )c(H ∗ ), et donc que l'analyse ne peut pas être améliorée. 2. Séparation complète (Pâle 2013) G = (V, E), muni d'une fonction de coût c(e) ≥ 0 pour chaque e ∈ E , et k sommets v1 , . . . , vk . Un séparateur complet des {v1 , . . . , vk } dans G est un ensemble d'arêtes F tel que pour tout i 6= j dans {1, . . . , k}, il n'y a pas de chemin de vi à vj dans G \ F . Le coût d'un séparateur F est la somme des coûts des arêtes qui le compose. Le problème de séparation complète ∗ optimale est de trouver un séparateur complet F de coût minimal parmi tous les séparateurs complets. On se donne un graphe non orienté arête F , on note Gi [F ] l'ensemble des sommets accessibles depuis G \ F et Fi le sous-ensemble de F constitué des arêtes ayant exactement une extrémité dans Gi [F ]. Montrer que Fi sépare vi des autres vj , j 6= i, i.e. qu'il n'y a pas de chemin de vi à un vj avec j 6= i dans G \ Fi . Soit Ei un ensemble d'arêtes qui sépare vi des autres vj et de coût minimum parmi les ensembles de ce type. Montrer qu'on peut calculer un Ei en temps polynomial. Quelle est la complexité de 1. Étant donné un séparateur complet le sommet 2. vi dans votre algorithme. 3. Déduire des questions précédentes un algorithme d'approximation à un facteur 2 pour le problème de la séparation complète des sommets {v1 , . . . , vk }. 3. Algorithme approché pour un recouvrement minimal E , une famille Si un poids w(Si ) qui est un entier positif. Il s'agit de déterminer un ensemble d'indices J ⊆ {1, . . . , m} tel que l'union des sous-ensembles ∪j∈J Sj P soit E et que la somme des poids j∈J w(Sj ) soit minimale. On admet, car ce n'est pas l'objet de la PC du jour, que Recouvrement d'ensemble est N P -complet (mais à la pale on aurait demandé de Le problème Recouvrement d'ensemble prend comme donnée un ensemble ni S = {Si }1≤i≤m de sous-ensembles de E et pour chaque le démontrer !). On considère l'algorithme glouton suivant qui calcule un recouvrement X est noté |X| et X \Y désigne l'ensemble des éléments de 1 X J (le cardinal d'un ensemble qui ne sont pas dans Y ). F ← ∅, J ← ∅. F 6= E , faire : Calculer les valeur c(Si ) = w(Si )/|Si \ F | pour tout i = 1, . . . , m. Trouver i tel que c(Si ) soit minimal. Mettre à jour F ← F ∪ Si , et J ← J ∪ {i}. Retourner l'ensemble J . Soit (Ti )1≤i≤k les ensembles du recouvrement ordonnés dans l'ordre dans Initialiser Tant que lequel ils sont ajoutés par l'algorithme glouton. 1. Soit W0 la somme des poids des sous-ensembles Montrer qu'au moins un de ces sous ensembles x1 , . . . , x n Soient 2. les éléments de E Si qui gurent dans la solution optimale. satisfait w(Si ) |Si | ≤ Ti contenant xj à l'étape où il entre dans ≤ W0 n F. F satisfait lors de cette c(Ti ) ≤ W0 /(n − j + 1). 3. En déduire que l'algorithme glouton est approché à un facteur 4. Soit les ε > 0. et soit w(T1 ) W0 n . En déduire que |T1 | dans l'ordre dans lequel ils sont ajoutés dans Montrer que le sous-ensemble étape : Si n+1 sous-ensembles suivants de Hn , où Hn = 1 + 1/2 + . . . + 1/n. E = {1, 2, . . . , n}, Si = {i} pour 1 ≤ i ≤ n et Sn+1 = E Donner des poids à ces sous-ensembles pour que le résultat de l'algorithme glouton dière de l'optimum d'un facteur Hn /(1 + ε). 4. Problèmes de placement de dépôts (pale 2012) Nous allons travailler sur des problèmes d'optimisation de placement de dépôts pour une entreprise de transport qui dessert Données : n destinations. Considérons le problème de décision (k, D)-Dépots déni par : X = {x1 , . . . , xn }, une matrice d(xi , xj ) de distance entre ces points, D. Question : Existe-t-il un sous-ensemble Y de k points de X tels que pour tout xi il existe un xj dans Y tel que d(xi , xj ) ≤ D On supposera dans toute la suite que les d(xi , xj ) sont bien des distances, i.e., satisfont l'inégalité triangulaire : d(xi , xj ) ≤ d(xi , x` ) + d(x` , xj ) pour tout i, j, `. Un ensemble de points un entier positif k et un réel positif D est xé (k ∗ , D)-Dépôts, et On commence par une variante "optimisation" du problème appelée NombreDépots : et on cherche à déterminer le Y un ensemble k∗ minimal tel qu'il existe une solution au problème réalisant une telle solution. On considère dans un premier temps l'algorithme glouton consistant à mettre un premier point D de xi xi arbitraire dans Y, supprimer tous les points à distance au plus et recommencer avec les points restants. 1. Donner un exemple pour lequel cette approche construit un ensemble de dépôts plus grand que nécessaire. On modie maintenant l'algorithme glouton pour qu'il retire les points à distance 2D du point choisi à chaque étape. 2. Montrer que lorsque ce nouvel algorithme glouton s'arrête au plus k ∗ k∗ dépôts ont été sélectionnés, où est l'optimum du problème. A-t-on obtenu une solution optimale au problème NombreDépôts ? On se tourne maintenant vers une autre variante d'optimisation du problème appelée fois-ci k est xé et on cherche le D∗ k -Dépôts : cette (k, D∗ )-Dépôts minimal tel qu'il existe une solution au problème (on cherche également à calculer une telle solution Y ). 3. Montrer comment adapter le second algorithme glouton pour qu'il trouve en temps polynomial une solution approchée à un facteur 2 au problème k -Dépôts et préciser la complexité de l'algorithme obtenu. On rappelle que le problème SetCover (ou Recouvrement d'ensembles) suivant est NP-complet : Données : entier Un ensemble Problème : 4. Z = {z1 , . . . , zn }, une famille S = {s1 , . . . , sm } de sous-ensembles de Z, et un k. Z? Montrer que s'il existe un algorithme approché à un facteur α < 2 pour le problème d'optimisation k -Dépôts, alors P=NP. Indication : On pourra montrer que le cas particulier du problème (k, D)-Dépôts avec D = 1 et Existe-t-il k sous-ensembles dans S dont la réunion soit des matrices de distances ne comportant que des 1 et des 2 est NP-complet. 2