Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.10.2024

Просмотров: 187

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

136

ГЛ. 8. МАКСИМАЛЬНЫЙ ПОТОК

числа удовлетворяют следующим линейным ограничениям:

 

v,

если

j = s,

 

 

О,

если ] ф э , t,

(1 )

v^ O ,

v,

если

j = t,

 

 

 

 

 

О ^ хи ^ bij

для

всех

i, /.

(2 )

Здесь первая сумма берется по дугам,

ведущим в узел N j, а вторая

сумма — по дугам, ведущим из

узла N j.

 

 

Неотрицательное число к, фигурирующее в (1), называется

величиной потока. Число Хц называется

потоком по

дуге A tj,

или дуговым потоком.

 

 

 

 

Заметим, что ограничения (1) выражают тот факт, что в каждый узел (кроме источника и стока) приходит столько потока, сколько из него выходит (условие сохранения). Ограничение (2) означает, что поток xtj по дуге ограничен пропускной способностью дуги btj. Ограничения (1) — (2) напоминают законы, согласно которым поток воды движется в водопроводе. Но в действительности не существует такого потока воды, который бы подчинялся условиям

(1) — (2). Чтобы это уяснить, рассмотрим сеть на рис. 8.1 с источ­ ником iVj и стоком N 4. Предположим, что все дуги имеют про­ пускную способность, равную единице. Рассмотрим следующее множество неотрицательных целых чисел: -r12 = 1 , ж24 = 1 , осталь­

ные хи = 0. Эти числа удовлетворяют ограничениям (1) и (2). Но для любой жидкости в трубопроводе, соответствующем рис. 8.1, будет выполняться условие: х13 ^=0, если х12 = 1. Чтобы сеть

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

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

ния с целевой функцией и = 2 xs] и ограничениями (1 ) — (2 ). j

Но поскольку это весьма специальный случай задачи линейного программирования, здесь мы получим более эффективные алгорит­ мы, чем симплекс-метод для общей задачи линейного программи­ рования.

В том случае, когда сеть является цепью N A iZ, N 2, А гг, . . .

. . ., N k с источником N j и стоком N k, максимальная величина потока, который может быть пропущен через сеть, ограничивается минимальной из пропускных способностей дуг этой цепи. Здесь дуга с минимальной пропускной способностью является «узким местом» в сети. Теперь мы дадим общее определение «узкого места1» в произвольной сети.


8.1. ВВЕДЕНИЕ

137

Введем понятие разреза (X , X),

где

X — некоторое

подмноже­

ство

узлов сети,

а

X —дополнение

подмножества X.

Разрезом

(X,

X)

называется

множество

всех

дуг

Ац, для которых либо

N i ^ X ,

N j ^ X ,

либо N j ^ X ,

N i ^

X 1).

Таким образом, разрез

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

превращает сеть в несвязную. Разрез (X, X) называется разде­ ляющим узлы N s и N t (или отделяющим узел N s от N t), если

N s e X , а Х ; бХ.

Пропускной способностью, или величиной, разреза (X, X) назы­ вается с(Х, Х) = 2 .ь и , где сумма берется по всем ориентирован-

1, j

_

ным дугам, ведущим из N t £ X в N j £ X , и по всем неориенти­

рованным дугам, соединяющим N i £ X и Х ;-£Х . Заметим, что при определении разреза мы учитываем все дуги между множеством X

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

в X и не учитываем ориентированные дуги из X в X. Поэтому, вообще говоря, с(Х, Х ) ф с ( Х , X).

Разрез (X, X), разделяющий N g и N t, является аналогом «узкого места» в произвольной сети. Ясно, что благодаря ограни­ чениям (1 ) — (2 ) величина v максимального потока меньше или

равна пропускной способности любого разреза, разделяющего N s и N t 2). Но вот что удивительно: величина максимального потока всегда равна минимальной пропускной способности всех разрезов, разделяющих N s и N t. Разрез, разделяющий N s и N t и обладаю­ щий минимальной пропускной способностью, называется мини­ мальным разрезом. (Впредь для простоты будем иногда опускать слова «разделяющий узлы N s и N t».) Теорема о равенстве величины максимального потока пропускной способности минимального раз­ реза впервые была доказана Фордом и Фалкерсоном [64]. Эта

