Потоки в сетях.
Варианты задач:
1) Пусть каждой дуге графа приписана не только пропускная способность , - верхняя граница потока через дугу ( ) по так же - нижнюю границу потока через дугу Если задать стоимость единицы потока , протекающего по дуге, то возникает задача нахождения допустимого потока минимальной стоимости (от s и t).
2) Ищутся max потоки между каждой парой вершин. Она может быть решена как
« отдельных » от s и t задач, но это трудоёмкий процесс. При нахождении
путей между каждой парой вершин графа не обязательно решать каждую задачу индивидуально .
3)Если вместо 1 источника и 1 стока рассмотреть несколько источников и стоков, причем между различными источниками и стоками протекают потоки различных продуктов, то имеем задачу с многопродуктовым потоком.
Пропускная способность дуги () ограничена для суммы всех видов продуктов через эту дугу.
4) Если исходить оттого, что поток на входе = потоку на выходе, то выходит поток дуги
= входному потоку, умноженному на некоторое неотрицательное число, то получим задачу о потоках с «выигрышами». В такой задаче потоки могут и « порождаемые» и «погашаемые» самим графом, а поток, входящий в S и потом покидающий t, могут изменяться совершенно независимо.
Задачи о max потоке
Рассмотрим граф G=(X,A) с пропускными способностями дуг , источником S и стоком t. S,tX.Множество чисел ,определенных на дугах (, называется потоками в дугах, если выполняется условие:- и
-
– уравнение сохранения потока : Поток, втекающий в вершину, равен потоку, вытекающему из вершины за исключением источника (s) и стока (t).Для S-S-сетевое вытекание и t- приток велиены,V соответственно.
-
– ограниченны на пропускные способности для каждой дуги G.Задача: найти множество потоков по дугам, чтобы величина V=была максимальной.
Теорема Форда-Фацкерсона:
(о максимальном потоке и максимальном разрезе).
Величина максимального потока из s в t равна величине min разреза (), отделяющего s от t. Разрез отделен s от t , если S и t .Величиной такого разреза называется сумма пропускных способностей всех дуг из g, начальные ве
Вершины которых лежат в , а конечные в ,т.е. ) Минимальный разрез ( )- это разрез с наименьшим таким значением.
Доказательство.
Очевидно, что max поток из s в t не может быть больше, чем v ( ) т.е. всякая цель из s в t проходит хотябы через 1 дугу данного разреза. Поэтому достаточно установить существование потока с таким значением. Допустим , что поток задается м-мерным вектором . и определим разрез ( ) рекурсивным применением нижеуказанного шага б)
а ) Начать, пологая { s}.
б) Если и, кроме того, или
, то включить во множество и повторять этот шаг до тех пор, пока множество нельзя будет рассмотреть дальше.
Теперь могут возникнуть 2 случая в зависимости от того, будет ли t или t.
.
Случай (1) , t; В соответствии с шагом б) отношение t означает следующее: существует такое « неориентирование « цель, ведущее из s в t, что для каждой дуги (), используется только в прямом направлении ( прямой дуги ), а для каждой дуги ( ), используется только в обратном направлении, т.е. от к )(
обратной дуги ), ( эта цепь называется аугументами augmen - увеличение ) (
цепью потока.
Пусть = min [] для прямой дуги ( ),
()
) для обратной дуги (
()
(и
Если теперь величину прибавить к потоку во всех прямых дугах и вычесть из всех обратных дугах цепи , то в результате получится новый допустимый поток, на единиц больший, чем предыдущий. Это очевидно в силу того, что прибавление величины к потоку в прямых дугах не может привести к пресыщению ни одной из пропускных способностей этих дуг (т.к. ) , а вычитание из потока в обратных дугах не может сделать поток в этих дугах отрицательным ( т.к.
Используя наш направленный поток, можно затем повторить шаги а) и б) и опредилив новый разрез( ) , повторить
Случай (2), t(т.е.t). В соответствии с шагом ( ) и Следовательно и величин потока , а именно равна величине разреза (.
Т.к. в случае (1) поток все время увеличивается, по крайней мере, на 1, то при целочисленности всех gij max и поток направляется за конечное число шагов – как только возникает случай (2). Этот поток будет равен величине текущего разреза () , который будет равен минимальному разрезу. Теорема доказана.
Алгоритм начинает работу с произвольного допустимого потока ( можно взять и 0-й поток), затем стремится увеличить величину потока с помощью систематического поиска всех возможных аугментальных целей потока от s к t. Поиск аугментальной цели осуществляется с помощью расставленных пометок в вершинах графа. Поэтому указывают, вдоль каких дуг может быть увеличен поток и на сколько.
Как только найдена одна из таких цепей, поток вдоль нее увеличивают до max значения, а пометки в вершинах стираются и вновь полученный поток используется в качестве исходного при новой расстановке пометок. Алгоритм работу заканчивает и дает max поток, если нельзя найти ни 1 аугментальную цель.