Если в графе р вершин, требуется отыскать кратчайших путей.
Произвольно перенумеруем вершины графа числами от 1 до р.
Обозначим через длину пути от вершины i до вершины j, кратчайшего из всех путей от i до j, промежуточные вершины которых имеют номера, не превосходящие k.
Числа находятся сразу - это длины путей без промежуточных вершин.
Числа – это длины кратчайших путей.
Опишем переход от чисел к числам (рис. 8).
Разрешение вершине с номером быть промежуточной добавляет к известным путям от вершины i до вершины j еще один путь, проходящий через вершину с номером . Он состоит из двух частей (рис. 8): пути от
вершины i до вершины длины и пути от вершины до вершины j длины . Тогда
. (4)
Если в графе р вершин, то требуется р раз вычислять величин (,;). При этом удобно использовать матрицы D0, D1,…, Dp размера . В матрице Dk стоят числа , , .
Количество вычислений можно сократить. При переходе от матрицы Dk к матрице Dk+1 не нужно пересчитывать строку и столбец с номером , они переносятся из матриц Dk. В самом деле
Подобным образом
Попросту говоря, если вершина с номером - промежуточная вершина некоторого пути, она не первая и не последняя вершина этого пути, поэтому длины путей, которые начинаются (заканчиваются) в вершине не меняются, если вершине разрешено быть промежуточной.
Пример. Определим длины кратчайших путей между всеми парами вершин графа, изображенного на рис. 9.
Перейдем от матрицы D0 к матрице D1. Первую строку и первый столбец матрицы D1 переносим из матрицы D0.
∞
-3
∞
-1
∞
∞
∞
∞
-1
∞
Кроме того, . Это означает отсутствие пути из первой вершины в четвертую, что, в свою очередь, означает невозможность найти новые пути в четвертую вершину через первую вершину. Четвертый столбец матрицы D1 переносится из матрицы D0 .
В матрице D0 первом столбце и четвертой строке также стоит бесконечность, из четвертой вершины в вершину 1 пути нет, невозможно найти новые пути, выходящие из четвертой вершины с промежуточной вершиной 1. Строка 4 матрицы D1 переписывается из матрицы D0.
Осталось рассчитать элементы , , , , , .
;
;
;
; ;
.
Определим элементы матрицы D2. Вторую строку и второй столбец матрицы D2переносим из матрицы D1.
∞
-3
-1
∞
-1
∞
-3
-1
-1
Находим длины ,, , , , , , , , , , .
;
;
;
; ;
; ;
; ;
; ; .
Матрицы D3, D4, D5 строятся аналогично. Приведем их без дальнейших пояснений (стр. 274).