Шаг 0 расчетов по алгоритму Флойда
Построение матрицы путей и матрицы переходов графа G
Тема: «Поиск кратчайших путей на неориентированном графе по алгоритму Флойда».
Расчетно-графическая работа №8
1 Теоретическая часть
Пусть задан граф G (рисунок 8.1).
Алгоритма Флойда использует две матрицы размера , где
-число вершин графа:
- матрицу кратчайших путей и
- матрицу кратчайших переходов. На рисунке 8.2изображены обе эти матрицы для графа G (рисунок 8.1).
|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | |||
![]() | ![]() | ![]() | ![]() | ![]() | ||||
![]() | ![]() | ![]() | ||||||
![]() | ![]() | ![]() | ![]() | ![]() | ||||
![]() | ![]() | ![]() | ![]() | |||||
![]() | ![]() | ![]() | ![]() | |||||
![]() | ![]() | ![]() | ![]() | |||||
![]() | ![]() | ![]() | ![]() | ![]() |
а) б)
Рисунок 8.2 ― Матрицы кратчайших путей а) и кратчайших переходов б) графа G
Матрица переходов производна относительно матрицы путей. Для p=0 (т.е. нулевого шага работы алгоритма) элементы матрицы
есть концевые вершины из перехода из
в
. Поэтому в каждом столбце
матрицы
указана вершина
.
Принимаем p=0. Принимаем в матрице вершину
за базовую и выделяем (штриховкой) базовую строку и базовый столбец (рис. 8.3).
![]() |
Рисунок 8.3 ―Матрица путей на нулевом шаге расчетов
Вычеркиваем в матрице строки столбцы,базовые элементы которыхимеют значения
(они на рис. 8.3 показаны более темной штриховкой), так как
и
всегда больше конечного значения
. В итоге получаем матрицу
, изображенную на рисунке 8.4.
![]() | ![]() | ![]() | ![]() |
![]() | |||
![]() | ![]() | ||
![]() | ![]() ![]() |
Рисунок 8.4 - Матрица после вычеркивания строк и столбцов, базовые элементы которых имеют значение
Изобразим на рисунке 8.5 граф по матрице
.
Обозначения: в окружность заключена базовая вершина ; каждая вершина идентифицирована дважды: переменной
с индексом- цифрой и переменной
с индексом-буквой
Рисунок 8.5 ― Граф
Выполним расчеты, для чего будем проверять справедливость соотношения:
|
Для графа на рисунке 8.5 это означает, что проверяется справедливость соотношения:
|
или иными словами: сравнивается суммарная длина пути из первой вершины до базовой
, т.е.
и из нулевой вершины
до вершины
, т.е.
с длиной пути из первой вершины в третью «напрямую», т.е.
(см. рис. 8.5).
Итак, проверяем справедливость соотношения:
?
Ответ - Да.
Тогда:
1) ,
;
2) ,
Вносим изменения в матрицу и
(рис. 8.6): изменяем элемент
, на
;
,
. Изменения выделены на рис. 8.6 красным квадратом.
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ||
![]() | ![]() | ![]() | ![]() | ![]() |
![]() | |||||
![]() | ![]() | ![]() | ![]() ![]() | |||||||
![]() | ![]() | ![]() | ||||||||
![]() | ![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | ![]() | ![]() |
|

![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Рисунок 8.6 ― Матрицы путей и переходов графа G перед началом шага p=1