Алгоритм Беллмана-Форда.

Алгоритм Беллмана-Форда может быть сформулирован следующим образом. Требуется найти кратчайшие пути от заданной вершины при условии, что эти пути состоят максимум из одного ребра, затем найти кратчайшие пути при условии, что эти пути состоят максимум из двух ребер и т.д. Для описания алгоритма введем следующие обозначения:

Алгоритм состоит из двух шагов.Шаг 2 повторяется до тех пор, пока стоимости путей не перестанут изменяться.
  1. Инициализация
    L0(n)= для всех n<>s,
    Lh(s)=0 для всех h.
  2. Обновление
    Для каждого последовательного h>=0 и для каждого n<>s вычислить
    Соединить вершину n с предыдущей вершиной j, для которой находится минимальное значение, и удалить любое соединение вершины n с предыдущей вершиной, образованное на более ранней итерации. Путь от вершины s до вершины n заканчивается линией связи от вершины j до вершины n.