Рассмотрим кратчайший путь из в t , s , v 1 , v 2 , … , v k , t . Этот путь состоит не более чем из | V | - 1 ребро, потому что повторение вершины в кратчайшем пути всегда плохая идея (или, по крайней мере, существует кратчайший путь, который не повторяет вершины), если у нас нет циклов с отрицательным весом.sts,v1,v2,…,vk,t|V|−1
В первом раунде мы знаем, что ребро будет ослаблено, поэтому оценка расстояния для v 1 будет правильной после этого раунда. Обратите внимание, что мы понятия не имеем, что такое v 1 в этой точке, но, поскольку мы ослабили все ребра, мы, должно быть, ослабили и это. Во втором раунде мы расслабляемся ( v 1 , v 2 ) в некоторой точке. Мы до сих пор не знаем, что такое v 1 или v 2 , но мы знаем, что их оценки расстояний верны.(s,v1)v1v1(v1,v2)v1v2
Повторяя это, после некоторого раунда мы ослабили ( v k , t ) , после чего оценка расстояния для t является правильной. Мы не знаем, что такое k , пока весь алгоритм не закончится, но мы знаем, что это произойдет в какой-то момент (при условии отсутствия циклов с отрицательным весом).k+1(vk,t)tk
Таким образом, важно наблюдение , что после первого раунда , то я -й узел кратчайшего пути должен иметь свою оценку расстояния установлен на правильное значение. Как путь не более | V | - 1 ребро длинное, | V | - 1 раунда достаточно, чтобы найти этот кратчайший путь. Если | V | Третий раунд все еще что-то меняет, затем происходит что-то странное: все пути уже должны быть «согласованы» с их окончательными значениями, поэтому мы должны иметь ситуацию, что существует некоторый отрицательный цикл веса.ii|V|−1|V|−1|V|