Considere el camino más corto de a t , s , v 1 , v 2 , ... , v k , t . Este camino consta de como máximo | V | - 1 bordes, porque repetir un vértice en un camino más corto siempre es una mala idea (o al menos hay un camino más corto que no repite vértices), si no tenemos ciclos de peso negativos.sts , v1, v2, ... , vk, tEl | VEl | -1
En la primera ronda, sabemos que el borde se relajará, por lo que la estimación de distancia para v 1 será correcta después de esta ronda. Tenga en cuenta que no tenemos idea de qué v 1 es en este momento, pero como hemos relajado todos los bordes, también debemos haber relajado este. En la segunda ronda, nos relajamos ( v 1 , v 2 ) en algún momento. Todavía no tenemos idea de qué son v 1 o v 2 , pero sabemos que sus estimaciones de distancia son correctas.( s , v1)v1v1( v1, v2)v1v2
Repitiendo esto, después de una ronda , nos hemos relajado ( v k , t ) , después de lo cual la distancia estimada para t es correcta. No tenemos idea de qué es k hasta que todo el algoritmo haya terminado, pero sabemos que sucederá en algún momento (suponiendo que no haya ciclos de peso negativos).k + 1( vk, t )tk
Entonces, la observación crucial es que después de la ronda , el i -ésimo nodo del camino más corto debe tener su estimación de distancia establecida en el valor correcto. Como el camino es a lo sumo | V | - 1 bordes largos, | V | - 1 ronda es suficiente para encontrar este camino más corto. Si un | V | La ronda todavía cambia algo, entonces algo extraño está sucediendo: todos los caminos ya deberían estar 'establecidos' a sus valores finales, por lo que debemos tener la situación de que existe algún ciclo de peso negativo.yoyoEl | VEl | -1El | VEl | -1El | VEl |