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

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

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

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

Добавлен: 15.10.2024

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

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

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

11.1. Д В У Х П РО Д У К Т О В Ы Е п о т о к и

235

Случай 2. Пусть на рассматриваемой дуге

A tj

перед выполне­

нием шага 2 x j i ^ O и x l j ^ O .

Неравенство (5)

примет вид

bij

Хц Xlj ~^>0.

 

 

Согласно определению h,

 

 

 

0,5 (bij x)i xfj),

 

 

или

 

 

( 8)

bij xji xfj 2 h ^ 0 .

 

На шаге 2 величина потока 1-го продукта по дуге Ац увели­ чивается на h единиц, на шаге 3 величина потока 2 -го продукта увеличивается на h единиц. Тогда из неравенства (8 ) имеем

btj — | x}i + h | — | xb + h | > 0 .

Условие (*) выполняется.

Случай 3. Пусть x\j ^ 0 и 4 ^ 0. Тогда на шаге 2 величина потока 1 -го продукта уменьшается на h единиц, на шаге 3 величи­

на потока 2-го продукта уменьшается на h единиц. Из неравен­ ства (6) получим

Ьц — \ x \ j - h\ — \х%— h \ ^ 0 .

Случай 4. Пусть xji ^ 0 и xji 0. Тогда на шаге 2 величина потока 1 -го продукта увеличивается на h единиц, а на шаге 3 вели­

чина потока

2-го продукта

уменьшается на h единиц. Получим

 

Ьц — I xji +

h | — | xji h |> 0 .

Условие (*)

выполняется 1).

 

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

Рассмотрим теперь случай, когда некоторая дуга А ц принад­ лежит и прямому, и обратному пути. Пусть при этом дуга Ац для обоих путей имеет одно и то же направление. Тогда на шаге 2 потоки 1 -го продукта взаимно уничтожаются, а на шаге 3 поток

2-го продукта увеличивается на 2h единиц. При этом суммарный поток по дуге А ц не превосходит дуговой пропускной способно­

сти Ьц,

потому что h = min {x\f, Q,bbbf). В

рассмотренном выше

примере

так обстоит дело с дугой А гг.

 

Остается рассмотреть случай, когда дуга

А ц в прямом пути

имеет одно направление, а в обратном пути

— противоположное.

г) Здесь надо рассмотреть два случая

Если x ji > h , то условие (*)

выполняется в силу (5); если же х^ < К, то

условие (*) выполняется в силу

(8),— Прим, перев.

 


236 ГЛ. 11. МНОГОПРОДУКТОВЫЕ п о т о к и

(Например, в рассмотренном выше примере такова дуга П47.) Тогда на шаге 2 поток 1-го продукта увеличивается на 2h, а на шаге 3 потоки 2-го продукта взаимно уничтожаются. При этом суммарный поток по дуге A tj не превосходит дуговой пропускной способности btj, потому что h = min (xbf, 0,5bbf).

Утверждение 1° доказано.

