Алгоритм Флойда. 4 Нахождение кратчайшего пути в орграфе
Скачать 277.5 Kb.
|
4.3. Нахождение кратчайшего пути в орграфе Рассмотрим ориентированный взвешенный граф D(V, A). Задача о кратчайшем пути состоит в отыскании пути минимального веса, соединяющего указанную начальную вершину графа D и все остальные вершины при условии, что хотя бы один такой путь существует. 4.3.1. Алгоритм Дейкстры Данный алгоритм можно использовать в тех случаях, когда веса всех дуг неотрицательны. Определим весовую матрицу W, чьи элементы задаются формулой Обозначим через s начальную вершину орграфа, от которой нужно найти кратчайшие пути до всех остальных вершин. В течение работы алгоритма каждой вершине v орграфа присваивается число d[v], равное расстоянию от s до v. 4.3.2. Алгоритм Флойда Рассмотрим более общую ситуацию. Будем считать, что в графе D допускаются дуги отрицательного веса. Опишем алгоритм кратчайших путей между всеми парами вершин графа при условии, что в графе нет отрицательных контуров, т.е. замкнутых путей отрицательного веса. Если в графе D есть цикл с отрицательным весом, то решения поставленной задачи не существует, т.к. можно «накручивать» на этом цикле сколь угодно короткий путь. Определим весовую матрицу W, чьи элементы wij задаются формулой В алгоритме используются матрицы W0,…,Wn и Р0,…,Рп. Матрица Wk содержит веса кратчайших путей, проходящих только через вершины 1,2,…,k. В матрице Pk элемент - номер вершины, предшествующий вершине j в текущем (i, j)-пути. Рассмотрим алгоритм. 1. W0=W; k:=1; Р0=[], где 2. выполнить: если , то ; . Иначе ; . 3. Если для некоторого , (по диагонали матрицы Wk появляются отрицательные значения), то конец (в графе имеется отрицательный контур). Иначе перейти к пункту 4. 4). . Если , то конец. – матрица весов кратчайших путей. С помощью матрицы кратчайший -путь определяется следующим образом: , Иначе перейти к пункту 2. Пример. Рассмотрим нагруженный граф D(V, А). Рис. Орграф D с отрицательными весами. Составим матрицу весов W0 и матрицу путей между парами вершин P0 , k=1. Если , то ; . Иначе ; . - неравенство выполняется, - неравенство не выполняется.
; ; , . k=2. Если , то ; . Иначе ; .
; ; ; ; , . k=3. Если , то ; . Иначе ; .
Весовая матрица и матрица путей остаются без изменений. , . k=4. Если , то ; . Иначе ; .
; ; ; ; , . Итак, найдена матрица весов кратчайших путей и матрица кратчайших путей между парами вершин. Определим маршрут и вес пути Р(1, 4). Вершины v1=1 и v2=4 соединены дугой веса d=2. Однако , где . И в этом случае вес пути . Определим маршрут и вес пути Р(1, 3). Дуга (1, 3) в данном графе отсутствует. , где . Вес пути . Пример. Рассмотрим нагруженный граф D(V, А). Рис. Орграф D с отрицательными весами. Матрица весов W0 и матрица путей между парами вершин P0 ,
; ; ,
; ; . Таким образом, в графе существует контур (замкнутый путь) отрицательного веса. Следовательно, на этом работа алгоритма закончена. |