Betrachten Sie den kürzesten Weg von nach t , s , v 1st . Dieser Pfad besteht aus höchstens | V | - 1 Kanten, da das Wiederholen eines Scheitelpunkts auf einem kürzesten Pfad immer eine schlechte Idee ist (oder zumindest gibt es einen kürzesten Pfad, der keine Scheitelpunkte wiederholt), wenn wir keine negativen Gewichtszyklen haben.s,v1,v2,…,vk,t|V|−1
In Runde 1 wissen wir, dass die Kante gelockert wird, sodass die Entfernungsschätzung für v 1 nach dieser Runde korrekt ist. Beachten Sie, dass wir zu diesem Zeitpunkt keine Ahnung haben, was v 1 ist, aber da wir alle Kanten entspannt haben, müssen wir auch diese entspannt haben. In Runde zwei entspannen wir uns(s,v1)v1v1 . Wir haben noch keine Ahnung, was v 1 oder v 2 sind, aber wir wissen, dass ihre Entfernungsschätzungen korrekt sind.(v1,v2)v1v2
Wiederholen Sie dies nach einer Runde wir k + 1 , so haben wir uns entspannt ( v k , t ) , wonach die Entfernungsschätzung für t korrekt ist. Wir haben keine Ahnung, was k ist, bis der gesamte Algorithmus beendet ist, aber wir wissen, dass es irgendwann passieren wird (vorausgesetzt, es gibt keine negativen Gewichtszyklen).k+1(vk,t)tk
Die entscheidende Beobachtung ist also, dass nach Runde die Entfernungsschätzung des i- ten Knotens des kürzesten Pfades auf den richtigen Wert gesetzt werden muss. Da der Weg höchstens ist | V | - 1 Kanten lang, | V | - 1 Runden reichen aus, um diesen kürzesten Weg zu finden. Wenn ein | V | Die Runde ändert noch etwas, dann passiert etwas Seltsames: Alle Pfade sollten bereits auf ihre endgültigen Werte "festgelegt" sein, also müssen wir die Situation haben, dass ein negativer Gewichtszyklus existiert.ii|V|−1|V|−1|V|