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.

Documents pareils