Académique Documents
Professionnel Documents
Culture Documents
Algorithme
module
Programmation CP1
Informatique
et
Ensa Marrakech
CHAPITRE 3-2 Graphe oriente (Suite )
Algorithme de Dijkstra
Edgser Wybe Dijkstra (1930-2002) a propos en 1959 un algorithme qui permet de calculer le
plus court chemin entre un sommet particulier et tous les autres. Le rsultat est une arborescence.
Numrotons les sommets du graphe G = (V,E) de 1 n. Supposons que l'on s'intresse aux
chemins
partant
du
sommet
1.
On construit un vecteur = ((1); (2); ...; (n)) ayant n composantes tel que (j) soit gal la
longueur du plus court chemin allant de 1 au sommet j. On initialise ce vecteur c 1,j, c'est--dire
la premire ligne de la matrice des cots du graphe, dfinie comme indiqu ci-dessous:
o (i,j) est le poids (la longueur) de l'arc (i,j). Les c ij doivent tre strictement positifs.
On construit un autre vecteur p pour mmoriser le chemin pour aller du sommet 1 au sommet
voulu.
La
valeur
p(i)
donne
le
sommet
qui
prcde
i
dans
le
chemin.
On considre ensuite deux ensembles de sommets, S initialis {1} et T initialis {2, 3, ..., n}.
chaque pas de l'algorithme, on ajoute S un sommet jusqu' ce que S = V de telle sorte que le
vecteur
Itrations
n faire
alors p(j) = 1.
= {2, 3, ..., n}.
n'est pas vide faire
Exemple
Initialisation
s
1re itration
S = {1} ; T = {2, 3, 4, 5} ;
(NIL, 1, NIL, NIL, 1)
= (0, 15,
, 4); p =
i = 4; (4) = 9;
S = {1, 5, 4}; T = {2, 3};
le seul successeur de 4 dans T est 2;
Graphe de dpart
3e itration
i = 3; (3) = 11;
S = {1, 5, 4, 3}; T = {2};
le seul successeur de 3 dans T est 2;
i = 2; (2) = 12;
S = {1, 5, 4, 3, 2}; T={}; FIN.
Le chemin minimal de 1 4 par exemple est de cot 9. C'est le chemin 1-5-4, car p(4) = 5 et p(5)
= 1.
EXERCICES
Exercice 1
Expliquez pourquoi des arcs avec des poids ngatifs pourraient poser problme dans la recherche
d'un plus court chemin dans un graphe.
Exercice 2
Appliquez l'algorithme de Dijkstra au graphe de l'exemple ci-dessous pour trouver tous les plus
courts chemins en partant du sommet 1