Задание 2. Минимальный путь в нагруженном ориентированном графе




Найти минимальный путь в нагруженном ориентированном графе из вершины в вершину по методу Форда-Беллмана.

Рассмотрим сначала общую задачу – нахождения минимального пути из вершины vнач в vкон.

Пусть D =(V, X) – нагруженный ориентированный граф, V ={ v 1,…, vn }, n >1. Введем величины , где i =1,…, n, k =0,1,2,…, n– 1.

Для каждого фиксированного i и k величина равна длине минимального пути среди путей из vнач в vi содержащих не более k дуг. Если путей нет, то .

Положим также .

Составляем матрицу длин дуг C (D)=[ cij ] порядка n:

Утверждение. При i =2,…, n, k ³0 выполняется равенство

. (3.1)

 

Алгоритм Форда-Беллмана нахождения минимального пути в нагруженном ориентированном графе D из vнач в vкон.(vнач ≠ vкон).

( записываем в виде матрицы, i - строка, k -столбец).

1) Составляем таблицу , i =1,…, n, k =0,…, n -1. Если , то пути из vнач в vкон нет. Конец алгоритма.

2) Если то это число выражает длину любого минимального пути из vнач в vкон. Найдем минимальное k 1³1, при котором . По определению получим, что k 1- минимальное число дуг в пути среди всех минимальных путей из vнач в vкон.

3) Затем определяем номера i 2,…, такие, что

,

,

,

то есть восстанавливаем по составленной таблице и матрице стоимости искомый минимальный путь из vнач в vкон.

Пример2

Найдем минимальный путь из вершины v 2 в v 6 в ориентированном нагруженном графе D, изображенном на рис. 9. В рассматриваемом графе количество вершин n= 7, следовательно, матрица длин дуг ориентированного графа D будет иметь размерность 7×7.

 

Рис. 9.

 

Матрица длин дуг для рассматриваемого графа будет выглядеть следующим образом:

.

Согласно алгоритму, составляем таблицу стоимости минимальных путей из вершины v 2 в вершину vi не более, чем за k шагов, k =0,… n -1 (n =7, следовательно, k =0,…6). Как было определено выше, , и для всех остальных вершин viv 2, то есть первый столбец таблицы состоит из элементов, равных , кроме элемента . Второй столбец таблицы повторяет вторую строку матрицы стоимости, поскольку представляет собой стоимость возможных путей из вершины v 2 за один шаг. Далее по формуле (3.1) находим по столбцам все оставшиеся элементы таблицы. Например, чтобы найти элемент , складываем элементы столбца и первого столбца матрицы стоимости и выбираем минимальное из получившихся чисел: .

В конечном итоге получаем следующую таблицу:

Теперь необходимо по построенной таблице и по матрице C (D) восстановить минимальный путь из вершины v 2 в v 6, который будет строиться с конца, то есть, начиная с вершины v 6. Для этого выбираем минимальное из чисел, стоящих в строке, соответствующей v 6 в таблице. Это число – 21 – длина минимального искомого пути. В первый раз такая длина была получена при количестве шагов, равном 4. В вершину v 6 мы можем попасть за один шаг из вершин v 1 и v 7 (длина соответствующих дуг 8 и 5 соответственно – данные из матрицы C (D)). Выбираем минимальную по длине из этих дуг. Далее, в вершину v 7 можно попасть из v 4 и v 5(длина соответствующих дуг 7 и 3 соответственно). Продолжая аналогичным образом, найдем искомый путь за 4 шага минимальной длины из вершины v 2 в v 6: v 2 v 3 v 5 v 7 v 6.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: