Problème : Etude de l`algorithme GLOUTON - UTC
Transcription
Problème : Etude de l`algorithme GLOUTON - UTC
Examen MEDIAN RO03 2010 Jacques Carlier Problème : Etude de l’algorithme GLOUTON Soit S un ensemble fini d’éléments e et I une famille donnée de sous-ensembles de S satisfaisant les conditions (M0) et (M1) : (M0) : l’ensemble vide appartient à I, (M1) : tout sous-ensemble d'un ensemble de I appartient à I. Ces sous-ensembles sont appelés sous-ensembles indépendants. On note c une valuation de S à valeurs entières positives ou nulles (c : S→ℕ). La valeur d’un sous-ensemble de S sera la somme des valeurs de ses éléments. On se propose de calculer un ensemble indépendant de valeur maximale et on étudie pour cela l’algorithme GLOUTON. Cet algorithme permettra dans certains cas de calculer une solution optimale (cas des matroïdes, Partie III), dans les autres cas une solution heuristique. Algorithme GLOUTON : J ← ∅; (∅ est l’ensemble vide) Tant qu’il existe e ∈ S - J avec J ∪ {e} ∈ I faire { Choisir l’élément e de c(e) maximum avec J ∪ {e} ∈ I ; Remplacer J par J ∪{e}; } PARTIE I : Quelques cas particuliers (8 pts) A. Le problème du stable de valeur maximale. Soit G = (V, E, c) un graphe non orienté dont les sommets sont valués positivement par c (c : V→ℕ). On pose S = V (l’ensemble des sommets), et on dit que J est un ensemble indépendant si c’est un stable du graphe G. a) Justifiez brièvement les conditions (M0) et (M1). b) Appliquez l’algorithme GLOUTON au graphe G1 ci-dessous, en rapportant la liste des sommets choisis successivement par l’algorithme. 8 1 3 7 Graphe G1 5 6 2 1 4 5 c) Calculez un stable de valeur maximale et comparez avec la solution calculée en b). B. Le problème du couplage de valeur maximale Soit G = (V, E, c) un graphe non orienté dont les arêtes sont valuées positivement, (c : E→ℕ). On pose S = E (ensemble des arêtes), et on dit que J⊆E est un ensemble indépendant s’il forme un couplage de G. a) Justifiez brièvement les conditions (M0) et (M1). b) Appliquez l’algorithme GLOUTON au graphe G2 ci-dessous, en rapportant la liste des arêtes choisies successivement par l’algorithme. 1 6 2 Graphe G2 5 5 4 1 3 2 4 c) Calculez un couplage de valeur maximale pour G2. Comparez à la solution calculée en b. C. Intérêt de l’algorithme GLOUTON Nous montrerons ultérieurement que cet algorithme est optimal pour la recherche de la forêt de valeur maximale. a) Est-il optimal pour le problème du stable de valeur maximale ? Est-ce surprenant ? b) Est-il optimal pour le problème du couplage de valeur maximale ? c) On se place dans le cas général de l’algorithme GLOUTON : (S, I) est tel que les conditions (M0) et (M1) sont satisfaites. Montrez que l’algorithme GLOUTON choisit les éléments de S dans un ordre décroissant de valuations : J = {e1, e2, e3, …, ep}, avec c(e1) ≥ c(e2) ≥ c(e3) … ≥ c(ep). J désignera aussi dans la suite la solution fournie par l’algorithme GLOUTON et p son cardinal. PARTIE II : Le problème de la forêt maximale (6 pts) A. Application de l'algorithme GLOUTON Soit G = (V, E, c), |V|=N et |E|= M, un graphe non orienté dont les arêtes sont valuées positivement. On pose S = E (ensemble des arêtes), et on dit que J est un ensemble indépendant si (V, J) est un graphe sans cycle, appelé aussi forêt. a) Justifiez brièvement les conditions (M0) et (M1). b) Appliquez l’algorithme GLOUTON au graphe G3 ci-dessous, en rapportant la liste des arêtes choisies successivement par l’algorithme. Comptez le nombre d’arêtes choisies. 1 7 5 2 8 5 9 3 6 4 6 4 3 7 Graphe G3 B. Complexité a) On suppose qu’une méthode pour tester si un graphe a un cycle coûte O(N). Quelle est la complexité de l’algorithme GLOUTON, en fonction de N et de M pour le problème de la forêt maximale ? b) On modifie l’algorithme de la façon suivante : Algorithme GLOUTON BIS J ← ∅; (∅ est l’ensemble vide) Classez les éléments de S en ordre de valeurs décroissantes : S ← {e1, e2, e3, …, eM}, avec c(e1) ≥ c(e2) ≥ c(e3) … ≥ c(eM); Pour j = 1 à M faire Remplacer J par J ∪ {ej} si J ∪ {ej} est indépendant; Comparez les ensembles J calculés par GLOUTON et GLOUTON BIS. c) Quelle est la complexité de l’algorithme GLOUTON BIS en fonction de N et de M ? Quel est l’intérêt de l’algorithme GLOUTON BIS ? C. Propriété On considère le problème de la forêt de valeur maximale. S=E est l’ensemble des arêtes d’un graphe G = (V,E), et A ⊆ E un sous-ensemble d’arêtes. Quel est le nombre d’arêtes d’une forêt du graphe G(A) = (V,A) en fonction du nombre r de ses composantes connexes et du nombre N de ses sommets ? On pourra décomposer G(A) en ses composantes connexes et raisonner composante connexe par composante connexe. PARTIE III : Les Matroïdes (6 pts) Le but de cette partie est de montrer que l’algorithme GLOUTON est optimal dans le cas des « matroïdes », notion que nous définissons ci-dessous : On se place dans la suite dans le cas où (S, I) est un matroïde c.a.d. satisfait outre les conditions (M0) et (M1), la condition (M2) : (M2) : Pour tout sous–ensemble A de S, indépendant ou non, les sous-ensembles de A, qui sont indépendant et maximal au sens de l’inclusion, ont la même cardinalité(1). Cette cardinalité sera notée rang(A). a) On veut comparer la valeur de J = {e1, e2, e3, …, ep} fournie par l’algorithme GLOUTON, à la valeur d’une solution optimale J’, maximale au sens de l’inclusion. On note J’ = {f1, f2, f3, …, fq}, avec c(f1) ≥ c(f2) ≥ c(f3) … ≥ c(fq). Montrez d’abord que p=q. b) On raisonne par l’absurde en supposant que J n’est pas optimale. Il existe alors un plus petit indice k tel que c(fk) > c(ek). Montrez que pour tout indice i, 1 ≤ i ≤ k, ou bien fi ∈ {e1, e2, e3,… ,ek-1}, ou bien l’ensemble {fi, e1, e2, e3,…, ek-1} n’est pas indépendant. Notons que c(fi) = c(ei) ne signifie pas nécessairement que fi = ei. De manière générale, il peut y avoir des éléments différents mais de même valuation. c) En déduire de b) que {e1, e2, e3,… ,ek-1} est un sous-ensemble de A = {f1, f2, f3, …, fk, e1, e2, e3,… ,ek-1} indépendant et maximal au sens de l'inclusion. d) Après avoir remarqué que {f1, f2, f3, …, fk} est un sous-ensemble indépendant de A de cardinal strictement supérieur à k-1, en déduire l’optimalité de l’algorithme GLOUTON dans le cas des matroïdes. e) Qu’en concluez-vous pour le problème de la forêt de valeur maximale ? Justifier. (1) : Un ensemble indépendant est dit maximal au sens de l’inclusion si aucun autre ensemble indépendant ne le contient. Examen FINAL RO03 2010 Jacques Carlier Exercice 1 (3 pts) : Flot A 1 10 s 15 B 0 10 5 5 2 5 20 5 10 5 5 5 5 C 0 20 10 10 10 15 Figure 1 : Flot sur un réseau 10 10 15 0 5 15 15 p 3 0 D Note : Sur la Figure 1, les capacités des arcs sont encadrées. 1. Le flot rapporté ci-dessus est-il complet ? Justifier. 2. Appliquer l’algorithme de Ford-Fulkerson en partant du flot rapporté sur le graphe cidessus : on appliquera la règle « premier marqué, premier examiné ». On rapportera les chaînes améliorantes et les flots successifs (redessiner les graphes successifs avec leur marquage). 3. Donner une coupe minimale. 4. On a la possibilité de créer dans le graphe biparti, une seule nouvelle liaison, de capacité 5. Quelles sont les nouvelles liaisons permettant d’améliorer le flot ? Exercice 2 (3 pts) : Cheminement x1 0 6 x3 7 1 6 x4 Figure 2 : graphe G1 2 0 x2 1 x5 On veut chercher un chemin de valeur minimale allant de x1 à x5. 1. L’algorithme de Bellman est-il applicable à ce graphe ? Justifier votre réponse. 2. L’algorithme de Dijkstra est-il applicable à ce graphe ? Justifier votre réponse. 3. Appliquer l’algorithme qui est applicable et rapporter le tableau correspondant, et une arborescence de chemins minimaux. Exercice 3 (1 pts) A E B F D G C G2 Le graphe G2 admet-il un cycle eulérien ? Justifier. Le construire s’il existe. PROBLEME (d’après Christian PRINS) Les graphes réels sont le plus souvent sans parcours eulérien, c’est-à-dire sans parcours passant une fois et une seule par chaque arête (ou arc) du graphe ou du multigraphe. Ils n’ont que des parcours chinois, c’est-à-dire des cycles passant au moins une fois par chaque arête (ou arc) du graphe. Autrement dit certaines arêtes sont empruntées plus d’une fois. Il faut alors trouver un parcours chinois de coût total minimal. Les problèmes de postier chinois sont très répandus : distribution de courrier, relevés de compteur d’eau ou d’électricité… G admet un parcours chinois si et seulement si il est connexe. Le but du problème est d’étudier des algorithmes pour chercher un parcours chinois dans le cas non orienté (Partie A) et dans le cas orienté (Partie B). Le coût d’emprunt d’une arête (ou arc) sera de 1. PARTIE A : Le cas non-orienté (9 pts) On rappelle le théorème d’Euler : Théorème : Un multigraphe non orienté connexe sans boucle admet un cycle eulérien si et seulement tous ses sommets sont de degré pair. L’algorithme PARCOURS CHINOIS, ci-dessous ajoute au graphe un nombre minimal d’arêtes pour obtenir un multigraphe eulérien. ALGORITHME PARCOURS CHINOIS 1) Calculer l'ensemble Y des sommets de degré impair de G=(X,U) 2) Si Y = ∅ alors G* = G et aller en (7). 3) Calculer la matrice D des coûts des chaînes minimales entre tous couples de sommets distincts et de degrés impairs et construire les chaînes minimales. 4) Construire un graphe complet sans boucle H = (Y,F,W) où, pour tous couples de sommets distincts et de degrés impairs, W(i,j) = D(i,j). (F est l'ensemble des arcs et W les coûts associés) 5) Calculer un couplage complet C de poids minimal sur H (on admettra qu'il existe toujours un nombre pair de sommets de degrés impairs). 6) Pour chaque arête [x,y] de C, ajouter à G, les arêtes de la chaîne minimale de x à y. Soit G* le multigraphe obtenu. 7) Calculer un cycle eulérien de G*. Question 1 : Appliquer l’algorithme au graphe G2 de l’exercice 3. On rapportera uniquement l’ensemble Y, la matrice D, le graphe H, le graphe G* et le cycle eulérien obtenu. Question 2 : On suppose que le graphe G est codé par sa matrice d’adjacence A, où aij = aji = 1 si l’arête [i,j] existe. a) Quelle est la complexité de (1) en fonction de N = X ? Justifier. b) Quelle est la complexité de (3) en fonction de N ? Justifier. c) On admet que la complexité de la recherche d’un couplage complet de poids minimal est en O(N3) et que la construction d’un cycle eulérien est en O(N2). Quelle est la complexité de l’algorithme PARCOURS CHINOIS ? d) Comment modifiez-vous la méthode si le coût d’emprunt d’une arête n’est plus toujours égal à 1 ? La complexité est-elle modifiée ? Justifier. Question 3 : Montrer qu’à tout parcours chinois correspond un ensemble de chaînes entre sommets impairs et réciproquement. En déduire la validité de l’algorithme. PARTIE B : Le cas orienté (4 pts) Dans le cas orienté, on cherche un circuit eulérien. Le théorème d’Euler s’écrit : Théorème : Un multigraphe orienté fortement connexe admet un circuit eulérien si et seulement si l’excès E(x) = d–(x) – d+(x) de chaque sommet vaut 0. A B E C D Question 1 : Calculer l’excès E(i) de chacun des sommets i du graphe ci-dessus. Question 2 : Quel(s) arc(s) proposez-vous de dupliquer pour minimiser le coût d’un parcours chinois orienté en rendant le graphe eulérien ? Question 3 : Proposez des idées pour un algorithme général qui traite ce problème.