Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости — различия между версиями
(→Теорема Форда-Фалкерсона) |
(→Алгоритм) |
||
| Строка 32: | Строка 32: | ||
На основании теоремы построим алгоритм.. На каждой итерации алгоритма будем находить путь минимальной стоимости из <tex>s</tex> в <tex>t</tex> в остаточной сети и дополнять поток вдоль него. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса. | На основании теоремы построим алгоритм.. На каждой итерации алгоритма будем находить путь минимальной стоимости из <tex>s</tex> в <tex>t</tex> в остаточной сети и дополнять поток вдоль него. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса. | ||
| − | === | + | ===Описание=== |
* Начало. | * Начало. | ||
* '''Шаг 1'''. Для каждого ребра зададим поток равный <tex>0</tex>. | * '''Шаг 1'''. Для каждого ребра зададим поток равный <tex>0</tex>. | ||
| Строка 41: | Строка 41: | ||
* '''Шаг 6'''. Поток минимальной стоимости найден, т.к в остаточной сети не осталось ни одного пути. | * '''Шаг 6'''. Поток минимальной стоимости найден, т.к в остаточной сети не осталось ни одного пути. | ||
* Конец. | * Конец. | ||
| + | |||
| + | ===Реализация=== | ||
| + | |||
| + | '''for''' <tex>e \in E</tex> { | ||
| + | <tex>f[e] \leftarrow 0</tex> | ||
| + | } | ||
| + | '''while''' (существует путь <tex>s \leadsto t</tex> в остаточной сети <tex>G_f</tex>) { | ||
| + | <tex>P \leftarrow</tex> кратчайший в смысле стоимости путь <tex>s \leadsto t</tex> | ||
| + | дополнить поток <tex>f</tex> вдоль <tex>P</tex> | ||
| + | } | ||
===Асимптотика=== | ===Асимптотика=== | ||
Версия 14:29, 24 января 2016
Содержание
Теорема Форда-Фалкерсона
Задача о потоке минимальной стоимости состоит в нахождении среди всех потоков данной величины наименее затратного.
| Лемма (о представлении потоков): |
Пусть и — потоки в сети . Тогда можно представить как сумму , где — поток в остаточной сети . |
| Доказательство: |
|
Рассмотрим произвольное ребро из . . Таким образом, поток через каждое ребро не превосходит пропускной способности остаточной сети. Антисимметричность и закон сохранения потока проверяются аналогично лемме о сложении потоков. |
| Теорема: |
Пусть: — сеть с истоком и стоком , — поток минимальной стоимости в сети среди потоков величины , — путь минимальной стоимости в остаточной сети.
Тогда: поток — поток минимальной стоимости среди потоков величины , где — поток величины , проходящий по пути . |
| Доказательство: |
|
Пусть — поток минимальной стоимости величины в . Представим , где — поток в остаточной сети . Тогда разность будет потоком в сети и по лемме о сложении потоков его величина будет равна . По теореме о декомпозиции можно представить как сумму элементарных потоков вдоль путей и циклов . В этом представлении нет отрицательных циклов, иначе прибавление его к даст поток меньшей стоимости. Если есть положительный цикл, то вычтем его из и получим поток меньшей стоимости. Таким образом, для всех циклов. Тогда . Отсюда и поток — минимальный. |
Алгоритм
На основании теоремы построим алгоритм.. На каждой итерации алгоритма будем находить путь минимальной стоимости из в в остаточной сети и дополнять поток вдоль него. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса.
Описание
- Начало.
- Шаг 1. Для каждого ребра зададим поток равный .
- Шаг 2. Построим остаточную сеть .
- Шаг 3. Если существует путь в остаточной сети — перейдем к шагу 4, иначе к шагу 6.
- Шаг 4. Найдем путь c минимальной стоимостью: путь .
- Шаг 5. Дополним поток вдоль пути .
- Шаг 6. Поток минимальной стоимости найден, т.к в остаточной сети не осталось ни одного пути.
- Конец.
Реализация
for { } while (существует путь в остаточной сети ) { кратчайший в смысле стоимости путь дополнить поток вдоль }
Асимптотика
Каждая итерация выполняется за время работы поиска кратчайшего пути, обозначим его . В сетях с целочисленной пропускной способностью итераций будет не более .
Итого получаем время работы .
См. также
- Поток минимальной стоимости
- Использование потенциалов Джонсона при поиске потока минимальной стоимости
Источники информации
Литература
- Ravindra Ahuja, Thomas Magnanti, James Orlin. Network flows (1993)