Problème entièrement résolu
-
Nœud 1 à une arête de la source pour un coût de 4 5 étapes
Le sommet 1 se trouve à une arête de la source, pour un coût de 4 — et l'algorithme indique une distance de 3. Suivez l'ordre de fixation des sommets et trouvez d'où vient ce 3.
-
Dijkstra fixe les sommets par ordre de distance, sans jamais y revenir. Cet ordre constitue tout l'algorithme et toute sa preuve : lorsqu'un sommet est fixé, aucun chemin plus économique vers celui-ci ne peut exister, car un tel chemin devrait passer par un sommet non encore fixé qui se trouve déjà plus éloigné.
-
À partir de la source, les deux arêtes directes donnent des distances provisoires de 4 et 2. Aucune n'est encore définitive — ce sont des bornes supérieures.
-
Le plus proche est le sommet 3 à 2, il est donc fixé en premier. Relâcher ses arêtes permet de trouver un chemin vers le sommet 1 d'un coût de 2 + 1 = 3, ce qui améliore l'arête directe de 4. C'est cette étape qui répond à la question : le chemin le plus économique vers un voisin n'est pas nécessairement l'arête qui y mène.
-
Le sommet 1 est fixé à 3, et le relâchement à partir de celui-ci atteint le sommet 2 à 8.
-
Le sommet 4 est accessible à 8 en passant par le sommet 3, et l'alternative par le sommet 2 coûte 8 + 3 = 11 ; le plus court des deux est donc conservé.
Réponse
L'outil affiche des distances de 3, 8, 2, 8 et un plus court chemin de 0 → 3 → 4. La leçon réside dans le sommet 1 : une arête directe n'est pas un plus court chemin, et la fixation gloutonne est ce qui permet de s'en rendre compte à moindre coût plutôt que de façon exponentielle. Cette garantie comporte toutefois une condition — des poids non négatifs. Avec une arête négative, un sommet fixé tôt peut être amélioré par la suite, et la preuve de l'étape 1 s'effondre. Cliquez sur le préréglage d'arête négative et observez l'échec dans les deux sens à la fois : le sommet 3 ressort à −1, ce qui n'est la distance d'aucun trajet, et la reconstruction du chemin abandonne complètement avec « aucun chemin — les prédécesseurs forment une boucle ». Des résultats faux et aucun chemin, pour un algorithme prouvé exact dès lors que chaque poids est non négatif.
-
Références (2)
- The three-page paper, in which the shortest-path algorithm is the SECOND of the two problems: E. W. Dijkstra, "A note on two problems in connexion with graphs." Numerische Mathematik 1, 269–271, 1959.
- The algorithm the negative-edge preset points you to, which tolerates negative weights and detects a negative cycle instead of answering as though there were none: R. Bellman, "On a routing problem." Quarterly of Applied Mathematics 16(1), 87–90, 1958.