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

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

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

10.4. П О ТО КИ М И Н И М А ЛЬН О Й с т о и м о с т и

213

При этом подразумевается, что величина v не превышает величи­ ны максимального потока из N s в N t, иначе задача не имеет реше­

ния.

Заметим, что если бы не было ограничений на пропускные спо­ собности дуг, то достаточно было бы найти самую экономную цепь из N s в N t и пропустить по ней весь поток. В книге [67] рассматри­ валось несколько алгоритмов нахождения потока минимальной стоимости, использующих прямо-двойственный подход линейно­ го программирования.

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

Первый алгоритм, предложенный Басакером и Гоуэном [22],

имеет следующий

вид.

Ш аг

0.

Положить все дуговые потоки и величину потока

равными нулю.

 

Ш аг

1.

Определить модифицированные дуговые стоимость

c *j , зависящие

от

величины уже найденного потока, следующим

образом:

 

 

 

Ш а г 2. Найти кратчайшую цепь (т. е. цепь минимальной стоимости) из N s в N t, используя дуговые стоимости с*-, найден­ ные на шаге 1. Затем пропускать по этой цепи поток до тех пор, пока она не перестанет быть кратчайшей цепью. Получить вели­ чину нового потока, прибавив к величине старого величину пото­ ка, текущего по рассматриваемой цепи. Если величина нового потока равна V, то конец. В противном случае перейти к шагу 1.

Этот алгоритм обладает следующим интересным свойством: каждый раз на шаге 2 получается поток из источника в сток,

обладающий минимальной стоимостью. Таким образом, последо­

вательно

получаются

потоки минимальной стоимости величины

р =

1 , 2 ,

. . ., v. По этой причине рассмотренный алгоритм мож­

но

классифицировать

как двойственный.

Второй алгоритм, предложенный Клейном [130], формулирует­ ся следующим образом.

Ш а г 1. Найти любой допустимый поток величины v из источ­ ника N s в сток N t. Это может быть сделано подбором или с по­ мощью решения задачи о максимальном потоке (в которой надо проводить вычисления до тех пор, пока величина потока не станет равной v).

214 г л . 10. КРАТЧАЙШИЕ ЦЕПИ И ПОТОКИ М ИНИМ АЛЬНОЙ с т о и м о с т и

Ш а г 2. Определить модифицированные стоимости следующим образом:

Cij, если

{О О , если хц = Ьи,0

Cji, если xji^> 0 .

Ша г 3. Используя величины cfj, найти в сети цикл отрица­ тельной стоимости (такие циклы для краткости будем называть отрицательными). Если его не существует, то найденный поток является оптимальным. Если же такой цикл найдется, то добавить

всеть поток по нему величины б, где б равно минимуму из вели­ чин (Ьи xtj, хц), взятому по дугам отрицательного цикла. Перейти к шагу 2. (Если в сети имеется несколько несвязных отрицательных циклов, то добавляется поток по каждому из них.)

Так как этот алгоритм с самого начала дает допустимый поток величины v, то его можно классифицировать как прямой алгоритм.

Легко видеть, что оба рассмотренных алгоритма позволяют найти поток величины и, если это число v не превышает величины максимального потока. Менее очевидно, что эти алгоритмы позво­ ляют найти оптимальный поток. Доказательство этого факта осно­ вано на следующей теореме, которая может рассматриваться как основная теорема в теории потоков минимальной стоимости. Она сформулирована в работе [23], а также неявно имеется в работах

[67, 108, 117, 151].

Теорема 10.2. Поток величины и оптимален тогда и только тогда, когда в сети с модифицированными дуговыми стоимостями cfj не существует отрицательных циклов.

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

Теперь докажем достаточность. Рассмотрим некоторый поток, для которого в сети не существует отрицательных циклов. Предпо­ ложим, что в этой сети существует оптимальный поток, стоимость которого меньше стоимости рассматриваемого потока. Разложим этот оптимальный поток на v цепей ог, по каждой из которых про­ пущена единица потока. Точно также разложим рассматривае­ мый поток на и цепей p t, по каждой из которых пропущена единица потока. Удалим из получившейся сети все дуги, которые являются

общими и для

оптимального, и для рассматриваемого потока.

В полученной

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

10.4. П О ТО КИ М И Н И М А ЛЬН О Й с т о и м о с т и

215

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

Две произвольные цепи ot и p t могут либо полностью совпа­ дать (случай а), либо вообще не иметь общих дуг (случай б), либо совпадать частично, т. е. иметь некоторое количество общих дуг {случай в).

Если имеет место случай а) для всех i, i = 1,2, . . ., к, то оба потока совпадают (тогда в приведенной сети вообще нет потока).

