Algorithme de DIJKSTRA-MOORE
Présentation de l’algorithme :
Donnons l’algorithme de DIJKSTRA (mathématicien et informaticien néerlandais
du XXe siècle), autorisant la recherche d’un chemin minimal entre deux sommets I
(initial) et F (final). Il se décompose en quatre phases, comme suit :
Phase 1 : mise en place
- On désigne par Définitif l’ensemble dans lequel on met les sommets au fur et à
mesure de leur marquage définitif ;
- A chaque sommet S, on associe le couple (dist(S), p(S)) où dist(S) désigne la
distance (provisoire ou définitive) de I à S, et p(S) le prédécesseur de S ;
Phase 2 : initialisation
- Attribuer au sommet I, le couple (0, I) ;
- Attribuer à chaque sommet adjacent à I, le couple (poids de l’arc le reliant à I, I) ;
- Attribuer aux autres sommets, le couple (+ ∞, ?) c'est-à-dire un poids indéterminé;
Phase 3 : fonctionnement
Tant que tous les sommets ne sont pas dans Définitifs, ou que le sommet F n’est pas
affecté de la plus petite distance provisoire :
- Choisir parmi les sommets non placés dans Définitifs, un dont la distance
provisoire est minimale : appelons-le S ;
- Mettre S dans la colonne des Définitifs ;
- Pour chacun des sommets i Y qui lui sont adjacents et qui ne sont pas dans
Définitifs :
•Calculer s = dist(S) + poids de l’arc [S, i Y ] ;
•Si s est inférieur à la distance provisoire de i Y , attribuer à i Y le couple (s, S);
(ainsi, dist( i Y ) := min{dist(S) + poids de l’arc [S, i Y ] , dist( i Y )})
Phase 4 : conclusion
- La longueur du plus court chemin de I à F est alors dist(F) ;
- La chaîne de poids minimum se lit « à l’envers », de F à chacun de ses
prédécesseurs successifs.