Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 220
Скачиваний: 0
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, найти кратчайшие пути из одного узла во все остальные узлы сети с помощью декомпозиции ее на несколько' перекрывающих ся сетей меньшего размера.
ГЛАВА 11
МНОГОПРОДУКТОВЫЕ п о т о к и
11.1.Двухпродуктовые потоки (Ху [106])
Вгл. 8 рассматривалась задача нахождения максимального'
потока из источника N s в сток N t при наличии ограничений вида ХИ ^ Ьц на пропускные способности дуг. Если в сети имеется несколько источников и несколько стоков и поток может идти из любого источника в любой сток, то задачу можно свести к зада че с одним источником и одним стоком. Это осуществляется добав лением одного нового источника и одного нового стока.
Если ввести ограничение, что поток должен идти из некоторых выделенных источников в некоторые выделенные стоки, то полу
чится задача о многопродуктовом потоке. Пусть |
имеются источ |
||||||
ники N s и стоки |
N s> |
(s = |
1, |
2, |
. . ., |
q, s' = |
1', 2', . . ., q')t |
и s-й поток должен идти |
из источника N s в сток N S'. Пусть хц’ — |
||||||
это s-й поток по дуге A tj *), / |
(s, s') — величина s-ro потока из -/V» |
||||||
в N S’. Одна из задач, возникающих при анализе многопродукто |
|||||||
вых потоков, имеет следующий вид: |
|
|
|||||
максимизировать |
|
|
|
|
|
|
|
|
|
2 |
/(*, |
О |
|
|
|
|
|
s=1 |
|
|
|
|
|
при ограничениях |
|
|
|
|
|
|
|
|
|
( —/(в.*')» |
если У=*. |
|
|||
2 |
хЬ = |
< |
° ’ |
|
если |
7 ^ |
|
г |
|
1 / (в. s'). |
|
если |
] = *’ |
|
|
я |
|
|
(для |
всех |
i, j). |
|
|
2 |
|
|
|
||||
S = |
1 |
|
|
|
|
|
|
В задачах об однопродуктовом потоке одна неориентированная дуга всегда может быть заменена на две ориентированные дуги с противоположными ориентациями. При этом потоки, идущие
х) Поток x\j считается положительным, если он идет по дуге A tj от узла N { к узлу Nj, если же он идет от узла N j к узлу N t , то считается отри
цательным; = — X s-,:— Прим, перев.
31
224 Г Л . 11. М Н О ГО П РО ДУ К ТО В Ы Е п о т о к и
в противоположных направлениях, можно взаимно уничтожить. Иначе обстоит дело с многопродуктовыми потоками. Два разно продуктовых потока', идущих по одной дуге в противоположных
направлениях, |
не уничтожают, друг друга. В |
этом заключается |
||||
•одна из |
основных трудностей многопродуктовых задач. |
|
||||
|
Другая задача, связанная с многопродуктовыми потоками,— |
|||||
это так |
называемая задача о допустимости. |
Она заключается |
||||
в |
следующем. |
Заданы |
неотрицательные целые числа |
г (s, s') |
||
(s |
= 1, |
. . ., q, |
s' = 1', |
. . ., q'). Требуется |
выяснить, |
сущест |
вуют ли допустимые потоки x\j, т. е. удовлетворяющие ограни чениям
f(s, s')> r (s, s'), |
|
||
—f(s, |
s'), |
если j = s, |
|
О, |
|
если / =£s, s', |
|
{f(s,s'), |
если j = |
s', |
|
2 \ x t j \ ^ b i3 |
(для всех i, |
j) |
|
8—1 |
|
|
|
(т. e. требуется выяснить, совместны ли эти ограничения).
Как уже говорилось раньше, однопродуктовую задачу о пото ке всегда можно представить как задачу линейного программиро вания с целевой функцией z = сх и ограничениями вида Ах = Ъ. Матрица А обладает свойством абсолютной унимодулярности, и следовательно, базисное оптимальное решение всегда целочис ленно. Это, вообще говоря, уже неверно в задачах о многопро дуктовом потоке. Большинство многопродуктовых задач не может быть решено методом расстановки пометок или его ва риациями.
Рассмотрим один специальный класс многопродуктовых задач— задачи о двухпродуктовом потоке в неориентированной сети. Для них справедлива теорема, аналогичная теореме о максимальном потоке и минимальном разрезе. Кроме того, они обладают свой
ством, |
аналогичным свойству абсолютной унимодулярности. |
(В [173] |
показано, что результаты этого параграфа выполняются |
и в случае псевдосимметричной сети х).)
Поскольку и доказательство теоремы, и описание алгоритма достаточно громоздко, мы сначала обсудим интуитивную идею, лежащую в их основе.
х) Псевдосимметричной называют сеть, для каждого узла N t которой
2 Ьи четна (см. [173]).— Прим, перев.
11.1. Д В У Х П Р О Д У К Т О В Ы Е п о т о к и |
225 |
Пусть имеются потоки двух продуктов в сети. Будем максими зировать поток первого продукта, как это делается в обычной однопродуктовой задаче. После того, как в процессе максимиза ции получится требуемая величина г (1 , 1 ') потока 1 -го продукта, будем увеличивать поток 2 -го продукта от нуля до требуемой величины г (2 , 2 '), стараясь сохранять неизменной величину
потока 1-го продукта. Это делается путем создания в сети цикла для потока 1-го продукта. Добавление такого цикла либо увеличит дуговые потоки 1 -го продукта, либо уменьшит их, в зависимости
от направления дуговых потоков, уже имеющихся в сети. Алго ритм, представленный ниже, находит такой цикл для потока 1 -го
продукта, что при добавлении этого цикла в сети найдутся пути, увеличивающие поток 2 -го продукта.
Обычно разрез обозначался символом (X, X), а пропускная
способность разреза — символом с (X, X). По причинам, которые станут ясными в дальнейшем, будем теперь использовать символ
(s, t) |
для обозначения |
минимального |
разреза, |
разделяющего N s |
|
и N t, |
и символ с (s, t) |
— для обозначения пропускной способности |
|||
минимального |
разреза. |
|
|
|
|
Разрез (s, |
t) разделяет одну пару |
узлов. |
Теперь определим |
соответствующие понятия, когда разделяется много пар узлов. Приведенным множеством, разделяющим т пар узлов, называет
ся множество |
дуг, |
удаление |
которых отделяет узел N t от узла |
|
N и (г = 1,2, |
. . ., |
т) и при |
этом никакое его собственное под |
|
множество не |
обладает этим свойством. (Заметим, что узел N ( |
|||
может оказаться в той же самой компоненте связности, что и N у, |
||||
если j =/= i.) |
Дальше в этом параграфе приведенное множество, |
|||
разделяющее |
пары вершин, будем называть также «разделяющим |
|||
множеством». |
|
способностью разделяющего множества называется |
||
Пропускной |
||||
сумма пропускных способностей дуг, входящих в него. Разделяю |
||||
щее множество, |
пропускная |
способность которого минимальна, |
называется минимальным множеством. |
Минимальное разделяю |
||
щее множество, отделяющее узлы N t от узлов Ni- (i = |
1 , 2 , . . . k), |
||
будем обозначать (1 , 2 , . . ., k; 1 ', 2 ', |
. |
. ., к'), а |
пропускную |
способность минимального разделяющего |
множества — символом |
||
с (1 , 2 , . . ., к; 1 ', 2 ', . . ., к’). |
|
|
|
Лемма 11.1. Удаление приведенного множества, разделяюще'го
кпар узлов, разбивает сеть не более чем на к + 1 компонент связ
ности.
Д оказательство. Каждая дуга связывает два узла. Поэтому если удалять одну за другой дуги приведенного разделяющего множества, то число компонент связности каждый раз либо не меняется, либо увеличивается на единицу. Каждый раз, когда
15 т. ху