Скажите, пожалуйста, можно ли еще получить документ о прохождении курса ("Графы и алгоритмы", декабрь 2020) после предоставления всех дополнительных необходимых документов? |
Потоки
Теорема 1. Поток максимален тогда и только тогда, когда относительно него нет увеличивающего пути. Максимальная величина потока равна минимальной пропускной способности разреза данной сети.
Доказательство. Если поток максимален, то из леммы 3 следует, что
увеличивающего пути нет. Обратно, пусть - поток,
относительно
которого нет увеличивающего пути. Покажем, что этот поток максимален.
Для этого рассмотрим множество
, состоящее из всех вершин сети,
достижимых подходящими путями из вершины
,
.
Так как увеличивающих путей нет, то
,
так что
- разрез.
Пусть
- ребро этого разреза. Вершина
достижима из
подходящим путем, а вершина
недостижима.
Тогда
, так как иначе к подходящему пути,
ведущему из
в
, можно было бы добавить ребро
и вершину
,
и получился бы подходящий путь из
в
. Итак, на
каждом
ребре разреза
поток равен пропускной способности,
следовательно,
. Аналогично, рассматривая ребра из
множества
, убеждаемся, что поток на каждом таком ребре равен 0,
в противном случае опять можно было бы продолжить некоторый подходящий путь
до вершины из
. Следовательно,
.
Применяя лемму 1,
получаем

По лемме 2, величина любого потока не превосходит пропускной способности
любого разреза. Значит, - максимальный поток,
а
- разрез с минимальной пропускной
способностью.
Многие известные алгоритмы построения максимального потока основаны на
этой теореме и различаются, в частности, стратегией поиска увеличивающих
путей. Первый алгоритм, для которого была получена верхняя оценка
трудоемкости, предложили Эдмондс и Карп в 1972 г. В этом алгоритме всегда
ищется кратчайший (по числу ребер) увеличивающий путь. Удобно этот поиск
вести не на исходной сети , а на остаточной сети
,
которая при заданном на сети
потоке
определяется
следующим
образом. Множество вершин, источник и сток у остаточной сети те же, что
у исходной. Пусть
- ребро исходной сети. Тогда
- если f(e)< c(e), то ребро
включается в сеть
и ему в этой сети присваивается пропускная способность
;
- если
, то к сети
добавляется ребро противоположного направления
с пропускной способностью
.
Легко видеть, что увеличивающие пути в исходной сети находятся во взаимно
однозначном соответствии с ориентированными путями из источника в сток в
остаточной сети. В алгоритме Эдмондса--Карпа нужно в остаточной сети искать
кратчайший ориентированный путь из в
. Это можно
сделать за
линейное время с помощью поиска в ширину. Если увеличивающий путь
обнаружен, поток увеличивается, как описано в доказательстве леммы 3, для
нового потока строится остаточная сеть и т.д., пока не будет построен
поток, относительно которого нет увеличивающего пути (в остаточной сети
нет ориентированного пути из источника в сток. Общая оценка трудоемкости
алгоритма Эдмондса--Карпа
. В настоящее время известны
и более быстрые алгоритмы для задачи о максимальном потоке.