Кратчайший путь из u в v – это любой путь p из u в v, для которого w(p) = δ(u, v), где:
w(p) = сумма весов всех ребер пути p
δ(u, v) = min{w(p): по всем путям p из u в v}, если существует путь u в v; ∞ - в противном случае
Свойство оптимальности для подзадач
Любая часть кратчайшего пути сама есть кратчайший путь. Это значит, что задача о кратчайших путях обладает свойством оптимальности для подзадач - признак того, что к ней может быть применимо
динамическое программирование или жадный алгоритм.
Релаксация
Техника релаксации состоит в следующем. Для каждого ребра v V храним некоторое число
d[v], являющееся верхней оценкой веса кратчайшего пути из s в v. Начальное значение оценки кратчайшего пути
и массива π устанавливается процедурой:
Релаксация ребра (u, v) E состоит в следующем: значение
d[v] уменьшается до d[u] + ω(u, v); при этом d[v]
остается верхней оценкой. Мы хотим, чтобы значение π[v] указывало путь, использованный при получении этой верхней оценки,
поэтому одновременно мы меняем значение
π[v]: