Travaux Dirig´es d’algorithmique no6
Plus courts chemins dans un graphe
Nous introduisons dans ce TD la notion de plus courts chemins entre diff´erents
sommets d’un graphe, ainsi que les algorithmes permettant de les calculer.
xExercice 1. Quel est le plus court chemin?
1


2


3


4


5


2
-
5
?
1
@@@R
4
-
2
?
4
6
-5
1


2


3


4


5

 6


1
@@@R
2
q
5
@@@R
5
3
6
2
4
-
1
?
3
6
1
1. Dans le 1er graphe, quel est le plus court chemins du sommet 1 au sommet 5?
2. Recalculez ce plus court chemin si on remplace l’arc de poids -5 par un arc de poids 2.
3. Calculez le plus court chemin entre les sommets 1 et 6 dans le 2e graphe.
xExercice 2. Plus court chemin depuis un sommet unique.
1. Rappeler le principe et la complexit´e de l’algorithme de Dijkstra. Quelle structure de
donn´ees peut-on utiliser pour atteindre cette complexit´e?
2. Utiliser l’algorithme de Dijkstra sur le graphe ci-dessous pour obtenir les plus courts
chemins `a partir du sommet A, puis `a partir du sommet E.
A


B


C


D


E


F


5
-
1j
2
@@@@@@R
5
4
7
*
8
?
2
-
2
1
-
4
1
@
@
@
@
@
@I
3
6
15
1
3. Rappeler le principe et la complexit´e de l’algorithme de Bellman-Ford. Quel est
l’avantage par rapport `a l’algorithme de Dijkstra?
4. Utiliser l’algorithme de Bellman-Ford sur le graphe ci-dessous pour obtenir les plus
courts chemins `a partir du sommet A, puis `a partir du sommet E.
5. Proposer une am´elioration simple de cet algorithme.
A


B


C


D


E


F


4
-
2j
4
@@@@@@R
5
-2
5
*
-8
?
2
-
-1
9
-
3
1
@
@
@
@
@
@I
-3
6
15
xExercice 3. Plus court chemin pour tout couple de sommets.
L’algorithme de Floyd-Warshall se base sur l’observation suivante : soit ple plus court
chemin entre les sommets iet j. Si on consid`ere que pn’emprunte que des sommets dans
l’ensemble {1, . . . , k}, avec 1 < k ≤ |S|, alors :
soit kne fait pas partie du chemin le plus court entre iet j, et on peut donc dire que
pn’emprunte que des sommets issus de l’ensemble {1, . . . , k 1};
soit kfait partie du plus court chemin entre iet j, on peut donc dire qu’il existe deux
chemins p1et p2entre iet k, et ket j, et que ces chemins n’empruntent que des sommets
issus de l’ensemble {1, . . . , k 1}.
Sur ce principe de r´ecursion, on construit les matrices des poids des plus courts chemins
empruntant des sommets issus des ensembles {∅},{1},{1,2}, . . . , {1,...,|S|}.
1


2


3


4


5


3
AAAU
-4
CCCCCCCCW
1
7
@
@
@
@I
4
-5
Q
Q
Q
Q
Q
Qk
2
-
6
1
8
1. Quelle est la complexit´e de la m´ethode qui consiste `a appliquer l’algorithme de Dijkstra
plusieurs fois en vue d’obtenir les plus courts chemins entre tous les couples de sommets?
2. Construisez la matrice des poids des plus courts chemins entre tous les couples de
sommets possibles du graphe ci-dessus en utilisant l’algorithme de Floyd-Warshall.
3. Que faut-il faire pour que cet algorithme construise, en mˆeme temps que la matrice des
poids des plus courts chemins, une matrice permettant d’obtenir ces chemins?
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !