- •Глава 1. Основные понятия теории графов
- •§ 1. Основные определения
- •§ 2. Виды графов
- •§ 3. Примеры приложений теории графов
- •§ 4. Изоморфизм графов
- •§ 5. Степень вершины
- •§ 6. Подграфы, операции над графами
- •Соединением графов называется граф , в котором , а множество ребер состоит из всех ребер и
- •§ 7. Маршруты, цепи, циклы
- •§ 8. Метрические и топологические характеристики графов
- •§ 9. Связность в орграфах
- •Глава 2. Алгоритмы § 1. Сложность алгоритмов
- •§ 2. Машины Тьюринга
- •§ 3. Классы р и np
- •Глава 3. Экстремальные пути в графах
- •§ 1. Хранение графов в памяти компьютера
- •§ 2. Алгоритмы построения кратчайших путей
- •2.1. Алгоритм Дейкстры
- •2.2. Алгоритм Беллмана – Форда построения дерева кратчайших путей для сети с произвольными весами
- •§ 3. Задача о максимальном пути
- •Алгоритм построения максимального пути для сети с введенным топологическим порядком.
2.2. Алгоритм Беллмана – Форда построения дерева кратчайших путей для сети с произвольными весами
Рассмотрим еще один алгоритм построения дерева кратчайших путей для сети, имеющей веса произвольного знака. Данный алгоритм применим и в том случае, если в сети имеется цикл отрицательной длины. Тогда алгоритм выдает соответствующее сообщение и прекращает работу.
Этап 1. (нахождение длин кратчайших путей до узлов сети).
Шаг 0. Расстановка начальных меток. Присваиваем начальному узлу метку «0»
,
всем остальным узлам приписываем метки, равные +∞:
.
Шаг 1. Для всех i от 0 до n-1 выполняем:
Для каждой
дуги
выполняем
.
Шаг 2. Для каждой дуги проверяем выполнение неравенства
.
Если нашлась дуга, для которой это неравенство выполняется, то задача не имеет решения, поскольку в этом случае в графе существует цикл отрицательной длины. В противном случае перейти к этапу 2.
Этап 2 аналогичен Этапу 2* модификации алгоритма Дейкстры.
Трудоемкость
данного алгоритма составляет О(nm),
так как от состоит из О(n)
итераций, в каждой из которых проводится
О(m)
операций. Корректность алгоритма следует
из того факта, что на k-й
итерации значение метки каждого узла
равно длине кратчайшего пути от исходного
узла до него с не более чем k
дугами. Поскольку путь не может содержать
более чем
дуг, то и оценку пути нельзя будет
уменьшить после
итераций. В противном случае в сети
существует цикл отрицательной длины.
Пример 3.3. Построим дерево кратчайших путей для сети из примера 3.2. В кружки, обозначающие узлы, будем записывать значения меток. На нулевом шаге вход s получает метку ноль, остальные узлы – ∞:
Рис. 3.13. Начальная расстановка меток сети.
В цикле для
,
рассматривая дуги
и
,
уменьшаем метки соответствующих узлов:
Рис. 3.14. Узлы и получили новые метки.
Далее рассматриваем
дуги
и
:
Рис. 3.15. Узлы и t получили новые метки.
Следующие
рассматриваемые дуги
и
:
Рис. 3.16. Узел получил новую метку.
При
изменится метка только узла t
при рассмотрении дуги
:
Рис. 3.17. Узел
получил новую метку.
Далее при
метки узлов меняться не будут,
следовательно, можно перейти ко второму
этапу алгоритма и построить дерево
кратчайших путей:
Рис. 3.18. Дерево кратчайших путей.
§ 3. Задача о максимальном пути
Для существования максимального пути графа необходимо и достаточно отсутствия в графе контуров положительной длины.
Рис. 3.14. Сеть, содержащая контур с положительным весом.
Определение 3.1. Орграф, не содержащий контуров, называется ациклическим.
В данном разделе будем рассматривать только ациклические графы.
Для любых двух
узлов
ациклических орграфов верно только
одно из следующих условий:
Узел предшествует
,
т.е. существует путь
.Узел следует за , т.е. существует путь
.В графе не существует пути между узлами и .
Таким образом,
узлы орграфа можно пронумеровать числами
1,2,…, n
так, что узел
,
следующий за узлом
,
получает больший номер, чем
.
При такой нумерации говорят, что на
орграфе введен топологический
порядок, а
нумерация дуг, при которой из условия
,
следует
,
называется правильной.
На рис. 3.15 представлена
ациклическая сеть, нумерация узлов
которой не согласована с топологическим
порядком, поскольку узел
предшествует узлу
.
Рис. 3.15. Ациклическая сеть с нумерацией узлов,
не согласованной с топологическим порядком.
Перенумеруем узлы, введя топологический порядок
Рис. 3.16. Ациклическая сеть с правильной нумерацией узлов,
Рассмотрим алгоритм
построения пути максимальной длины от
первого узла
до последнего –
для ациклической сети с правильной
нумерацией. В данном случае метка
,
приписанная узлу
,
равна длине максимального пути до него.
