Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Ху, Т. Целочисленное программирование и потоки в сетях

.pdf
Скачиваний:
41
Добавлен:
22.10.2023
Размер:
16.99 Mб
Скачать

7.2. ПРИМЕР

при условиях

2 л?! За :2 = 5, 5#! + а:2 = 6 ,

хи ж2 <:о.

Решением является: Xi = \, х2= 1 при

(Ci — ЯЬ^Х! — я 1= - ^-- 1+- ^ -- 1 — И = 0 .

Подобным же образом для S2:

2 — яЬа)х 2= ((5, 6 , 1)— (

2,

К , х'г, х'3]-=

= 5,la;i + 6 ,8^ + 1,5а:;.

Соответственно линейная программа имеет вид: минимизировать

Ъ,\х[ + 6 ,8 а;; + 1,5а:;

при условиях

За:; + 4а:; + За:; = 1 2 ,

х., х2, х3^ 0 .

Решением является: - 0, х2 ■0, х3 4,

(са- я 1 * ) х 2 - п а = 5,1-0 + 6 ,8 -0 + 1 , 5 - 4 - ^ =

= 6 — 2 0 ,4 = — 14,4 <

0,

^32= L2x32 = ("4 ’ 3,

[0, 0, 4] =

5.

131

(3)

Таким образом, [132, е2] = [5, 0, 1]. Прежде чем добавить этот вектор в табл. 7.2, необходимо умножить его на обращение теку­ щего базиса В-1:

Полученный вектор вместе с его относительной оценкой (—14,4) записывается в табл. 7.2. Результатом является табл. 7.3. После итерации получается оптимальная табл. 7.4 с

Х ц = 1 , Я,12= 3/4, ^32 ~ •

9*

132

 

 

ГЛ. 7. ПРИНЦИП ДЕКОМПОЗИЦИИ

 

 

 

 

 

Таблица 7.3

 

 

 

 

1

Х а

2

3

Ян

Я.12

Я22

Я32

константы

 

 

1

 

 

 

 

 

Z

1

2/5

—и

—20,4

0

0

0 --1 4 ,4 ...

—28.6

Яи

0

0

1

0

1

0

0

0

1

Al2

0

- 1 /5

1

6/5

0

1

0

1/5

4/5

Я22

0

1/5

—1

- 1 /5

0

0

1

4/5 * ...

1/5

 

 

1

 

Таблица

7.4

я 22

Язг

 

 

1

2

3

Яц

Я12

 

 

Х а

 

х а

 

 

 

 

Z

1

4

- 2 9

—24

0

0

18

0 . ..

—25

Яи

0

0

1

0

1

0

0

0 ...

1

Я12

0

—1/4

5/4

5/4

0

1

- 1 /4

0 . ..

3/4

Я32

0

1/4

—5/4

- 1 /4

0

0

5/4

1

1/4

Итак,

Х1 = Я(1 [1 , 1 ] = [1 , 1 ],

ха = -§-[4, 0, 0] + { [ 0 , 0, 4] = [3, 0, 1].

Для проверки убедимся, что ограничения (1) удовлетворяются и

ъ =

1 +

8-1

+

5-3

+

6-0

+

1-1

=

25.

Упражнения

 

 

 

 

 

 

 

 

 

 

Решить задачу:

 

 

 

 

 

 

 

 

 

минимизировать

 

 

 

 

 

 

 

 

 

z =

5xi

+

+

хг +

6 а:' +

2 х'

+

х'3

при условиях

 

 

 

 

 

 

 

 

 

 

 

^ 1 + ^2 + х3 + К +

+ Х3= 6 ,

 

 

Xi +

 

х3

 

 

 

 

1 ,

 

 

 

а’г-Ь 2 а:3

 

 

 

=

3,

 

 

 

 

 

2.xi

х2

 

х3=

4,

 

 

X i ^ O ,

а :(^0

(г = 1,

2, 3)

 

при помощи алгоритма декомпозиции Данцига — Вулфа. Исполь­ зовать Х.ц (соответствующее art = 1 , а:2 = 3) и Х12, Я22 (соответ­

ствующие х\ = 2, х2 = 4) в качестве исходных базисных пере­ менных.

ДОПОЛНЕНИЕ

133

Дополнение

В этой главе большая задача линейного программирования, показанная на рис. 7.1 (имеющая большое число строк и столбцов), преобразовывалась в задачу линейного программирования, пока­ занную на рис. 7.2, с большим числом столбцов. Для того чтобы решить задачу, показанную на рис. 7.2, не требуется выписывать все столбцы. Мы используем несколько столбцов в качестве начального базиса и выписываем столбец, который должен войти в базис. Задача определения «наилучшего» столбца есть другая задача линейного программирования. В общем случае большая задача линейного программирования решается разбиением задачи на две части (главную часть и вспомогательную часть). Главной частью является задача линейного программирования, содержа­ щая много строк или столбцов. Однако ни строки, ни столбцы не выписываются полностью. Вместо этого во вспомогательной части решается другая оптимизационная задача, которая дает «наилучшую» строку или столбец для главной части. В гл. 11 приведено много примеров, укладывающихся в эту схему. Читатель может также прочитать Гомори [82].

ГЛАВА 8

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

8 Л. Введение

В этой главе мы будем изучать так называемую теорию пото­ ков в сетях. Задачи о потоках в сетях можно сформулировать как задачи линейного программирования. Но благодаря специаль­ ной структуре потоковых задач для них было получено большое число эффективных алгоритмов и изящных теорем, чем и объяс­ няется особое внимание к этим задачам.! В большинстве из них

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

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

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

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

Будем использовать символ N t для обозначения узла i и сим­ вол Aij для обозначения ориентированной дуги, ведущей из N t в N j. Если дуга между узлами N t и N j неориентированная, то ее можно обозначать как символом Ац, так и Ац.

Сеть называется связной, если при любом разбиении множества

узлов сети на подмножества X тлХ найдется дуга А ц или дуга А л,

где N t £ X и N j 6 X. В этой книге всюду термин «сеть» обозначает

связную сеть. Для удобства будем считать, что между любыми двумя узлами N t и N j имеется либо не больше одной ориентиро-

8.1. ВВЕДЕНИЕ

135

ванной дуги А ц и одной ориентированной дуги Ац, либо только одна неориентированная дуга А ц . В большинстве случаев можно

заменить одну неориентированную дугу двумя ориентированными. Мы исключаем возможность существования петель, т. е. дуг, веду­

щих из некоторого узла в этот же узел.

дуг сети: N 1, Ац ,

Рассмотрим

последовательность узлов и

N 2, А а з , N з , . .

. , N k_u A h-i, h, N k. Такую

последовательность

узлов и дуг назовем цепью или ориентированной цепью, ведущей из узла N t в узел N h. Если N t = N h, то такая последовательность называется ориентированным циклом. Например, на рис. 8.1 последовательность А 12, N 2, A 2t, N t является цепью, ведущей из N s в N ц последовательность N a, A l2, N 2, А 23, N 3, А 32, N 2, И 24, N t также является цепью, ведущей из N s в N t. Последователь­

ность N 2, А 23, N 3, А 32, N 2 является циклом. Цепь называется простой, если она не содержит циклов. В дальнейшем под терми­

ном «цепь» мы будем понимать простую цепь.

A i2, N 2,

А 23,

Путем будем называть последовательность N

N s, • •

Л^й-i,

A k. 1 , ft, N k,

где N u

N 2,

. . .,

N k — узлы

сети,

и либо

A if i+l,

либо A i+l, i

(при i =

1 , 2 ,

. .

.,

к — 1) является

дугой сети. Таким образом, путь отличается от цепи тем, что при движении по пути от N xк N h можно пройти дугу сети и в направле­ нии, противоположном ее ориентации. Для неориентированных сетей понятия цепи и пути совпадают. Например, на рис. 8.1 последовательность N s, A s3, N 3, А 23, N 2, Н 24, N t является путем. Если дугу А 23 заменить дугой А 32, то этот путь превратится в цепь.

Пока, как мы видим, определение сети совпадает с определени­ ем графа. Мы используем термин «сеть», так как с каждой дугой будет сопоставлено несколько чисел, тогда как в теории графов дуга лишь указывает на то, что узлы соединены. Пусть с каждой дугой А ц сопоставлено положительное число Ьц, называемое

пропускной способностью дуги. (Используется также термин «про­ пускная способность ребра».) В сети выделяют два специальных узла. Один из них называется источником и обозначается N s; другой называется стоком и обозначается N t. Сеть можно рас­ сматривать как водопроводную систему, в которой трубы соответ­ ствуют дугам, источник воды соответствует источнику N s, сток воды — стоку N t, а соединения между трубами — остальным узлам сети. Пропускная способность дуги здесь соответствует попе­ речному сечению трубы. Надо найти, какой максимальный поток воды можно пропустить из источника в сток в этой водопроводной системе.

Чтобы сформулировать эту задачу более точно, введем сначала понятие потока в сети. Потоком из источника N s в сток N t в сети называется множество неотрицательных чисел Хц (каждое из которых поставлено в соответствие некоторой дуге сети), если эти

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 )

Соседние файлы в папке книги из ГПНТБ