В случае б) найдется по крайней мере одна пара цепей, ог

итакая, что стоимость потока по цепи ог меньше стоимости

потока по p t. Тогда рассмотрим поток по следующему циклу: из N s в N t по ог, затем из N t в N s по p t. Он будет обладать отри­ цательной стоимостью (для модифицированных стоимостей), что противоречит предположению об отсутствии в сети отрицатель­ ных циклов.

В случае в) обозначим через N t первый узел, после которого цепи оi и pi начинают различаться, а.через Nj — узел, после кото­ рого эти цепи снова совпадают (см. рис. 10.10). В сети может быть несколько таких пар ( N t , N j ) , но среди них должна найтись

такая, что стоимость потока по участку цепи о* от N t до Nj будет меньше стоимости потока по участку цепи p t от N j до N t . Тогда

в сети будет существовать отрицательный цикл: из N ; в Nj по

участку цепи ог, а затем из Nj

в N t по участку цепи p t. Получен­

ное противоречие доказывает

теорему.

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

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

216 ГЛ. 10. КРАТЧАЙШИЕ ЦЕПИ И ПОТОКИ МИНИМАЛЬНОЙ СТОИМОСТИ

Ш а г

0.

Полагаем все xi} = 0.

Ш а г

1. Определяем.модифицированные стоимости: с*3- = ci;-.

Ш а г

2.

Находим кратчайшую цепь из N s в N t, используя

в качестве длин c*j =

ctj.

Получаем цёпь N s, A sl, N i,

A 12i N 2,

A 2U

или цепь N s, A s3, N 3, A 32, N 2, A 2U N t. Выбрав первую

цепь,

получаем: xsi =

х12 — x2t = 1 .

 

 

Ш а г

1.

Определяем

модифицированные

стоимости

следую­

щим образом:

с*i = oo,

так как xsl = 6S1 =

1 ,

 

 

 

 

 

 

 

 

c t i =

- 1 ,

 

 

 

 

 

 

с*2 =

оо,

так как xi3 — bi2 =

i,

 

 

 

 

c ! i =

- 2 ,

 

 

 

 

 

 

С2 ( =

оо,

так как x2t = b2t =

^,

 

 

 

 

с * 2 =

— 1 ,

 

 

 

 

 

 

все остальные с*) = сг;-.

 

 

III а г

2.

Находим кратчайшую цепь из N s в N t, используя

в качестве длин новые модифицированные стоимости с*3-. Полу­

чаем цепь

HS3, А 32, А 21 , Л 14, ^44t„ общей стоимости 1 + 2

+

+ (—2) + 2

+ 2 = 5. Пропустив единицу потока по

этой цепи,

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

1 0 .1 2 ,

где

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

 

 

Этот алгоритм не рекомендуется использовать, когда величина v велика. В этом случае рекомендуется второй алгоритм.

Рассмотрим пример, иллюстрирующий работу второго алго­ ритма. Пусть сеть имеет вид, как на рис. 10.13 (исходные данные

_ взяты из книги [67]).

Ш а г 1. Используя алгоритм решения задачи о максимальном потоке, находим максимальный поток в сети.. Он изображен на рис. 10.14, где числа указывают дуговые потоки. Жирными линиями выделены дуги минимального разреза.

Ш а г 2. Определяем модифицированные стоимости cfj.

Ш а г 3. Каждая дуга минимального разреза оказывается насыщенной, поэтому для нее с*/ = оо. Следовательно, ни одна дуга минимального разреза не может войти в отрицательный цикл. Следовательно, сеть можно разбить на две части и искать отри­ цательные циклы отдельно в каждой из них. Модифицированные стоимости cfj в каждой из частей представлены в табл. 10.6 и 10.7.

