Итерация 1.. Итерация 2.
Пример. В данной сети (см. Рис. 1. 15) найти кратчайшую цепь между всеми парами узлов в сети.

Рис. 1. 15
Решение: Составляются матрицы и .

Итерация 1.
Узел p=1 определяется как базовый. Выделяем в матрице первую строку и первый столбец. Кроме того, строки 2, 3 и 4 в базовом столбце содержат элементы, равные , и, следовательно, эти строки не изменяться. Столбец 4 в базовой строке так же содержит элемент, равный , и он тоже не меняется. Поэтому для того, чтобы вычислить матрицу , следует исследовать лишь элементы матрицы , показанные ниже

Применяя к этим элементам алгоритм Флойда, получаем следующие матрицы:

Итерация 2.
Определяем узел p=2 как базовый. Выделяем вторую строку и второй столбец в матрице и переписываем их без изменений. В ниже представленной матрице пропущены элементы, которые подлежат пересчету:

Используя алгоритм Флойда, получаем матрицы:

Далее аналогично действуя, получаем:



Длина кратчайшей цепи, например, из узла 5 в узел 4 равна . Для определения узлов соответствующей цепи, обратимся к матрице . Нетрудно заметить, что . Следовательно, кратчайшая цепь из узла 5 в узел 4 определяется последовательностью узлов 5" 1" 3" 2" 4.
Замечание. Алгоритм Флойда может быть использован для нахождения в графе циклов отрицательной длины. Если на k-й итерации в матрице на диагонали появилось отрицательное число , то это означает, что в графе существует цикл отрицательной длины. Найти цикл можно, используя справочную матрицу Sk.
|