Поиск потока минимальной стоимости методом дополнения вдоль путей минимальной стоимости — различия между версиями
(→Реализация) |
(→Теорема Форда-Фалкерсона) |
||
Строка 14: | Строка 14: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
− | Пусть: | + | Пусть: <tex> G </tex> {{---}} сеть с истоком <tex> s </tex> и стоком <tex> t </tex>, <tex> f </tex> {{---}} поток минимальной стоимости в сети <tex> G </tex> среди потоков величины <tex> a </tex>, <tex> P </tex> {{---}} путь минимальной стоимости <tex> s \leadsto t</tex> в остаточной сети. |
− | |||
− | |||
− | |||
Тогда: | Тогда: | ||
<tex>\forall \delta : 0 \leqslant \delta \leqslant c_f(P)</tex> поток <tex>f + \delta \cdot f_P</tex> {{---}} поток минимальной стоимости среди потоков величины <tex>a + \delta</tex>, где <tex>\delta \cdot f_P</tex> {{---}} поток величины <tex>\delta</tex>, проходящий по пути <tex>P</tex>. | <tex>\forall \delta : 0 \leqslant \delta \leqslant c_f(P)</tex> поток <tex>f + \delta \cdot f_P</tex> {{---}} поток минимальной стоимости среди потоков величины <tex>a + \delta</tex>, где <tex>\delta \cdot f_P</tex> {{---}} поток величины <tex>\delta</tex>, проходящий по пути <tex>P</tex>. |
Версия 14:27, 24 января 2016
Содержание
Теорема Форда-Фалкерсона
Задача о потоке минимальной стоимости состоит в нахождении среди всех потоков данной величины наименее затратного.
Лемма (о представлении потоков): |
Пусть и — потоки в сети . Тогда можно представить как сумму , где — поток в остаточной сети . |
Доказательство: |
Рассмотрим произвольное ребро Антисимметричность и закон сохранения потока проверяются аналогично из . . Таким образом, поток через каждое ребро не превосходит пропускной способности остаточной сети. лемме о сложении потоков. |
Теорема: |
Пусть: — сеть с истоком и стоком , — поток минимальной стоимости в сети среди потоков величины , — путь минимальной стоимости в остаточной сети.
Тогда: поток — поток минимальной стоимости среди потоков величины , где — поток величины , проходящий по пути . |
Доказательство: |
Пусть лемме о сложении потоков его величина будет равна . — поток минимальной стоимости величины в . Представим , где — поток в остаточной сети . Тогда разность будет потоком в сети и поПо теореме о декомпозиции можно представить как сумму элементарных потоков вдоль путей и циклов . В этом представлении нет отрицательных циклов, иначе прибавление его к даст поток меньшей стоимости. Если есть положительный цикл, то вычтем его из и получим поток меньшей стоимости. Таким образом, для всех циклов. Тогда Отсюда . и поток — минимальный. |
Алгоритм
На основании теоремы построим алгоритм.. На каждой итерации алгоритма будем находить путь минимальной стоимости из
в в остаточной сети и дополнять поток вдоль него. Выбирать алгоритм для поиска кратчайших путей следует с учетом того, что в ходе алгоритма появляются ребра отрицательного веса.Реализация
- Начало.
- Шаг 1. Для каждого ребра зададим поток равный .
- Шаг 2. Построим остаточную сеть .
- Шаг 3. Если существует путь в остаточной сети — перейдем к шагу 4, иначе к шагу 6.
- Шаг 4. Найдем путь c минимальной стоимостью: путь .
- Шаг 5. Дополним поток вдоль пути .
- Шаг 6. Поток минимальной стоимости найден, т.к в остаточной сети не осталось ни одного пути.
- Конец.
Асимптотика
Каждая итерация выполняется за время работы поиска кратчайшего пути, обозначим его
. В сетях с целочисленной пропускной способностью итераций будет не более .Итого получаем время работы
.См. также
- Поток минимальной стоимости
- Использование потенциалов Джонсона при поиске потока минимальной стоимости
Источники информации
Литература
- Ravindra Ahuja, Thomas Magnanti, James Orlin. Network flows (1993)