!) В книге Форда и Фалкерсона [67] разрез определяется несколько иначе: разрезом называется множество дуг Ац, Для которых Л?; £ X ,

N j £ X. Прим, перев.

 

 

2) Здесь автор использует тот факт, что v — ^

х ц

хц.

N f i X ,

N f i X ,

 

N j £ X

N j £ X

 

(Чтобы получить это соотношение, надо сложить те уравнения (1), которые относятся ко всем £ X, и привести подобные члены.) Так как в силу (2)

2

* ы < £

bti = e(X, X), а £ хц > 0, то v ^ c ( X , X). Прим, перев.

N~£ X,

N~£X,

N t £X,

X j £ X

N f i X

N f i X


138

ГЛ. 8. МАКСИМАЛЬНЫЙ ПОТОК

теорема, названная теоремой о максимальном потоке и минималь­ ном разрезе, является основной в теории потоков в сетях.

Приведем конструктивное доказательство этой теоремы (см [65]), в процессе которого строится максимальный поток и находится минимальный разрез. Если мы покажем, что всегда существует поток, величина которого равна пропускной способности некото­ рого разреза, то теорема будет доказана, поскольку максимальный поток не превосходит пропускной способности любого разреза, и в частности, минимального.

Т ео рем а 8.1. (О м акси м альн ом потоке и м ини м альн ом р а зр е­

зе [64], [65].) В любой сети величина максимального потока из

источника N s в сток N t равна пропускной способности минималь­ ного разреза, разделяющего N s и N t.

Д о к а з а т е л ь с т в о *). Рассмотрим некоторое произвольное мно­ жество неотрицательных чисел xtj, удовлетворяющих условиям (1 ),

(2). Если величина этого потока равна пропускной способности некоторого разреза, то теорема доказана. Если же нет, то величину потока можно увеличивать по приводимому ниже правилу до тех пор, пока она не станет равной пропускной способности некоторо­ го разреза. (Заметим, что множество неотрицательных чисел xtj, удовлетворяющих условиям (1 ), (2 ), всегда существует: например,

можно взять xtj =

0 для всех i и /).

Имея произвольный поток {х

в сети, построим по нему рекур-

рентно подмножество узлов X по следующим правилам:

0.

N s е X.

I

<

Ь1},

то N j £ X.

1.

Если JVj ( I

2.

Если N t ОX

и Xji >

0, то N } £ X.

Узлы, не принадлежащие подмножеству X , отнесем к множе­

ству X . Используя эти правила для построения множества X, получим один из двух возможных результатов.

1°. Узел N t попадает в множество X . Тогда для всех дуг,

ведущих из

X в X,

выполняется:

х ц —-Ъц (согласно правилу 1 ),

и не существует дугового потока

хц > 0 из X в X (согласно

правилу 2).

Отсюда

 

 

 

2 x i j = Y i b a и ' Z xn = о.

 

i £ X

i £ X

 

 

i £ X

i £ X

j £ X

Следовательно, получен поток, величина которого равна с (X, X).

Автор приводит доказательство для случая, когда дуговые пропускные способности bij целочисленны. Теорема о максимальном потоке и минималь­ ном разрезе верна и в более общем случае, когда величины Ьц — произволь­ ные действительные числа [65].— Прим, перев.


 

 

 

8.1.

ВВЕДЕНИЕ

 

139

2°. Узел

N t попадает

в

множество

X. Тогда из определения

множества X

следует,

что существует путь

из N s в N t, скажем

N s, . .., N t,

. .

. ,

N t,

в котором

для

каждой дуги либо

Xi , i +i <bi , i+1, либо xt+i, i > 0 .

При движении по пути из N s в N t некоторые его дуги будут пройдены в направлении, совпадающем с их ориентацией (такие дуги называются прямыми дугами этого пути), другие — в направ­ лении, противоположном их ориентации (такие дуги называются

обратными дугами этого пути).

следует, что существует путь

Из определения множества

X

из N s в N t, в котором x i%j + 1 <

bit

; + 1 на всех прямых дугах A it г+ 4

этого пути и xi+ l, t > 0 на всех обратных дугах A i+iy ;. Пусть е4 — минимум разностей bti г+1 xt, ;+1, взятый по всем прямым дугам этого пути, а е2 — минимум величин хг+1, г, взятый по всем его

