Dijkstra, déroulé
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 19 — Parcours de graphes et plus courts chemins
Énoncé
Sur le graphe non orienté suivant, dérouler Dijkstra depuis : donner, à chaque extraction, le sommet figé, le tableau des estimations et le contenu de la file.
Corrigé
Le déroulé mesuré (la file est notée par couples (estimation, sommet)) :
etape 1 : on fige 0 (d=0) d = [0; inf; inf; inf; inf; inf] file = []
etape 2 : on fige 1 (d=7) d = [0; 7; 9; inf; inf; 14] file = [(9,2); (14,5)]
etape 3 : on fige 2 (d=9) d = [0; 7; 9; 22; inf; 14] file = [(14,5); (22,3)]
etape 4 : on fige 5 (d=11) d = [0; 7; 9; 20; inf; 11] file = [(14,5); (20,3); (22,3)]
etape 5 : on fige 3 (d=20) d = [0; 7; 9; 20; 20; 11] file = [(20,4); (22,3)]
etape 6 : on fige 4 (d=20) d = [0; 7; 9; 20; 20; 11] file = [(22,3)]
distances finales : [0; 7; 9; 20; 20; 11]
peres : [-; 0; 0; 2; 5; 2]
Trois observations, et chacune éclaire un point du chapitre.
- L'étape 4 fige avec , alors que la file contenait encore . La valeur était l'estimation par l'arête directe ; l'estimation est venue plus tard, par (). Les deux coexistent dans la file : c'est le doublon du chapitre. L'extraction rend la plus petite, et la seconde sera ignorée.
- Le sommet change deux fois d'estimation : par (), puis par (). Deux entrées dans la file, dont une seule utile.
- Les sommets et sont tous deux à distance . L'un est atteint par , l'autre par . L'ordre entre eux dépend de la file de priorité, pas de l'algorithme : Dijkstra ne définit pas un ordre total sur les sommets de même distance, et un test qui exigerait un ordre précis serait fragile.
Les chemins, reconstruits depuis le tableau des pères : (7), (9), (20), (20), (11). Noter que le plus court chemin vers ne passe pas par , alors que et sont à la même distance : la table des pères est la seule source de vérité sur les chemins.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.