Пусть имеется граф G со множеством вершин V={v1,…,vn}. Обозначим через
длину кратчайшего пути из vi в vj с промежуточными вершинами во множестве {v1,…,vm}. Рассмотрим алгоритм Флойда-Уоршалла нахождения матрицы D, элементы которой – кратчайшие пути между всевозможными парами вершин графа G. Алгоритм использует три правила:
1.
, где aij – вес дуги, соединяющий вершины vi и vj.
2.
.
3. Длина кратчайшего пути из вершины vi в вершину vj
.
Если
, то алгоритм Флойда-Уоршалла содержит n шагов. Если из вершины vi нет дуги в вершину vj, то считаем вес дуги равным ¥. Для ребер, являющихся петлями, считаем вес дуги равными 0, т.е. в матрице D0 зануляем диагональ.
Пример 4.14. Найдем матрицу кратчайших расстояний для графа.
v1 v2 v3

Элементы матрицы D(1) находим по правилу
. Получаем
.
Элементы матрицы D(2) находим по правилу
.

Элементы матрицы D(3) находим по правилу
.
.