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

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

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

9.4. СИНТЕЗ СЕТИ

183

получится сеть, которая в силу (4) будет удовлетворять исходным

требованиям, т. е. будет являться допустимой. Кроме

того,

в силу (3) построенная сеть будет обладать минимальной

общей

пропускной способностью дуг.

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

Р и с . 9.21.

(в любом порядке), а затем положить пропускную способность каждой дуги цикла равной г/2. Когда поддерево состоит только из двух узлов, чертится соединяющая их дуга с пропускной способностью г. Ясно, что построенная сеть будет удовлетворять всем требованиям равномерного поддерева. Больше того, построен­ ная сеть обладает минимальной общей пропускной способностью дуг. Действительно, в такой сети с п узлами общая пропускная способность дуг равна п-г/2 , что совпадает с величиной нижней

границы

п

1 хд

1

C L =

- j 2jui

= "2 n r -

Рассмотрим, например, рис. 9.22. Каждое равномерное подде­ рево может быть синтезировано, как показано на рис. 9.23. В ре­ зультате суммирования сетей на рис. 9.23 получится сеть, изобра­ женная на рис. 9.24, которая удовлетворяет всем требованиям, заданным на рис. 9.20 (а), и обладает минимальной общей пропуск­ ной способностью *).

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

!) Нетрудно видеть, что если все требования rtj целочисленны, то задача синтеза сети всегда имеет оптимальное решение, в котором пропускные способности дуг являются или целыми, или полуцелыми числами,— Прим,

перев.

Р и с. 9.22.

9.4. СИНТЕЗ 'СЕТИ

185>

в результате получится сеть, построенная на рис. 9.25 (б). Если подсчитать величины потоков, то выяснится, что на рис. 9.25 (б)

fa =

для всех А ц £ Г, а на рис. 9.24 f i} >

для некоторых

A tj ,

хотя обе сети обладают одинаковой (минимальной) общей

пропускной способностью дуг.

 

Будем решать две задачи. В первой из них будем искать мак­

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

ряющие

доминирующим требованиям как строгим равенствам:

fij = ri}

для A tj £ Т. При этом в обеих задачах общая пропуск­

ная способность дуг должна быть минимальной.

Сначала заметим, что минимальная общая пропускная способ­

ность Сь зависит не от всех rtj, а только от иг. Поэтому, после того

как величины

ut найдены, требования можно поднять до г*;- =

= min (ut, Uj),

и при этом величины иь и CL не изменятся. Всякое

дальнейшее увеличение г,*- обязательно приводит к увеличению CL. С помощью некоторой процедуры, описываемой ниже, мы можем синтезировать дерево Т* с требованиями r*j так, чтобы в пост­ роенной сети N* величины максимальных потоков /,*• были рав­ ны rfj. Оказывается, что эта сеть является в некотором смысле доминирующей. Точнее об этом говорится в следующей теореме.

Теорема 9.3. Пусть заданы требования rtj. Тогда существует

допустимая сеть N*,

обладающая общей пропускной способностью

Cl = 2 ui и величинами максимальных потоков

г

