Файл: Ху, Т. Целочисленное программирование и потоки в сетях.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 |
|