Если применить тернарные операции (1) из § 10.2 к табл. 10.6, то получим отрицательный цикл Л 25» A si, А 12. Добавив bsl

xsi = 1 0 единиц потока по этому циклу, получим сеть без

3

1

1

Р и с . 10.14.

218 ГЛ. 10. КРАТЧАЙШИЕ ЦЕПИ И ПОТОКИ МИНИМАЛЬНОЙ стоимости

•отрицательных циклов, т. е. найдем оптимальный поток. Если применить тернарные операции (1 ) из § 1 0 . 2 к табл. 1 0 .2 , то обна­

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

 

 

Таблица 10.6

 

 

 

Таблица

10.7

 

 

 

 

 

 

 

 

 

©

©

®

©

©

©

 

©

©

©

 

©

©

00

со

оо

00

оо

оо

 

 

 

 

 

 

 

 

 

 

 

 

©

со

3

00

оо

00

©

-1

00

5

00

00

со

 

 

 

 

 

- 3

00

2

00

00

©

00

- 5

оо

- 2

00

4

©

- 6

- 2

со

1

оо

©

- 3

00

оо

00

3

оо

 

 

®

СО

- 2

-1

со

9

©

оо

00

- 1

3

00

со

©

00

оо

оо

- 9

оо

©

оо

00

- 4

со

- 3

со

 

 

 

 

 

10.5. Задачи об оптимальном преобразовании заданной сети (Фалкерсон [6 8 ], Ху [108])

Пусть задана сеть, в которой величина максимального потока из источника N a в сток Nt равна V. Известно, что дуга А ц единич­ ной пропускной способности имеет стоимость Сц. Рассмотрим две

задачи.

1.Пусть известно, что величина максимального потока в сети

.должна быть равной у', v' > v. Каким образом следует увеличить пропускные способности дуг, чтобы получить' этот поток с мини­ мальными затратами?

2.Пусть известно, что суммарные затраты на преобразование

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

Эти задачи были решены Фалкерсоном [6 8 ]. Здесь будет рас­

смотрен алгоритм их решения, использующий модифицированные

•стоимости [108].

Обозначим через xtj поток по дуге Ац, через Ъц — пропускную

•способность дуги А ц в исходной сети, через Ьц + y tj — пропуск­ ную способность дуги А 1} в преобразованной сети, где y t} — при­ ращение пропускной способности дуги A tj. ,

10.5. ЗАДАЧИ ОБ ОПТИМАЛЬНОМ ПРЕОБРАЗОВАНИИ

Задача 1 может быть записана в следующем виде:

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

2 cUUij

i , i

при условиях

 

 

 

 

 

 

v

,

если j = 5 ,

2 х ч 2

О,

 

если j =/£= s, t

 

 

у',

если j = t,

 

.Xi f

\ Ъц +

у ц .

Задачу 2 можно записать следующим образом:

‘ максимизировать у' при условиях

2 ^i j V i J =

а

—у', если j — s,

0 , если j ф s, t,

у', если j = t,

b i j

I f ij -

219

(1)

(2 )

Рассмотрим алгоритм решения поставленных задач.

Ш а г 0. Положить все xtj = 0.

Ш а г 1. Исходя из имеющегося потока, определить модифи­ цированные дуговые стоимости с*у.

0 ,

если Xij<ibij,

 

Ciji

еСЛИ Xij ^ bij,

(3)

Cji>если Xji > Ьц >

0 .

Ш а г 2. Пропустить поток по кратчайшей цепи. Величина пропускаемого потока ограничивается следующим условием: зна­ чения c * j , определяемые по правилу (3) и зависящие от дуговых потоков, должны быть такими же, как и на предыдущем шаге 1 .

Ш а г 3. Если величина потока равна у' (при решении зада­ чи 1 ) или если общая стоимость равна с (при решении задачи 2 ),

то конец. В противном случае перейти к шагу 1.

Рассмотрим сеть,

изображенную на рис. 10.15 (а), где числа

около дуг означают

их пропускные способности

Стоимости

220 Г Л . 10. КРА Т Ч А Й Ш И Е Ц Е П И И П О ТО КИ М ИНИМ АЛЬНОЙ с т о и м о с т и

