Хелпикс

Главная

Контакты

Случайная статья





Итерация 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.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.