Х. Пападимитриу, К. Стайглиц - Комбинаторная оптимизация (1125252), страница 41
Текст из файла (страница 41)
9.!3. Алгоритм настроения максимального потока. Гл. 9. задача о максамальком патоке зультат. Рассмотрим теперь случай, когда о имеет нулевую сквозную пропускную способность (случай, когда и имеет нулевую сквозную пропускную способность, идентичен). Тогда о имеет нулевой вход, и, следовательно, нет дуг, входщих в о, которые могли бы использоваться в прямом пути. Поэтому дуга а=(о, и) не может использоваться ни в каком прямом пути.
Лемма 9.2. В конце каждого этапа и — тупиковый поток в А М ()). Доказательство. Если некоторая дуга беспгмчезна при рассмот. ренин прямых увеличивающих путей относительно д, она будет оставаться такой на протяжении всего этапа, поскольку единственными изменениями на этапе являются удаление дуг и уменьше.
ние пропускных способностей. Следовательно, в конце этапа никакой прямой увеличивающий путь относительно д в АМ(1) не мо. жет проходить через вершину или дугу, удалявшуюся во время этого этапа. Однако этап кончается только тогда, когда удаляется з или 1. Поэтому в конце этапа нет прямых увеличивающих путей, и, следовательно, д — тупиковый поток. (1 Лемма 9.3. Расстояние от з до г в АМ(1'; й) на произвольном этапе строго больше, чем расстояние от з до 1 в АМ (1) на предыдуи(ем этапе. Доказательство. Легко видеть, что вспомогательная сеть АМ(~д1 д) совпадает со вспомогательной сетью сети АМ(1) относительно д. Однако в АМ(1) нет прямых увеличивающих путей относительно потока й, так как, согласно лемме 9.2, д — тупиковый поток. Поэтому все увеличивающие пути имеют длину, обльшую, чем расстояние от з до г' в А М (1). Отсюда следует, что расстояние от з до 1 в АУ(1+д) больше, чем расстояние от з до г' в Ам(г).
[ ) Теорема 9.2. Алгоритм, представленный на рис, 9.! 3, корректно решает задачу о максимальном потоке для сети Лг= (з, й )л, А, о), используя О(1)' 1о) арифметических операций. Доказа1пельство. На последнем этапе з и 1 не связаны, поэтому максимальный поток в М()) — нулевой. Однако, согласно предложению 1, этот максимальный поток имеет величину 1)1 — 1)1, где 1(1 — величина максимального потока в Ж. Отсюда 1)1 = ф, и, следовательно, по завершении алгоритма достигается оптимум. Для получения временной опенки отметим вначале, что имеется 0(~)л1) этапов, Это следует нз того, что, согласно лемме 9.3, расстояние от з до 1 в АЛ1()) возрастает оз этапа к этапу, а так как У.б, Случай единичных пропускных способностей 217 оно не можез превысить 1)е~, то возможно не более ~)е~ этапов. Во времени, необходимом для выполнения каждого этапа, доминирует общее число Т обработок различных дуг (второй выделенный прямоугольник процедуры ПРОТОЛКНУТЬ на рис.
9.13). Выразим тот факт, что шаг обработки дуги на этапе может быть либо иасыщаеощим (при котором дуга наполняется до ее пропускной способности), либо частичным, представив Т в виде Т==Т, + Т„. Если для некоторой дуги выполняется насьпцающий шаг, то она удаля. ется из множества дуг; поэтому возможно не более одного такого шага для каждой дуги, и, следовательно, Т,=О()А1). Однако может быть много частичных шагов для одной и той же дуги.
Но здесь следует заметить, что на каждом этапе бывает не более ~ Ц выполнений процедур ПРОТОЛКНУТЬ и ПРОТЯНУТЬ, так как при каждом их выполнении удаляется вершина с наименьшейсквозной пропускной способностью, с которой началось выполнение данной процедуры. Кроме того, при каждом выполнении процедур ПРОТОЛКНУТЬ и ПРОТЯНУТЬ возможно не более 1Ц частичных шагов (по одному для каждой вершины), что вытекает из систематизированной обработки вершин. Следовательно, на каждом этапе бывает не более 1)еР частичных шагов, и Т =Те+То — 0(~А~) + 0(~)'Р)=- =-0((Ц»). Поэтому в целом по всем этапам имеется О()Ц«) арифметических операций, и теорема доказана.
9.5 Случай еднннчных пропускных способностей Очень легко понять, что если пропускные способности дуг сети целочисленны, то все промежуточные потоки, появляющиеся в алгоритме построения максимального потока из предыдущего параграфа (так же, как в любом другом «разумном» алгоритме построения максимального потока), тоже целочисленны. Поэтому еслп пропускные способности дуг сети равны единице, то величины потоков по дугам всегда будут равны 0 или! и все вспомогательные сети в нашем алгоритме построения максимального потока также будут иметь единичные дополнительные пропускные способности.
Случай единичных пропускных способностей особенно интересен тем, что, как показано в задачах и следующей главе, он имеет много приложений к некоторым важным чисто комбинаторным задачам, таким, как задача о паросочетании в двудольном графе. Кроме того, можно показать, что наш алгоритм построения максимального потока особенно хорошо работает в случае единичных пропускных способностей. Начнем с анализа сложности каждого этапа нашего алгоритма прн' применении его к сетям с единичными пропускными способностями дуг Гл. В. Задача о моковмальном потоке Лемма 9.4. Каждый этап алгоритма, приведенного на рис.
9.13, примененного к сети й»=-(з, », У, А) с единичными пропускнычи способностями дуг, можно выполнить за время 0(~А~). Доказательство. Достаточно заметить, что в том случае, когда все дополнительные пропускные способности равны 1, каждая обрабатываемая дуга сразу же становится насыщенной. Д Таким, образом, учитывая тот факт, что пропускные способности равны 1, можно улучшить верхнюю оценку сложности каждого этапа алгоритма построения максимального потока, по крайней мере для разреженных сетей. Оказывается, что другой сомножитель в сложности алгоритма — число требуемых этапов — также может быть улучшен.
Для этого нам потребуется Лемма 9.5. В сети М с единичными пропуекны.ии способностями дуг расстояние 1 между з и» не кажет быть больше чем 2 М~УГ ~Д, где 1»г» — величина максимального потока. Доказательство. Пусть У, обозначает подмножество вершин из У, расстояние до которых от з равно». Заметим, что множество дуг, идущих из У; в У»~„где» <1, является з-»-разрезом в й», поэтому его величина, т.
е. общее число дуг, должна быть не меньше 1» ~. Но максимально возможное число дуг, идущих из У, в У,„, равно (У,( )1'»„). Отсюда !1'») ~У»~»()!)), »= 1, ..., 1 — 1, и, следовательно, по крайней мере одно из чисел У»(, ! У»+» ! не меньше, чем у» 1»'1. Поэтому по крайней мере каждый второй уровень среди У„..., У, должен содержать не менее ~у (~) вершин; отсюда 1»2 »,» ф<)У! и 1<2)У)/у' (Д, Г» Теорема 9.3. Для сетей с единичными пропускными способностями дуг время работы алгоритма, приведенного на рис.
9,13, не превосходит О (! У1м'1А 1). Доказательство. По лемме 9.4 достаточно показать, что число 5 требуемых этапов не превосходит О (~ У ~м'). Заметим сначала, что 5()Д, поскольку на каждом этапе значение потока увеличивается по крайней мере на 1. Поэтому если ))(()У~и', то требуемый результат сразу же получается. Если же (Г( !У1м', то рассмотрим этап, после которого величина потока первый раз превышает ~ Д вЂ” (У1м', пусть д — поток в начале этого этапа.
Величина дополнительного потока не превосходит ~ У1м', и, следовательно, далее будет не более 1У,мо этапов. Так как расстояние 1 от з до 1 в й»(Г) монотонно возрастает от этапа к этапу, У.о. Случай едаличвых пропускных способкоапеи 2>9 то число этапов до рассматриваемого момента не может быть больше, чем величина ! в >>Г(д). Однако лемма 9.5 в применении к >у (к) дает )(2~)')>')/ (! ) — ~ д1, так как значение максимального потока в Л>(д) равно )Г"! — ) д).
Поскольку и было выбрано так, что )! ! — (й(~)()> (м", то число этапов до рассматриваемого момента не превышает 2()>!е> . Поэтому общее число этапов 5 не превосходит 3!'о')м'+1, и теорема доказана Г1 В тех случаях, когда сети с единичными пропускными способностями дуг имеют некоторую оолее специальную структуру, можно Рис.
9.>4. показать, что наш алгоритм работает еще лучше. В частном случае, который мы будем сейчас рассматривать, требуется не галька, чтобы сеть имела единичные пропускные способности дуг, но также, чтобы у каждой вершины лиГ>о степень захода была равна 1 или 9, либо степень исхода была равна ! или О. Такие сети мы будем называть простыми, Например, сеть, представленная на рис. 9.!4, является простой.