Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3852 / 211 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик
Лекция 16:

Потоки

< Лекция 15 || Лекция 16: 1234

Теорема 1. Поток максимален тогда и только тогда, когда относительно него нет увеличивающего пути. Максимальная величина потока равна минимальной пропускной способности разреза данной сети.

Доказательство. Если поток максимален, то из леммы 3 следует, что увеличивающего пути нет. Обратно, пусть f - поток, относительно которого нет увеличивающего пути. Покажем, что этот поток максимален. Для этого рассмотрим множество X, состоящее из всех вершин сети, достижимых подходящими путями из вершины s, \overline{X}=V-X. Так как увеличивающих путей нет, то t\in \overline{X}, так что (X,\overline{X}) - разрез. Пусть e=(x,y) - ребро этого разреза. Вершина x достижима из s подходящим путем, а вершина y недостижима. Тогда f(e)=c(e), так как иначе к подходящему пути, ведущему из s в x, можно было бы добавить ребро e и вершину y, и получился бы подходящий путь из s в y. Итак, на каждом ребре разреза (X,\overline{X}) поток равен пропускной способности, следовательно, f(X)=c(X). Аналогично, рассматривая ребра из множества (\overline{X},X), убеждаемся, что поток на каждом таком ребре равен 0, в противном случае опять можно было бы продолжить некоторый подходящий путь до вершины из \overline{X}. Следовательно, f(\overline{X})=0. Применяя лемму 1, получаем

M(f)=f(X)-f(\bar{X})=c(X).

По лемме 2, величина любого потока не превосходит пропускной способности любого разреза. Значит, f - максимальный поток, а (X,\overline{X}) - разрез с минимальной пропускной способностью.

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

  1. если f(e)< c(e), то ребро e включается в сеть R и ему в этой сети присваивается пропускная способность c'(e)=c(e)-f(e) ;
  2. если f(e)>0, то к сети R добавляется ребро противоположного направления \bar{e} с пропускной способностью c'(\bar{e})=f(e).

Легко видеть, что увеличивающие пути в исходной сети находятся во взаимно однозначном соответствии с ориентированными путями из источника в сток в остаточной сети. В алгоритме Эдмондса--Карпа нужно в остаточной сети искать кратчайший ориентированный путь из s в t. Это можно сделать за линейное время с помощью поиска в ширину. Если увеличивающий путь обнаружен, поток увеличивается, как описано в доказательстве леммы 3, для нового потока строится остаточная сеть и т.д., пока не будет построен поток, относительно которого нет увеличивающего пути (в остаточной сети нет ориентированного пути из источника в сток. Общая оценка трудоемкости алгоритма Эдмондса--Карпа O(m^{2} n). В настоящее время известны и более быстрые алгоритмы для задачи о максимальном потоке.

< Лекция 15 || Лекция 16: 1234
Татьяна Наумович
Татьяна Наумович

Скажите, пожалуйста, можно ли еще получить документ о прохождении курса ("Графы и алгоритмы", декабрь 2020) после предоставления всех дополнительных необходимых документов?
Или нужно проходить заново?

Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?