2°. Теперь докажем, что когда алгоритм заканчивается, то либо оказываются найденными потоки, удовлетворяющие задан­ ным ограничениям, либо выясняется, что заданные потоковые ограничения несовместны. (А если решается задача максимизации

/ ( 1 , 1 ') +

/ ( 2 ,

2 '), то после окончания работы алгоритма оказы­

вается найденной величина

max

[ /( 1 ,

1 ') +

/

(2 , 2 ')].)

 

 

 

Согласно описанию алгоритма, вычисления заканчиваются

только

тогда,

когда

построены

потоки,

не

меньшие

г ( 1 ,

1 ')

и г (2 , 2 '), либо когда на шаге 2

/ (1 ,

1 ') =

г (1 , 1 '),

а /

(2 ,

2 ')

<

< г (2 ,

2 ') и при этом не существует двойного пути.

 

 

 

 

Предположим, что

пе существует обратного пути

из А 2

в А 2'.

Тогда по

лемме

11.4

существует разрез {Х2Ь, Х2Ь),

где N 2'(zX2b.

Если для некоторой дуги Ац разреза (Х2Ь,

Х2Ь) поток х ц ф О ,

то, как было выше доказано,

А 4 £ X 2b и AV £ Х2Ь. Так

как для

всех дуг

рассматриваемого

разреза

х\} -\- xfj = Ъц,

где

A* £ Х2Ь

А 7 С Хгь> то

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/(!>

1;) + /(2,

2') = с 2ь, Хгь)-

 

 

 

(9)

Так как разрез (Х 2ь, Хгь) является множеством, разделяющим пары узлов (Alt Aj-) и (А2, А 2'), то должно выполняться

 

/(1,1') +

/(2,

2 ' ) < с ( Х 2Ь, Х 2Ь).

(10)

Из (9) и

(10) следует,

что в

рассматриваемом случае

получена

величина

max [ /( 1 , 1 ')

+

/ ( 2 ,

2 ')].

 

Следовательно, величину / (2, 2') в этом случае можно увели­ чить, только уменьшая /(1, 1'). Значит, заданные потоковые

ограничения

являются несовместными.

 

 

Если же

для каждой дуги разреза (Х2ь,

Х 2ь) поток x \ j = О,

т. е.

на каждой дуге xlj = bij,

где N t ^ X 2b и N j ^ X 2b, то

построен

max/(2, 2').

Следовательно,

величину / (2, 2' )

невозможно увели­

чить,

даже

если уменьшить величину /(1, 1'). Значит,

и в этом

случае заданные потоковые ограничения являются

несовместными.

(При

нахождении m a x [ / ( l ,

1') +

/

(2, 2')]

на шаге 0

мы

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

/ (1,

1')

= с ( 1 ,

1'). При даль­

нейшей

работе алгоритма величина / (1,

1') не изменялась.

Сле­

довательно, величина / ( 1 , 1 ') не может быть увеличена, даже

если

уменьшить

/ (2, 2'). Таким образом, получена величина

max

[ /( 1 , 1 ') + /

( 2 , 2 ')].)


11.1. ДВУХПРОДУКТОВЫЕ п о т о к и

237

Случай, когда не существует

прямого пути (т. е.

существует

разрез (X2f, X 2f), где

6 X2f),

разбирается аналогично. Следо­

вательно, утверждение

2 ° доказано1).

 

3°. Сформулируем доказываемое утверждение в виде теоремы.

Теорема 11.2 (о четной целочисленности [106]). Если величины

г(1 , 1 '), г (2 , 2 '), btj четные числа, причем r ( 1 , 1 ') и г (2, 2 ')

удовлетворяют

условиям теоремы

1 1 .1

, то

 

существуют

потоки

/ (1 , 1 ') = г (1 ,

1 ')

и / ( 2 ,

2 ')

=

г (2,

2'),

 

такие,

что

все

x\j

и х\j целые числа.

 

1')

+

/ (2,

2')],

то достаточно

потре­

(Если ищется max [/(1,

бовать, чтобы только величины Ъц были четными числами.)

Д оказательство.

На шаге 0,

используя

алгоритм

расстановки

пометок, можно построить поток

/

(1

, Т) — г (1 , 1 ')

так,

чтобы

все x\j были четными числами.

(Это

можно

сделать, так как Ьц

и r(l, Т) четные.)

Отсюда следует,

что все

величины Ъц —

\х\}\

будут четными числами после выполнения шага 0. Так как вели­ чина г (2 , 2 ') —четное число, то и величины x\j после выполнения шага 1 будут четными.

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

каждой дуге

А ц потоки либо увеличиваются, либо уменьшаются

на величину

h. Так как по определению

h —min (xbf, 0,5bbf),

то h может оказаться нецелым числом только тогда, когда bbf

нечетное (поскольку величины x\j,

x\j, Ь'ц сначала все были чет­

ными). После выполнения шага 1

в первый раз величина

bbf =

= min (bij ± x\j ± x\j) = 0 (mod 2 ).

 

поток 1-го продукта увели­

Рассмотрим дугу

Atj,

в которой

чивается

на h единиц, а поток

2 -го

продукта

уменьшается

на h

единиц.

Рассмотрим величину bij +

| xjj -|- h | ±

| х\j h |.

 

Если

b i j | x \ j | + x f j четное

число, то Ъц \ х \ } \ - h\ ± | Х Ь

h\ — также четное независимо

от

того, четно h или нет.

 

Рассмотрим теперь дугу Ац,

в которой либо поток 1-го про­

дукта, либо поток 2-го продукта

увеличиваетсяч на 2h.

Здесь

также величина Ъц ±

| xt) + h | +

 

| хц — h |

будет выражаться

четным

числом.

 

 

 

 

 

 

 

Таким образом, после выполнения шага 3 и перед выполнением

шага 1

каждая дуга

имеет четную

пропускную способность для

потока 2 -го продукта.

 

 

 

 

 

 

 

J) Из приведенного доказательства видно, что при. выполнении алго­

ритма шаг 1 можно опустить,

так как нигде не используется, что поток х2^

должен быть максимальным.— Прим, перев.


238

ГЛ. 11. МНОГОПРОДУКТОВЫЕ п о т о к и

 

После шага 1, который увеличивает или уменьшает x\j на чет­

ное число единиц, величина Ъц ± x\j + x\j по-прежнему останется четной. Таким образом, ЪЬ} не может быть нечетным числом, a k не может быть нецелым. Следовательно, x\j и x\j остаются целыми

в ходе всего алгоритма

 

 

заметим, что вели­

4°.

Чтобы доказать конечность алгоритма,

чина /

(2 , 2 ')

каждый раз увеличивается по крайней мере на 2 еди­

ницы (на 2xlf

или на Ьы). Величина / (1,

1')

сохраняет свое зна­

чение,

полученное на шаге 0. Так как / (2,

2') ограничена сверху

величиной min [с (2 , 2 '), с ( 1 , 2 ; 1 ',

2 ') — / ( 1 , 1 ')], то алгоритм

конечен, щ

 

N 2 или

— N 2>, является

Заметим, что случай, когда N i =

частным случаем, при котором выполняются условия теоремы 1 1 .1 .

Действительно, этот частный случай может быть представлен с помощью сети, в которой &12 или bi2- — произвольно большое

число.

Обсуждение

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

венств:

 

/ (к,

к ')^ с ( к ,

к')

 

( ( 7) неравенств) ,

 

/(*, *') +

/(/>

 

j; V, f )

 

( ( “ )

неравенств)

,

 

m

 

 

 

 

 

 

 

 

 

 

 

2

f(k,

i ' ) < e ( l .

1', . ..,

m')

( C

)

неравенств) .

 

fe=i

 

 

 

 

 

 

 

 

 

 

 

Контрпример для 4 продуктов, опровергающий эту гипотезу,

впервые

был найден

Фордом (личное сообщение).

Пример

для

 

 

 

3 продуктов

иллюстрируется

на

 

 

 

рис. 11.7; как показано в работе

 

 

 

[106], условия/(1 , 1 ') = 4 , / ( 2 , 2 ') =

 

 

 

= 2 , /

(3,

3')

=

1

являются недо­

 

 

 

пустимыми.

что

рассмотренный

 

 

 

Заметим,

 

 

 

выше

алгоритм

дает

возможность

 

 

 

получить

 

одновременно

max

 

 

 

[ /( 1 , 1 ') +

/

(2 , 2 ')] и max / ( 1

, 1

'),

 

 

 

т. е. с помощью этого алгоритма

 

 

 

можно

найти

max

[oti/ (1 , 1 ')

+

 

 

 

+ а 2/

(2 , 2 ')], где а!

> а 2 >

0 .

 


11.2. М Н О ГО П РО ДУ К ТО В Ы Е потоки

239

11.2. Многопродуктовые потоки (Форд и Фалкерсон [6 6 ],

Томлин [186])

Прежде чем приступить к изучению этого параграфа, читателю рекомендуется перечитать первые 5 абзацев § 11.1.

Рассмотрим сначала задачу о максимальном многопродуктовом потоке. Пусть в сети для каждого продукта задан источник и сток. Сеть содержит т дуг, заданы их пропускные способности blt б2, . . ., Ът. Для каждого продукта в сети имеется несколько цепей, ведущих из источника в сток. Требуется пропустить поток каждого продукта по цепям таким образом, чтобы не были пре­ вышены пропускные способности дуг и сумма величин потоков по всем цепям была бы максимальна.

Произвольная цепь в сети может быть представлена ш-мерным

вектором, i-я

компонента которого равна 1 ,

если дуга i входит

в эту цепь, и

равна 0 в противном случае.

Определим матрицу

инциденций дуги-цепи

А = [ац\ следующим образом:

1 ,

если дуга i входит в цепь

a ij {О

в противном случае.

Обозначим через Xj величину потока, протекающего по цепи /. Тогда задача максимизации суммы величин всех цепных потоков примет вид

максимизировать 2 xi j

при условиях

 

'Zai]xj + si =^bi (г = 1, 2, . . ., т),

(1)

j

 

где S; — слабые переменные.

Заметим, что при такой формулировке задачи матрица А может иметь миллионы столбцов, где всевозможным цепям каж­ дого из продуктов соответствуют свои столбцы. К счастью, как будет показано ниже, для того, чтобы решить задачу (1 ), нам понадобится запоминать только матрицу размера + 1 ) X

X + 1). В ограничениях (1) многопродуктовый характер зада­ чи представлен в неявном виде, он учитывается при построении матрицы А 1). В случае когда имеется единственный продукт, задача (1 ) превращается в обычную задачу о максимальном потоке.

Предположим, что имеется т столбцов, образующих начальный базис задачи (1). Тогда можно разрешить (1) относительно этого)*

*) Имеется в виду, что в матрице А каждая цепь фигурирует столько раз, сколько различных продуктов может по ней перевозиться.— Прим,

перев.