Problème : Etude de l`algorithme GLOUTON - UTC

publicité
Examen FINAL RO03 2010
Jacques Carlier
Exercice 1 (3 pts) : Flot
A
1
10
s
15
B
0 10
2
5 5
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.
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 x0 à x4.
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
Erreur !
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 toute paire 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 tout couple de sommets
distincts et de degrés impairs, W(i,j) = D(i,j).
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 impaires).
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 d'ajouter 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.
Téléchargement