Графы. Минимальные пути (маршруты) в нагруженных орграфах (графах). Алгоритм Форда-Беллмана.
Определение. Назовём орграф нагруженным, если на множестве дуг определена некоторая функция , которую часто называют весовой функцией.
Тем самым и нагруженном орграфе каждой дуге поставлено в соответствие некоторое действительное число . Значение будем называть длиной дуги .
Для любого пути нагруженного орграфа обозначим через сумму длин входящих в дуг, при этом каждая дуга учитывается столько раз, сколько она входит в путь. Величину будем называть длиной пути в нагруженном орграфе . Ранее так называлось количество дуг в пути . В связи с этим заметим, что если длины дуг выбраны равными 1, то выражает введенную ранее длину пути в ненагруженном орграфе. Следовательно, любой ненагруженный орграф можно считать нагруженным с длинами дуг, равными 1. Аналогично определяется и нагруженный граф, а также длина маршрута в нем.
Определение. Путь в нагруженном орграфе из вершины в вершину , где , называется минимальным, если он имеет минимальную длину среди всех путей орграфа из в . Аналогично определяется и минимальный маршрут в нагруженном графе .
Рассмотрим теперь задачу поиска минимальных путей (маршрутов) в нагруженном орграфе (графе). При этом для определенности рассуждения будем проводить для орграфа (для графа они аналогичны).
Пусть - нагруженный орграф, , . Введем величины , где , ..., , , ,... Для каждых фиксированных и величина равна длине минимального пути среди путем из в , содержащих не более дуг; если же таких путей нет, то = . Кроме того, если произвольную вершину считать путем из в нулевой длины, то величины можно ввести также и для , при этом
(1)
Введем также в рассмотрение квадратную матрицу порядка с элементами
которую будем называть матрицей длин дуг нагруженного орграфа .
Следующее утверждение дает простые формулы для вычисления величин .
Утверждение.
.
Используя данное утверждение, нетрудно описать алгоритм нахождения таблицы значений величин (будем записывать её в виде матрицы, где - номер строки, - номер столбца). Действительно, используя рекуррентные соотношения (2), (3) и исходя из (1), последовательно определяем набор величин (( )-й столбец матрицы), начиная с , а затем шаг за шагом увеличиваем значение до любой необходимой величины.
Алгоритм Форда – Беллмана нахождения минимального пути в нагруженном орграфе из в
Шаг 1. Пусть мы уже составили таблицу величин . Если не достижима из (предполагаем, что все величины конечны). В этом случае работа алгоритма заканчивается.
Шаг 2. Пусть . Тогда число выражает длинны любого минимального пути из в в нагруженном орграфе . Определим минимальное число , при котором выполняется равенство . По определению чисел получим, что - минимальное число дуг в пути среди всех минимальных путей из в в нагруженном орграфе .
Шаг 3. Последовательно определяем номера такие что
. . . . . . (4)
Из (4) с учётом того, что , имеем , откуда, используя (1), получаем
(5)
Складывая равенства (4) и учитывая (5), имеем
т.е. - искомый минимальный путь из в в нагруженном орграфе . Заметим, что в этом пути ровно дуг Следовательно, мы определили путь с минимальным числом дуг среди всех минимальных путей из в в нагруженном орграфе .
Замечание. Номера , удовлетворяющие (4) вообще говоря, могут быть выделены неоднозначно. Эта неоднозначность соответствует случаям, когда существует несколько различных путей из в с минимальным числом дуг среди минимальных, путей из в в нагруженном орграфе .
Замечание. Алгоритм можно модифицировать, с тем чтобы определить минимальный путь из в заданную вершину среди путей из в , содержащих не более дуг, где - заданное число, . Для этого в алгоритме вместо следует воспользоваться .
Пример 83.
Определить минимальный путь из v1 в v6 в нагруженном орграфе D, изображенном на рисунке 35.
Решение.
С оставим матрицу C(D) длин дуг нагруженного орграфа D(табл. 68). Справа от матрицы C(D) припишем шесть столбцов, которые будем определять, используя рекуррентное соотношение (2) и исходя из (1).
Величина выражает длину минимального пути из v1 в v6 в нагруженном орграфе D. Найдем минимальное число , при котором выполняется равенство . Получаем, что k1 = 4. Таким образом, минимальное число дуг в пути среди всех минимальных путей из v1 в v6 в нагруженном графе D равняется 4. Определим теперь последовательность номеров i1, i2, i3, i4, i5, где i1 = 6, удовлетворяющих (4) (для этого используем формулу (2)).
Таблица 68
| v1 | v2 | v3 | v4 | v5 | v6 |
|
|
|
|
|
|
|
v1 | Ґ | Ґ | 5 | 5 | 2 | 12 |
| 0 | 0 | 0 | 0 | 0 | 0 |
v2 | Ґ | Ґ | Ґ | Ґ | Ґ | 2 |
| Ґ | Ґ | 7 | 5 | 5 | 5 |
v3 | Ґ | 2 | Ґ | Ґ | Ґ | Ґ |
| Ґ | 5 | 3 | 3 | 3 | 3 |
v4 | Ґ | 2 | Ґ | Ґ | Ґ | Ґ |
| Ґ | 5 | 4 | 4 | 4 | 4 |
v5 | Ґ | Ґ | 1 | 2 | Ґ | Ґ |
| Ґ | 2 | 2 | 2 | 2 | 2 |
v6 | Ґ | Ґ | Ґ | Ґ | Ґ | Ґ |
| Ґ | 12 | 12 | 9 | 7 | 7 |
Получаем, что в качестве такой последовательности надо взять номера 6, 2, 3, 5, 1, так как
Тогда v1v5v3v2v6 – искомый минимальный путь из v1 в v6 в нагруженном орграфе D, причем он содержит минимальное число дуг среди всех возможных минимальных путей из v1 в v6 .
Алгоритм Форда-Беллмана нахождения минимального пути в нагруженном ориентированном графе D из vнач в vкон.( vнач ≠ vкон)
записываем в виде матрицы, i- строка, k-столбец.
1) Составляем таблицу , i=1,…,n, k=0,…,n-1. Если , то пути из vнач в vкон нет. Конец алгоритма.
2) Если то это число выражает длину любого минимального пути из vнач в vкон. Найдем минимальное k11, при котором . По определению получим, что k1- минимальное число дуг в пути среди всех минимальных путей из vнач в vкон.
3) Затем определяем номера i2,…, такие, что
,
,
,
то есть, восстанавливаем по составленной таблице и матрице стоимости искомый минимальный путь из vнач в vкон.
Экзамен проводиться письменно.
Предлагаемые практические задания на экзамене составлены в соответствии с теоретическими вопросами. На экзамене можно иметь с собой калькулятор.
Yandex.RTB R-A-252273-3
- Универсальное множество: Универсальное множество (универсум) — множество, содержащее все мыслимые объекты. Упорядоченное множество — множество, на котором задано отношение порядка.
- Множество. Способы задания множеств (перечислением или списком, порождающей процедурой, описанием характеристического свойства). Привести примеры.
- Объединение более чем двух множеств. Пусть дано семейство множеств Тогда его объединением называется множество, состоящее из всех элементов всех множеств семейства:
- Алгебра множеств. Законы алгебры множеств. Доказать один из законов алгебры множеств.
- Множество. Мощность множества. Нахождение мощности объединения множеств (для двух множеств, для трех множеств, для n-множеств). Привести пример.
- Векторы. Прямое произведение множеств. Мощности прямого произведения множеств.
- Отношения. Основные понятия отношений (отношения; унарные, бинарные, n-местные отношения)
- Отношения. Бинарные отношения. Основные понятия (определение, обозначения, область определения, область значений, способы задания бинарных отношений). Привести примеры.
- Способы задания бинарных отношений
- Отношения. Свойства бинарных отношений (рефлексивность, антирефлексивность, симметричность, антисимметричность, транзитивность). Привести примеры.
- Переключательные (булевы) функции. Происхождение булевых функций.
- Булевы функции от одного аргумента. (Определение. Все булевы функции от одного аргумента).
- Булевы функции от двух аргументов (Определение булевой функции двух аргументов, тождественный ноль, тождественная единица, конъюнкция, штрих Шеффера, дизъюнкция, стрелка Пирса (функция Вебба)).
- Свойства дизъюнкции, конъюнкции и отрицания (теорема 4.3).
- Свойства эквиваленции, импликации и отрицания (теорема 4.4).
- Выражение одних булевых функций через другие (теорема 4.5).
- Булевы функции от n аргументов (определение, равенство булевых функций, суперпозиция булевых функций). Булевы функции от n переменных
- Булевы функции и формулы алгебры высказываний.
- Нормальные формы булевых функций.
- Применение булевых функций к релейно-контактной схеме. Две основные задачи теории релейно-контактных схем.
- Релейно-контактные схемы в эвм. Двоичный полусумматор. Одноразрядный двоичный сумматор.
- Графы. Основные понятия и определения (вершины, ребра, петли, кратность ребра, псевдограф, мультиграф, граф, орграф, неориентированный граф). Привести примеры.
- Графы. Матричное задание графов. Матрица смежности, матрица инцидентности. Привести примеры.
- Графы. Свойства матрицы смежности и инцидентности. Утверждение о числе всех путей (маршрутов) длины k из одной вершины в другую. Утверждение о наличие хотя бы одного контура.
- Графы. Связность. Компоненты связности. (Достижимость вершины, связный (сильно связный орграф) граф, слабо связанный, несвязанный, компонента связности (сильной связности)). Привести примеры.
- Графы. Матрицы связности. Утверждение о матрицах связности, матрицы достижимости, матрицы сильной связности.
- Графы. Поиск путей (маршрутов) с минимальным числом дуг (ребер). Алгоритм фронта волны.
- Графы. Минимальные пути (маршруты) в нагруженных орграфах (графах). Алгоритм Форда-Беллмана.