Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭММ (ОЗО) новое.doc
Скачиваний:
22
Добавлен:
29.04.2019
Размер:
4 Мб
Скачать

Максимальный поток

Изложение начнем с введения некоторых полезных понятий.

Дуга сети называется ориентированной, если узлы, которые она соединяет, упорядочены — один из них принят за начальный, а другой за конечный. На рисунках и схемах ориентированная дугa обозначается стрелкой, которая показывает, из какого узла выходит эта дуга и в какой узел входит .

Сеть называется ориентированной, если ориентированы все ее дуги.

Узел сети, который является начальным для всех своих дуг (все эти дуги являются выходящими), называют источником, а узел, который является конечным для всех своих дуг (все эти дуги являются входящими), - стоком. Все эти узлы такой сети называются промежуточными.

Припишем каждой дуге АiAk ориентированной сети неотрицательное целое число

,

которое будет называть пропускной способностью этой дуги, интуитивно представляя пропускную способность как максимально возможное количество продукта (например, жидкости или газа в трубопроводе), которое может быть доставлено из узла Аi в узел Ak в единицу времени.

Такую сеть нередко называют транспортной.

В дальнейшем мы будем считать, что в транспортной сети есть ровно один источник и ровно один сток.

Итак, рассмотрим транспортную сеть с одним источником А0 и одним стоком Аn (рис.1); А1,…,Аn-1 – промежуточные узлы.

Будем говорить, что в сети задан поток величины v, если каждой дуге АiAk сети приписано неотрицательное целое число

поток по дуге АiАk, и при этом выполнены следующие условия:

  1. поток по каждой дуге не превосходит ее пропускной способности,

  1. сумма потоков по всем дугам, выходящим из источника A0, равна

(здесь символ -означает, что суммирование ведется по всем дугам A0Ai выходящим из источника А0),

3) сумма потоков по всем дугам, входящим в каждый из промежуточных узлов A0, ..., Аn-1, равна сумме потоков по всем дугам, выходящим из этого узла,

k=1,…,n-1

(здесь символ - означает, что суммирование ведется по всем ду­гам, входящим в промежуточный узел Аk, а символ - что суммирование ведется по всем дугам, выходящим из промежуточного узла Аk).

Условие 3 означает, что из каждого промежуточного узла выходит ровно столько продукта, сколько в него поступило (и значит, никаких потерь продукта в узле Аk не происходит).

Покажем, что сумма потоков по всем дугам, входящим в сток An, также равна величине v потока (иными словами, в сети нет никаких потерь).

Сложим п-1 равенство из условия 3. Имеем

Прежде чем переходить к преобразованию обеих частей полученного равенства, сделаем два полезных замечания.

Замечание 1. Каждая дуга сети является выходящей и входящей одновременно. Например, дуга AiAk для узла Ai является выходящей, а для узла Аk входящей.

Замечание 2. И в левой, и в правой части этого равенства потоки суммируются по всем дугам заданной сети. Просто они по-разному сгруппированы.

Учитывая отмеченные обстоятельства, перегруппируем слагаемые в обеих частях последнего равенства следующим образом:

(суммирование в каждом из n слагаемых левой части ведется по всем дугам, выходящим из узлов A0,А1,..,An соответственно, а суммирование в каждом из п слагаемых правой части ведется по всем дугам, входящим соответственно в узлы A1,...,Аn). Переписав условие 3 чуть иначе,

, k=1,…,n-1

(мы поменяли местами левую и правую части и изменили индексы суммирования), нетрудно заметить, что 2-я, 3-я, ..., п-1-я и n-я суммы в левой части рассматриваемого и весьма большого по размерам равенства соответственно равны 1-й, 2-й, ..., п-2-й и п-1-й суммам в его правой части. Это означает, что это равенство легко упрощается до равенства

(от левой части осталась только 1-я сумма, а от правой части только n-я).

Отсюда уже совсем просто вытекает, что

Далее будем считать, что в сети нет кратных дуг (дуг, соединяющих одну и ту же упорядоченную пару узлов) и при наличии дуги AiAk дуга AkAi в сети отсутствует.