/*i = min(«i, uj).

(5>

 

Пусть N' некоторая

другая сеть, такая,

что

 

fij^Tij,

(6 )

причем по крайней мере одно из требований (6 ) выполняется как

строгое

неравенство,

и пусть

С

ее общая

пропускная способ­

ность.

Тогда

либо

 

 

 

 

 

 

 

 

 

(7>

либо

 

 

 

 

 

с

>

а

,

 

 

 

 

 

 

 

 

/« < /& .

 

 

 

(8>

 

 

 

 

 

 

 

 

 

 

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

Возможность

случая

(7)

очевидна.

Остается

доказать,

что

если

 

 

и

 

 

то

 

Если /у

 

то должно

быть:

1

==

тахт,;

для

любого i.

Так

как

1

 

 

 

i

 

 

)

 

 

 

 

 

 

^

b'ij = С

=

Y

2 Мг> значит> на самом деле, '£_Ъ'ц = и1.

От-

г,

з

 

 

 

 

г

 

 

 

 

 

 

 

 

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

что

 

 

 

 

 

 

 

 

 

 

 

 

 

/y < m in

 

2

^ij) = min(Uj,

Uj) = ftj. ш

 

 

S i

186

ГЛ. 9. МНОГОПОЛЮСНЫЕ

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

 

В заключение параграфа

рассмотрим задачу синтеза сети,

в которой требования f tj ^

Гц,

заданные на дереве Т, выполняют­

ся

строго как равенства:

/ i7-

=

Гц, где А ц 6 Т. (При этом сеть

должна обладать минимальной общей пропускной способностью.) Причина, по которой величина потока может превышать тре­ бование Гц, заключается в следующем: может оказаться, что при синтезе равномерного дерева получится цикл, обладающий мини­ мальными разрезами, отличными от минимальных разрезов синте­ зируемого равномерного дерева. Следовательно, при синтезе рав­ номерного дерева надо строить такой цикл, у которого пропускные способности минимальных разрезов равны соответствующим дли­ нам дуг синтезируемого равномерного дерева. Например, в цикле

на рис. 9.23(a)

разрез (Ni, N 2, N 3 | N &, N &) имеет пропускную

способность 10,

в то время как дуга А 24 на рис. 9.22 (а) является

разрезом с пропускной способностью 5. В цикле на рис. 9.25 (а) разрез (Ni, N 2, N 3 | N t, N 5) имеет уже пропускную способность, равную 5.

Если синтезировать равномерное дерево таким образом, чтобы оно являлось деревом разрезов построенного цикла, то при сло­ жении всех построенных циклов их минимальные разрезы тоже как бы «складываются», образуя минимальный разрез в резуль­ тирующей сети; при этом исходное дерево Т доминирующих тре­ бований становится деревом разрезов в полученной сети. Поэтому

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

между

узлами

N t и

N p удовлетворяет

условию

 

 

 

 

 

/ гр< т1п (гг;,

rjh,

. . . ,

rQp).

(9)

Из (2) и (9) следует

 

 

 

 

 

fip =

min (гц,

rjk,

.. ., r0p)«

 

Таким образом, все доминирующие требования выполняются как равенства.

Перейдем к построению цикла, для которого равномерное дерево является деревом разрезов. Для построения такого цикла нужно, чтобы любой дуге дерева соответствовал в цикле разрез из двух дуг, каждая пропускной способности г/2 .

Рассмотрим процедуру расстановки пометок, которая по дан­ ному дереву Т строит нужный цикл.

Ш а г 1. Произвольному узлу из Т присвоить пометку 1.

Ш а г 2. Пусть некоторые узлы из дерева Т получили пометки 1, 2, . . ., к. Проверить, найдется ли непомеченный узел, смеж­ ный узлу с пометкой к. Если да, то присвоить этому непомеченно­ му узлу пометку к + 1. Если найдется несколько непомеченных узлов, смежных узлу к, то какому-то из них присвоить пометку к + 1. Если среди узлов, смежных узлу к, нет непомеченных,

9.4. СИНТЕЗ СЕТИ

187

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

узел, смежный узлу к — 1. Если да, то пометить его А; + 1; если нет, то перейти к узлу к 2 и проверить, найдется ли непомечен­ ный узел, смежный узлу к 2 , и т. д.

Ш а г 3. После того как все узлы дерева Т окажутся помечен­ ными, построить следующий цикл: 1, 2, . . ., п, 1. Этот цикл является искомым.

На рис. 9.26 приведены два возможных варианта расстановки пометок в дереве с помощью описанной процедуры.

Докажем, что для цикла, полученного в результате расстанов­ ки пометок, дерево Т является деревом разрезов. Для этого рассмотрим произвольную дугу 11} дерева. Например, возьмем

 

Р и с . 9.26.

 

дугу,

которая на рис. 9.26 (а) обозначена А 44, а на рис. 9.26 (б)

Л .

Этой дуге инцидентны узлы с пометками i и /; пусть i <

j.

Если дугу li} удалить из дерева, то оно распадется на две компо­ ненты связности В и С, одна из которых будет содержать узел N t, а другая — N j х). Пусть к — наибольшая из пометок узлов, попавших в ту же компоненту, что и Nj. Тогда узел с пометкой

J) Нам нужно доказать, что в синтезирующем цикле компоненты В жС соединены ровно двумя дугами. Для этого достаточно показать, что если помечен какой-то узел из С, то перейти обратно в В можно лишь после того, как будут помечены все узлы из С. Предположим, что узел 1 лежит в В. Из алгоритма видно, что в С мы могли попасть только по дуге 1 ^ . Значит,

узел i уже был помечен. Следовательно, нет ни одной дуги дерева, которая вела бы из С в непомеченный узел из В. Так как все узлы в С по алгоритму получают индексы большие, чем уже помеченные узлы в В, то попасть в В мы можем только «обратным ходом», просматривая все помеченные в С узлы.— Прим, перее.

188

ГЛ. 9. МНОГОПОЛЮСНЫЕ МАКСИМАЛЬНЫЕ ПОТОКИ

к +

1 должен попасть в ту же компоненту, что и N t. (Если к = п,

то

роль к + 1 играет 1.) Так как / — наименьшая из пометок

узлов, попавших в С, то узел с пометкой j — 1 также должен

попасть в ту же компоненту,

что

и N t.

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

каждой

дуге ltj дерева соответствуют

две

дуги

цикла, Aj ^, j и

A k, ft+1,

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

Упражнения

1.Найти потоко-эквивалентное дерево для сети, изображен ной на рис. 9.1.

2.Привести алгоритм, превращающий потоко-эквивалентное

дерево в потоко-эквивалентный путь. Например, дерево на рис. 9.18 является потоко-эквивалентным пути на рис. 9.27.

Ри с . 9.27.

3.Решить задачу синтеза сети с минимальной пропускной спо­ собностью, если заданы требования, представленные на рис. 9.28:

а) найти доминирующую сеть;

 

Р и с .

9,28.

Р и с .

9.29

б)

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

няются как

равенства.

определяться

однозначно, если

4.

Будет

ли

дерево разрезов

в сети все величины btj различны?

 

5.

Показать, что если сеть

ориентированная, то условие

f ih ^

min (fij, fJk) является необходимым, но не достаточным для

 

ДОПОЛНЕНИЕ

189

реализуемости множества чисел /*& в качестве множества макси­

мальных

потоков.

 

6 .

Пусть задано дерево требований, представленное на рис. 9.29.

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

Дополнение

1. Предположим, что имеется неориентированная сеть с п узла­ ми и требуется найти максимальные потоки между р узлами неко • торого заданного подмножества узлов. Алгоритм, предложенный Аккерсом [2], заключается в упрощении сети таким образом, что­ бы упрощенная сеть оставалась потоко-эквивалентной исходной

Р и с . 9.30.

сети по отношению к заданному подмножеству узлов. Пусть N t — некоторый узел, не принадлежащий заданному подмножеству узлов и инцидентный некоторым трем узлам, как показано на рис. 9.30 (а). Тогда узел N t может быть удален из сети, а сеть примет вид, изображенный на рис. 9.30 (б). Если применить этот

прием несколько раз, то

сеть можно значительно упростить.

2.

Пусть заданы

требования ri} к потоку и стоимость ct]

дуги

Aij единичной пропускной способности. Требуется построить

ееть

минимальной стоимости, удовлетворяющую заданным требо­

ваниям к потоку (см. Гомори и Ху [90]).

Нерешенные задачи

1. Пусть пропускные способности дуг в неориентированной сети принимают только значения 0 и 1. Каковы необходимые и до­ статочные условия, которым должны удовлетворять элементы квадратной матрицы, чтобы они являлись величинами максималь­ ных потоков между всеми парами узлов в некоторой сети? (Заме-

190 ГЛ. 9. МНОГОПОЛЮСНЫЕ МАКСИМАЛЬНЫЕ ПОТОКИ

тим, что неравенство треугольника в этом случае является необ­ ходимым условием, но не достаточным.)

2. При синтезе сети минимальной пропускной способности в оптимальном решении пропускные способности дуг могут быть полуцелыми числами. Как построить сеть минимальной пропуск­ ной способности, чтобы пропускные способности дуг были бы все целыми числами?

3. Задана сеть с ограниченными пропускными способностями

дуг.

В сети

выделено

к пар

узлов N u

Ni>; N z, N Z'', . . . \ N h,

Nb'.

Найти

множество

дуг,

отделяющее

узлы iVi, N z, . . . , N h

от N I-, N 2 ', . . . , N h> и обладающее минимальной пропускной спо­ собностью с (1 , 2 , . . . , к\ 1 ', 2 ', . . . , к').

4. Задана неориентированная сеть с ограниченными пропуск­ ными способностями дуг. Найти множество дуг, удаление которых из сети разбивает ее на к компонент, причем это множество долж­ но обладать минимальной пропускной способностью. (Заметим, что при к = 2 и к — п 1 задача тривиальна.)

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

ГЛАВА 10

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

ЮЛ. Кратчайшие цепи (Дийкстра [49])

В этом параграфе будет рассмотрена одна из основных задач теории сетей — задача нахождения кратчайшей цепи между дву­ мя заданными узлами *). Она имеет многочисленные практические приложения, а также часто используется при решении различных задач оптимизации.

Имеется сеть, каждой дуге А ц которой поставлена в соответ­ ствие длина, или расстояние dtj. Длиной цепи называется сумма длин dij, взятая по всем дугам этой цепи. Требуется найти цепь минимальной длины из заданного узла N s в заданный узел N t. Если узлы сети интерпретировать как города, а величины dtj — как стоимости проезда из города N t в город Nj, то кратчайшая цепь представляет собой самый экономный маршрут.

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

В этом параграфе будет предполагаться, что все величины di} неотрицательны. Если некоторая пара узлов N t, Nj не связана дугой, то полагаем dtj — сю. Заметим, что величины dl} являются произвольными и не обязаны удовлетворять неравенству треуголь­ ника dtj + djh ^ dik. Если бы это неравенство выполнялось, задача оказалась бы тривиальной, так как тогда кратчайшей цепью из N s в N t была бы всегда дуга A st. Величины dtj, кроме того, не обязаны удовлетворять условию симметричности dtj = djt.

Будем вместо нахождения кратчайшей цепи из N s в N t искать кратчайшие цепи из N s во все остальные узлы N t сети. Это объяс­ няется тем, что любой узел N t может оказаться некоторым про­ межуточным узлом кратчайшей цепи из N s в N t. Если узел N t принадлежит кратчайшей цепи из N s в N t, то ее часть из N s в N t должна быть кратчайшей. Действительно, в противном случае указанную часть цепи из N s в N t можно было бы заменить на крат­ чайшую, и при этом получилась бы более короткая цепь из N s в N t. Но это противоречило бы тому факту, что первоначальная цепь из N s в N t является кратчайшей.

х) В литературе она известна также под названием задачи о кратчайшем пути.— Прим. ред.

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

Рассмотрим дуги, которые входят

в кратчайшие цепи

из N s

во все остальные узлы N t; эти дуги

образуют некоторый

граф.

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

мер, две кратчайшие цепи из N s в Ni,

то какая-то дуга в одной

из этих цепей может быть удалена (а

именно, последняя дуга

цепи — Ам или А и). После удаления всех таких «лишних» дуг останется граф, который будет деревом. Таким образом, если некоторая дуга А и принадлежит этому дереву, то кратчайшей цепью из N t в N j будет сама эта дуга А ц. Алгоритм, рассматривае­ мый ниже, позволяет получить такое дерево.

Итак, надо построить дерево, которое содержит кратчайшие цепи из узла N s во все остальные узлы сети. Дуги сети, принад­ лежащие этому дереву, будем называть дугами дерева, а дуги, не принадлежащие ему — дугами вне дерева. После того как дерево будет построено, каждая кратчайшая цепь будет состоять из дуг дерева. В начале алгоритма все дуги сети считаются дугами вне дерева. В процессе работы алгоритма количество дуг дерева посте­ пенно увеличивается от 0 до п 1 , где п — число узлов данной

сети.

Работа алгоритма начинается следующим образом: полагаем, что узел N s принадлежит искомому дереву. Предположим теперь, что найдено т дуг дерева = 0, 1, . . ., п — 2). Длину кратчай­ шей цепи из узла N s в узел N h обозначим Lsk. Рассмотрим цепи из N a в Nh, содержащие, кроме дуг дерева, не более одной дуги вне дерева. Длину кратчайшей среди таких цепей обозначим L'sh. Если все цепи из N s в N h содержат на некотором шаге алгоритма больше одной дуги вне дерева, то полагаем L'sk = оо. Заметим, что величина L'sh зависит от т : она изменяется по мере увеличе­

ния т.

Вообще говоря,

L'Sh ^ L&h-

 

 

 

Предположим, что в ходе алгоритма построена часть искомого

дерева,

которую будем

называть

текущим

деревом.

Узел

N k

(не принадлежащий текущему дереву) будем

называть соседним

с этим деревом, если в сети имеется дуга A ik или дуга A hi,

где

Ni — некоторый узел

текущего

дерева. Тогда цепь

длины

L'si

из узла

N s в узел N t дерева содержит только дуги дерева, и сле­

довательно, L'si — LSi.

Из определения L'Sh

следует,

что

 

 

 

L'sk= min (Lsi -f dik),

 

 

 

 

 

 

i

 

 

 

 

где минимум берется по всем узлам текущего дерева.

узлов

 

Пусть N T— тот

из соседних с

текущим

деревом

N k,

который

обладает

минимальной

величиной

L'sk : L'sr= min L'sk,

 

 

 

 

 

 

h

 

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