Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 201
Скачиваний: 0
172 |
ГЛ. |
9. |
МНОГОПОЛЮСНЫЕ |
МАКСИМАЛЬНЫЕ |
ПОТОКИ |
||
(Q, |
Р [I R |
U |
S), |
либо (Р U Q U |
S, R) является |
искомым мини |
|
мальным разрезом (Z , Z), разделяющим |
узлы N t и Nj и не пере |
||||||
секающимся с разрезом (X, X). |
|
|
(в этом случае лемма |
||||
|
III. |
Пусть Ха€<?> N t £Q, |
N b£ P, |
N j 6 R |
9.3 является обобщением леммы 9.2). Так как разрез (X, X) —
минимальный из |
разрезов, |
разделяющих N a |
и N b, |
a (Q, Р IJ |
||
(J R |
U S) — некоторый разрез, разделяющий N a и N b, |
то |
||||
|
|
с (X, X ) < c ( Q , Р |
U R U S) |
|
|
|
или, |
в более подробной записи, |
|
|
|
||
|
c(Q, |
P) + c(S, |
P) + c(Q, |
R) + c(S, |
Д )< |
|
^ c (Qi P ) Jr c (Q^ R ) Jr c (Qi &)•
Поскольку c(S, P ) ^ 0, t o
|
|
c(S, R) ^ c ( Q, |
S), |
|
(11) |
|||
а так как c(P, |
S ) ^ 0, |
t o |
|
|
|
|
|
|
c(P, R)-~c(Q, |
R ) < c ( R , |
R) + |
c(Q, |
R) + e{P, S). |
(12) |
|||
Складывая (И ) и (12), получаем |
|
|
|
|
||||
|
с (P, |
R)-\-c (Q, |
R)-\-c (S, |
R )s7l |
|
|||
< |
с (P, R) + |
c (Q, |
R) + с (P, S) + c (Q, S) |
(13) |
||||
или |
|
|
|
|
|
|
|
|
|
c(P |
U |
Q U |
5, |
R ) < c ( Y , |
Y). |
(14) |
Таким образом, (P [J Q U S, R) —искомый минимальный раз рез (Z, Z), разделяющий узлы TV; и Nj и не пересекающийся с разрезом (X, X). в
Рассмотрим теперь произвольную сеть N, состоящую из п уз лов. Будем искать величины максимальных потоков между задан ными р узлами сети N. Эти р узлов, между которыми ищется максимальный поток, будем называть полюсами, а остальные п — р узлов будем называть обычными или промежуточными. Пред положим, что имеется некоторая другая сеть N ', которая состоит из р узлов, причем величины максимальных потоков между р полюсами сети N равны величинам максимальных потоков меж ду р узлами сети N '. (Две сети, имеющие равные величины макси мальных потоков между некоторым множеством узлов, назы ваются потоко-эквивалентными или просто эквивалентными отно сительно этого множества узлов.) Тогда можно найти искомые величины максимальных потоков между р узлами, рассматривая
9 .3 . АНАЛИЗ СЕТИ |
173 |
сеть N ' . Оказывается, что для каждой сети N всегда существует эквивалентная ей сеть N ' , являющаяся деревом. Рассматривае мый ниже алгоритм позволяет по сети N построить эквивалентное ей дерево N ’. В этом алгоритме процесс нахождения максималь ных потоков между р полюсами сети состоит из двух шагов, кото рые повторяются до тех пор, пока не будет построено дерево N ' , эквивалентное исходной сети N.
Рассмотри^ сначала в общих чертах, что представляют собой шаги алгоритма, а затем дадим более ,подробное его описание.
Ш а г 1 заключается в решении задачи о максимальном потоке между двумя выбранными полюсами, причем обычно эта задача решается в сети, меньшей, чем исходная сеть N, так как некоторое множество узлов сжато в один узел. При нахождении максималь ного потока выделяют минимальный разрез, затем переходят к шагу 2 .
Ш а г 2 заключается в нахождении очередной дуги дерева, при этом используется выделенный на шаге 1 минимальный раз
рез. (Алгоритм заканчивается, когда найдено р — 1 дуг дерева.) Далее выбирается некоторая новая пара полюсов и осуществляет ся сжатие некоторых подмножеств узлов исходной сети, в резуль тате чего получается сеть, которая будет использоваться в сле дующий раз на шаге 1. После этого переходят к шагу 1.
Дадим теперь более подробное описание алгоритма. Сначала произвольным образом выберем два полюса и решим
в исходной сети N задачу о максимальном потоке между ними. При этом будет выделен минимальный разрез (X , X) пропускной способности с (X , X). Он будет символически изображаться двумя «вершинами», соединенными дугой с пропускной способностью Vj = с (X, X) (рис. 9.6.) (Эта дуга является первой дугой дере ва N ' .) В одну из вершин поместим все узлы множества X, а в дру гую — узлы множества X. Сами вершины будем обозначать сле дующим образом: ® , ® , ® и т .д .
Затем выберем в построенном дереве (рис. 9.6) любую вершину, содержащую 2 или более полюсов, выделим в ней два произволь
ных полюса, сожмем узлы другой вершины в один узел и решим задачу о максимальном потоке между двумя выделенными полю сами в сжатой сети. Например, выделим два полюса в (х). Тогда
все узлы из X можно сжать в один узел. Решение задачи о макси мальном потоке в сжатой сети дает новый минимальный разрез пропускной способности н2Получается дерево, изображенное на рис. 9.7, где пропускная способность новой дуги равна к2. Заметим, что вершина ® связывается дугой с вершиной ® ,
174 |
ГД. 9. МНОГОПОЛЮСНЫЕ МАКСИМАЛЬНЫЕ ПОТОКИ |
если |
множества X и Y принадлежат к одной и той же части ново |
го разреза величины v2\ вершина @ связывается дугой с (?),.
если множества X и Y принадлежат к одной и той же части раз реза величины v2.
Далее процесс разбиения вершин дерева продолжается анало гично. На каждом этапе разбиению подвергается некоторая вер
|
шина |
|
которая содержит |
||||
|
не меньше двух полюсов. |
||||||
|
Если вершину (?) удалить из |
||||||
|
дерева, |
то |
оно |
распадается |
|||
|
на несколько компонент связ |
||||||
|
ности (рис. 9.8). При решении |
||||||
|
задачи о максимальном пото |
||||||
|
ке между двумя полюсами из; |
||||||
|
® все |
узлы, |
кроме |
узлов |
|||
|
из (?), попавшие в одну ком |
||||||
|
поненту связности, сжимают |
||||||
|
ся в один узел. После того |
||||||
|
как |
задача |
о максимальном |
||||
|
потоке |
будет решена |
р — 1 |
||||
|
раз, |
будет |
построено |
дере |
|||
|
во Т, каждая вершина кото |
||||||
|
рого |
содержит |
ровно |
один |
|||
|
полюс |
и, может быть, |
не |
||||
Р и с. 9.8. Вершина У содержит не |
сколько |
промежуточных |
уз |
||||
сколько полюсов. |
лов. |
(Заметим, |
что задача о |
||||
|
максимальном йотоке обычно |
решается в сети, более простой, чем исходная, благодаря сжатию
некоторых |
узлов.) |
|
|
|
|
|
Совсем не очевидно, что построенное дерево Т эквивалентно |
||||||
исходной сети N . Факт этот |
вытекает |
из следующей теоремы. |
||||
Теорема |
9.2. |
Величина |
максимального |
потока |
между |
|
любыми двумя |
полюсами N t |
и N j |
исходной |
сети N |
равна |
9.3. АНАЛИЗ СЕТИ |
175 |
min (via, vab, . . vdj), где via, vab, . . ., vdj — пропускные спо собности дуг, образующих единственный путь из N t в N }- в постро енном дереве Т.
Д оказательство. Заметим, что все дуги, связывающие вер шины дерева Т, изображают минимальные разрезы, отделяющие
некоторые |
пары |
полюсов се |
|
|
|
|||
ти N . Покажем, что |
пропу |
|
|
|
||||
скная способность, приписан |
|
|
|
|||||
ная каждой из дуг, |
равна вели |
|
|
|
||||
чине максимального потока в N |
|
|
|
|||||
между двумя полюсами, нахо |
|
|
|
|||||
дящимися в соседних вершинах |
|
|
|
|||||
дерева. |
|
|
|
|
|
|
|
|
Рассмотрим дугу, связываю |
|
|
|
|||||
щую две вершины дерева, одна |
|
|
|
|||||
из которых |
содержит |
некото |
|
|
|
|||
рый полюс N а, |
а другая — не |
|
|
|
||||
который полюс |
N ь. Обозначим |
|
|
|
||||
через X -множество узлов, на |
|
|
|
|||||
ходящихся в той же части дере |
|
|
|
|||||
ва, что и узел JVa, через X — мно |
|
|
|
|||||
жество |
узлов, |
находящихся |
|
|
|
|||
в той же части дерева, что и N b (рис. |
9.9). Рассматриваемой |
дуге |
||||||
приписана |
пропускная |
способность |
с (X, X), |
которая |
как |
|||
будет |
показано |
ниже, |
равна величине максимального потока/аЬ |
|||||
между |
узлами |
N a и N b в исходной |
сети N . |
|
|
|||
Пусть (X, X) является минимальным разрезом, |
разделяющим |
|||||||
некоторые узлы iV, £ X |
и N j £ X. Величина максимального потока |
|||||||
}аЬ равна величине |
некоторого минимального разреза в исходной |
сети. По лемме 9.3 существует минимальный разрез (Z, Z), разделяющий узлы N a и N b и не пересекающийся с разрезом
( X , X ) .
Положим для определенности, что N a £Z, N b£Z.. Пусть Z c c l , Z zd X, как .изображено на рис. 9.9. (Случай, когда Z cz X, Z z d X анализируется аналогично.) Существует две возможности:
1) Ni £ Z, 2) Ni £ X П Z. Покажем, что в обоих случаях с (Z, Z) ^
>с ( Х , X).
1)Пусть N i £ Z . Этот узел обозначен на рис. 9.9 символом гь
заключенным в кружок. Тогда разрез (Z, Z) разделяет Ni и N р, c(Z, ~Z)^sfij = c(X, X) (иначе (X, X) не был бы минимальным разрезом, разделяющим N t и Nj).
2) |
Пусть N i £ X f| |
Z. |
Это узел |
обозначен |
на рис. |
9.9 симво |
лом |
г2, заключенным |
в |
кружок. |
По лемме |
9.1 и |
теореме 8.2 |