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

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

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

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

Добавлен: 15.10.2024

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

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

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

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