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