Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости — различия между версиями
(→Корректность) |
|||
Строка 35: | Строка 35: | ||
В основе алгоритма лежит описанная выше теорема. На каждой итерации алгоритма будем находить путь минимальной стоимости из <tex>s</tex> в <tex>t</tex> и дополнять поток вдоль этого пути. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса. | В основе алгоритма лежит описанная выше теорема. На каждой итерации алгоритма будем находить путь минимальной стоимости из <tex>s</tex> в <tex>t</tex> и дополнять поток вдоль этого пути. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса. | ||
− | ==Реализация== | + | ===Реализация=== |
+ | * Начало. | ||
+ | * '''Шаг 1'''. Пусть <tex>U</tex> {{---}} корень дерева, в котором лежит <tex>S</tex>. | ||
'''for''' <tex>e \in E</tex> { | '''for''' <tex>e \in E</tex> { | ||
Строка 45: | Строка 47: | ||
} | } | ||
− | ==Асимптотика== | + | ===Асимптотика=== |
Каждая итерация выполняется за время работы поиска кратчайшего пути, обозначим его <tex>F(V, E)</tex>. В сетях с целочисленной пропускной способностью итераций будет не более <tex>|f|</tex>. | Каждая итерация выполняется за время работы поиска кратчайшего пути, обозначим его <tex>F(V, E)</tex>. В сетях с целочисленной пропускной способностью итераций будет не более <tex>|f|</tex>. | ||
Версия 01:06, 24 января 2016
Содержание
Теорема Форда-Фалкерсона
Задача о потоке минимальной стоимости состоит в нахождении среди всех потоков данной величины наименее затратного.
Лемма (о представлении потоков): |
Пусть и — потоки в сети . Тогда можно представить как сумму , где — поток в остаточной сети . |
Доказательство: |
Рассмотрим произвольное ребро Антисимметричность и закон сохранения потока проверяются аналогично из . . Таким образом, поток через каждое ребро не превосходит пропускной способности остаточной сети. лемме о сложении потоков. |
Теорема: |
Пусть:
Тогда: поток — поток минимальной стоимости среди потоков величины , где — поток величины , проходящий по пути . |
Доказательство: |
Пусть лемме о сложении потоков его величина будет равна . — поток минимальной стоимости величины в . Представим , где — поток в остаточной сети . Тогда разность будет потоком в сети и поПо теореме о декомпозиции можно представить как сумму элементарных потоков вдоль путей и циклов . В этом представлении нет отрицательных циклов, иначе прибавление его к даст поток меньшей стоимости. Если есть положительный цикл, то вычтем его из и получим поток меньшей стоимости. Таким образом, для всех циклов. Тогда Отсюда . и поток — минимальный. |
Алгоритм
В основе алгоритма лежит описанная выше теорема. На каждой итерации алгоритма будем находить путь минимальной стоимости из
в и дополнять поток вдоль этого пути. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса.Реализация
- Начало.
- Шаг 1. Пусть — корень дерева, в котором лежит .
for{ } while (существует путь в остаточной сети ) { кратчайший в смысле стоимости путь дополнить поток вдоль }
Асимптотика
Каждая итерация выполняется за время работы поиска кратчайшего пути, обозначим его
. В сетях с целочисленной пропускной способностью итераций будет не более .Итого получаем время работы
.См. также
- Поток минимальной стоимости
- Использование потенциалов Джонсона при поиске потока минимальной стоимости
Источники информации
Литература
- Ravindra Ahuja, Thomas Magnanti, James Orlin. Network flows (1993)