
- •Изоморфизм
- •Матричное задание графа
- •Свойства матрицы смежности
- •Операции над графами
- •Достижимость и связность
- •Матрицы достижимости и контрдостижимости
- •Нахождение сильных компонент
- •Конденсация графа
- •Базы и антибазы
- •Построение компонент связности в неориентированном графе
- •Построение компонент связности в ориентированном графе
- •Система независимых циклов
- •Дерево. Остов граф
- •Процесс восстановления дерева по набору
- •Алгоритм построения произвольного остова
- •Определение минимального остова
- •Алгоритм построения системы независимых циклов графа
- •Модификация Форда
- •Алгоритмы поиска всех кратчайших путей
- •Алгоритм Флойда
- •Алгоритм Флойда
- •Алгоритм Данцига
- •Алгоритм Данцига
- •Раскраска
- •Метод построения функции Гранди на графе
- •Гамильтоновы пути, контуры и задача Коммивояжера
- •Метод Роберта и Флореса (перебор-метод для орграфов)
- •Алгоритм поиска увеличивающего пути
- •Алгоритм поиска максимального потока
- •Алгоритм Форда и Фалкерсона
- •Модификация алгоритма поиска максимального потока при нескольких источниках и стоках
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритмы построения покрывающих деревьев
Модификация алгоритма поиска максимального потока при нескольких источниках и стоках
Пусть в графе имеется несколько источников и стоков. Можно ли в данном случае воспользоваться алгоритмом поиска максимального потока, который используется в графах с одним источником и стоком?
Можно, но для
этого необходимо ввести 2 новые вершины:
главный источник S
и главный сток T.
Соединим главный источник S
со всеми источниками s1,
s2,…
исходного графа дугами
,
считая пропускную способность каждой
из этих дуг неограниченной. Соединим
стоки исходного графа с главным стоком
дугами
,
считая пропускную способность каждой
из этих дуг неограниченной.
Любой поток в расширенном графе соответствует потоку в исходном графе. Более того, максимальному потоку в расширенном графе соответствует максимальный поток в исходном графе.
Алгоритм поиска потока минимальной стоимости
Рассмотрим задачу пересылки с минимальными затратами заданного количества единиц потока из источника в сток в графе с заданными на дугах промежуточными способностями и стоимостями прохождения одной единицы потока. Этот алгоритм также разработан Фордом и Фолкерсоном.
Пусть
обозначает стоимость прохождения
единицы потока по дуге
.
Сначала будем предполагать, что каждая
из величин
является целочисленной. Это предположение
не является жёстким. Задача о потоке
минимальной стоимости может быть
представлена так: «Найти
(5), где существуют такие ограничения:
(6)
,
где
(7)
(8)
(9)
Сумма, входящая
в выражение (5) представляет общую
стоимость потока. Уравнение (6) показывает,
что чистый суммарный поток из источника
s
должен быть равен
.
Уравнение (7) показывает, что чистый
поток из любой вершины x,
не совпадающей ни с источником S
, ни со стоком t,
должен быть равен 0. Уравнение (8)
показывает, что чистый поток из стока
.
Неравенство (9) описывает требование,
согласно которому поток в каждой дуге
должен иметь величину, находящуюся в
интервале от 0 до значения пропускной
способности данной дуги.
Задача (5-9) является задачей линейного программирования.
Предположим, что
соотношение (5) было бы заменено следующим
соотношением:
(10), где P
– достаточно большое число.
Любой поток, доставляющий max соотношению (10), обеспечивает и min соотношению (5).
Алгоритм поиска потока минимальной стоимости выполняет следующие действия:
Вначале из вершины s в вершину t пересылается как можно больше единиц потока, полная стоимость прохождения по сети каждой из которых равна 0.
Затем из вершины s в вершину t пересылается как можно больше единиц потока, полная стоимость прохождения по сети каждой из которых составляет 1.
Далее процедура выполнения алгоритма продолжается аналогичным образом; при этом полная стоимость похождения по сети единицы потока каждый раз увеличивается на единицу.
Работа алгоритма заканчивается либо тогда, когда через сеть удаётся пропустить заданное число единиц потока - , либо когда ни одной дополнительной единицы потока пропустить нельзя.