обратным дугам. Тогда е = min (е1? е2) — положительное число. Начнем вычисления с целочисленного потока (например, нулево­ го), тогда величина е будет целым положительным числом. Можно увеличить на е потоки Хц на всех прямых дугах этого пути и уменьшить на е потоки Xjt на всех обратных дугах пути. Таким образом, величина потока увеличится на е и новые значения x\j будут удовлетворять всем ограничениям (1), (2). Используя этот новый поток, можно построить новое множество X. Если узел N t по-прежнему при этом окажется в X, то можно снова увеличить величину потока и т. д. Так как пропускная способность мини­ мального разреза — конечная величина, а на каждом шаге вели­ чина потока возрастает по крайней мере на единицу, то после конечного числа шагов мы всегда получим максимальный поток.и

Обозначим через F st множество неотрицательных чисел Х ц ,

удовлетворяющих ограничениям (1) — (2). Будем называть путь из N s в N t увеличивающим поток F st, если xtj < btj на всех пря­ мых дугах и Хл > 0 на всех обратных дугах этого пути. Из дока­ зательства теоремы 8 . 1 вытекает

С ле д с тв и е 8.1. Поток F s t максимален тогда и только тогда,

когда не существует пути, увеличивающего поток Fst.

Сделаем несколько замечаний. Величина максимального потока в любой сети принимает, безусловно, единственное значение. Но может существовать несколько различных максимальных потоков F st, имеющих одинаковую величину. Может существо­ вать и несколько минимальных разрезов в сети.

Рассмотрим, например, сеть на рис. 8.2. Положим, что все дуги имеют пропускные способности, равные единице. Тогда и дуга A 2s, и дуга A 5t являются минимальными разрезами. Величина максимального потока, конечно, равна 1. Но максимальных пото-


140

 

 

 

ГЛ. 8. МАКСИМАЛЬНЫЙ ПОТОК

 

 

 

 

ков здесь

несколько,

например xsl =

х12 =

£23 =

x3 i

=

£45 —

=

x5t

=

1 , остальные x t j

=

0 ; или xs0 =

хаг =

а;2з =

х зч

=

£75 =

=

ж5(

=

1 ,

остальные

xtj

=

0 .

 

 

 

 

 

Т ео рем а 8.2.

Пусть (X , X ) u ( Y ,

Y) —минимальные

разрезыТ

разделяющие

N s

и N t■ Тогда ( I [ ) ^

X (J У) и (X f] Y ,

X f) Y)

 

 

 

 

также минимальные

разрезы,

 

 

 

 

разделяющие N s и Nt-

 

 

 

 

 

 

то

Д о к а з а т е л ь с т в о . ЕслиХ <

X,

 

 

 

 

X [ } Y = Y,

Xfl Y = X,

по­

 

 

 

 

этому

 

 

 

 

 

 

 

 

 

(X[ ]Y, XU У) = (У, Y),

 

 

 

 

 

 

( ХПХ, ХЛУ) = (Х, X),

 

R

 

 

51

и утверждение теоремы верно.

 

 

 

 

 

Пусть X и У пересекаются.

©

 

 

 

Рассмотрим рис. 8.3. Введем

 

 

 

обозначения:

 

 

 

 

 

 

 

 

ХЛ Y = Q,

Х Л У = 5,

 

 

Р и с.

8.3.

 

ХЛ Y = P,

Х Л Ё = Д .

 

Тогда N s eQ,

N t 6 R,

X = Q[)S, Х = Р \}R,

Y = P[]Q, Y = R [ j S .

Пусть

c(Q,

P) =

2 Ъц. Аналогично

определим

c(Q,

R),

 

 

 

 

N i£Q

 

 

 

 

 

C(S, P) И

 

 

 

N£P

 

 

 

 

 

T.

Д.

_

 

 

 

 

 

 

a V/+

Так как (X, X) — минимальный разрез, разделяющий N s я N t,

(Q, Р U R U S) —также разрез, разделяющий N s и N t, то с(Х, Х )^ c(Q, P\ JR[}S) . Или, что то же самое, c(Q, P)-\-c(Q, R ) Y c(S, P) + c(S, Д )<с(<?, P) + c{Q, R) + c{Q, S), откуда

c(S, P) + c{S, R ) ^ c ( Q , S).

(3 )