Рассмотрим произвольный путь в транспортной сети, ведущей из источника A0 в сток An (рис.2). Возможны два случая:

  1. ориентация всех дуг пути совпадает с направлением перемещения от узла A0 к узлу Аn (такой путь будем называть ориентированным путем),

  2. среди дуг пути есть такие, ориентация которых противоположна направлению, по которому мы перемещаемся из узла A0 в узел Аn; такие дуги в отличие от прямых дуг, ориентация которых совпадает с выбранным направлением перемещения, будем называть обратными.

Путь A0А1A4A5 на рис. 16 является ориентированным (ориентация всех дуг пути совпадает с направлением перемещения по этому пути от узла A0 узлу А5), а путь A0А2А1A3A5 — нет (дуга А1А2 для этого пути является обратной). В то же время с направлением перемещения по пути A0А1А2A4A5 ориентация дуги А1А2 совпадает (этот путь является ориентированным).

Дугу AiAk сети будем называть насыщенной, если поток по этой дуге равен ее пропускной способности,

Поток в сети будем называть полным, если любой ориентированный путь из источника в сток содержит по меньшей мере одну насыщенную дугу.

Покажем, как найти в транспортной сети полный поток.

0-й шаг. Построим произвольный поток в сети (можно и нулевой).

1-й шаг. Если поток не полный, то в сети существует ориентированный путь, ведущий из источника A0 в сток An, ни одна из дуг которого не является насыщенной. Это позволяет увеличить поток по всем дугам этого пути на одно и то же число так, чтобы хотя бы одна из его дуг оказалась насыщенной. Это число легко найти — оно равно

,

где минимум берется по всем дугам рассматриваемого пути.

Если получаемый при этом поток еще не полон, возникает необходимость 2-го и даже последующих шагов. Однако, в силу ограниченности пропускной способности дуг в сети, число этих шагов конечно, и рано или поздно необходимость в проведении нового такого шага исчезнет, а построенный поток в сети окажется полным.

Более или менее ясно, что построение полного потока — задача достаточно простая. Но как проверить, обладает ли построенный полный поток максимально возможной пропускной способностью (в силу ограниченности пропускной способности транспортной сети поток с максимальной пропускной способностью всегда существует), и как следует поступать в случае отрицательного заключения.

Ответы на оба поставленных вопроса нашли Д.Фалкерсон и Л.Форд. Они предложили критерий, посредством которого можно определить, является ли построенный поток максимальным или нет, а также способ, который позволял бы выйти из тупиковой ситуации и преобразовать полный (но не максимальный) поток в максимальный.

Начнем с описания критерия, в качестве которого они предложили использовать разрез (разделяющее сечение) сети.

Обозначим через X (какое-нибудь) множество узлов заданной транспортной сети, содержащее источник А0 и не содержащее сток Аn, а через — множество всех остальных узлов этой сети. Ясно, что сток .

Совокупность всех дуг сети, начало которых принадлежит множеству X, а конец — множеству , будем называть разрезом сети. Суммарная пропускная способность всех дуг разреза называется пропускной способностью разреза. Будем обозначать ее через .

Заметим, что любой путь из источника А0 к стоку Аn содержит по меньшей мере одну дугу каждого разреза .

В самом деле, перемещаясь по произвольно выбранному пути из источника в сток , мы непременно наткнёмся на узел , за которым будет следовать узел , а это означает, что дуга .

Можно сказать и по-другому: если из сети исключить все дуги какого-нибудь разреза, то в новой сети не останется ни одного ориентированного пути, связывающего источник А0 со стоком Аn. Поэтому разрез сети нередко называют разделяющим сечением.

Отсюда немедленно вытекает, что величина произвольного потока не превышает пропускной способности произвольного разреза :

.

Нетрудно убедиться в том, что пропускная способность любого другого разреза рассматриваемой сети превышает это число. Из последнего неравенства получаем, что

,

где максимум берется по всем потокам в сети, а минимум — по всем ее разрезам .

В силу ограниченности пропускной способности транспортной сети всегда существует допускаемый ею поток (хотя и не обязательно один), величина которого максимальна. Такой поток наибольшей величины называют максимальным, maximal flow.

В свою очередь, разрез наименьшей пропускной способности называют минимальным.

Выписанное выше неравенство означает, что величина максимального потока не превосходит пропускной способности минимального разреза.

На самом деле справедливо более сильное утверждение.

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