Сц дуг единичных пропускных способностей указаны на рисун­ ке 10.15 (б). Будем решать задачу 1 при г/ = 7. Сначала на шаге 1 определим модифицированные стоимости с*}. Так как все Хц = 0,

Р и с . 10.15. (а) Дуговые пропускные

способности Ь,у; (б) Единичные

стоимости

Сц.

то c*j = 0. Шаги 1 и 2 будут повторены несколько раз при с*- = 0Г

пока величина максимального потока из N s в N t не станет рав­ ной 6 . Полученный поток изображен на рис. 10.16 (а), где в скоб­ ках указаны модифицированные дуговые стоимости с*3 (здесь все

c*j ^ 0). Далее находим кратчайшую цепь, имеющую следующий вид: А н, А 21, А и . Таким образом, должна быть увеличена про­ пускная способность дуги А 2J. Получим поток, изображенный

на рис. 10.17, где в скобках указаны модифицированные дуговые стоимости.

Заметим, что теперь имеется отрицательная модифицированная стоимость: с*2 = —2 (так как x2i > &21 = 2). Если продолжать

УПРАЖ НЕНИЯ

221

увеличивать поток v v ' — 8 , 9, . .

то найденные модифициро­

ванные стоимости не будут изменяться, пока v' не станет равным 1 0

{см.

рис.

10.18). Теперь кратчайшая цепь состоит из

дуг

Л81,

А 12,

A it

и имеет стоимость 3 + (—2) + 3 = 4 .

 

 

Предположим, что надо решить задачу 1 при v’ =

14. Тогда

по цепи A A

i 2, A 2t следует направить четыре единицы потока.

Получится поток, изображенный на рис. 10.19. Заметим,

что когда

v' =

7, надо увеличить пропускную способность дуги ^41а, а ког­

да

v'

=

14,

надо увеличить пропускные способности

дуг

A 3i

и A 2t,

а пропускную способность дуги A i2 не менять.

 

 

Упражнения

1.Найти кратчайшую цепь в сети на рис. 10.20 с помощью алгоритма § 10.1. Будет ли этот алгоритм работать, если некото­ рые dtj < 0? Почему? Найти минимальное связывающее дерево

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

2.Построить сеть, в которой дуга с наибольшей длиной входит

вкратчайшую цепь, а дуга с наименьшей длиной в нее не входит.

3.Предположим, что в сети все длины дуг diS > 0. Будем

использовать алгоритм § 1 0 .1 , двигаясь одновременно из источ­

ника и из стока. Получится ли кратчайшая цепь, когда оба дерева впервые «встретятся» в некотором узле? [164], [159].

4. В сети на рис. 10.21 около каждой дуги указаны ее пропуск­ ная способность и дуговая стоимость. Найти поток минимальной стоимости величины 4 из N s в N t, используя сначала двойствен­ ный, а затем прямой алгоритм из § 10.4.

222

ГЛ . 10. КРА ТЧ А Й Ш И Е Ц Е П И И ПО ТО КИ М И Н И М А ЛЬН О Й СТОИМОСТИ

5.

Пусть bt] — пропускная способность дуги Ац. Путь из N a

в N z называется путем максимальной

пропускной

способности,

если

 

величина

min (ЪаЪ, ЬЬс, . . ., byz)

является

максимальной

среди

всех путей

из N a в N z. Найти,

какой вид имеет тернар­

ная

операция

для

вычисления путей максимальной пропускной;

способности между всеми парами узлов. Выписать соотношения для нахождения всех узлов, входящих в эти пути.

. 6 . В задаче о потоке минимальной стоимости поток является

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

7. Ориентированная сеть называется ациклической, если она не содержит циклов. Построить алгоритмы для нахождения самой длинной и самой короткой цепи из источника N s во все остальные узлы в ориентированной ациклической сети.

8 . Пусть сеть является (s, ^-плоской, Можно ли так построить

максимальный поток, чтобы никакие из дуговых потоков не унич­ тожали друг друга ([64]).

9. Предположим, что dt] ^ 0. Используя алгоритм из § 10.1, найти кратчайшие пути из одного узла во все остальные узлы сети с помощью декомпозиции ее на несколько' перекрывающих­ ся сетей меньшего размера.

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