глава 2. задачи о максимальном потоке

advertisement
ГЛАВА 2. ЗАДАЧИ О МАКСИМАЛЬНОМ ПОТОКЕ
2.1. ЗАДАЧА О МАКСИМАЛЬНОМ ПОТОКЕ
Пусть G = (N, А) - ориентированная сеть с одним источником s  N
и одним стоком t  N, и пусть дуги (i, j)  А имеют ограниченную пропускную способность. Задача о максимальном потоке заключается в поиске таких потоков по дугам, принадлежащим множеству А, что результирующий поток, протекающий из источника s в сток t, является максимальным. Предполагается, что в источник может поступать неограниченный
поток, для каждого промежуточного узла сети выполняется условие сохранения потока, а пропускная способность Uij каждой дуги представляет
собой конечную верхнюю границу потока fij по этой дуге.
Задача о максимальном потоке может быть сформулирована в виде
следующей задачи линейного программирования:
максимизировать  f in
(2.1)
in
при условии, что  f ij   f ji  0,
j
i  1, i  n,
(2.2)
j
0  fij  Uij , (i,j)  A.
(2.3)
Поэтому для ее решения можно воспользоваться обычным симплексным методом. Однако существует более эффективная процедура поиска решения данной задачи. Алгоритм начинает работу с некоторого допустимого решения. Затем выполняется процедура расстановки пометок,
разработанная Фордом и Фалкерсоном, с помощью которой определяется
другой допустимый поток большей величины. В данном алгоритме узлы
рассматриваются как промежуточные пункты передачи потока, а дуги - как
распределительные каналы. Для формального описания алгоритма необходимо ввести два основных понятия - пометки и аугментального пути потока.
Пометка узла используется для указания как величины потока, так и
источника потока, вызывающего изменение текущей величины потока по
дуге, соединяющей этот источник с рассматриваемым узлом. Если qj единиц потока посылается из узла i в узел j и вызывает увеличение потока по
этой дуге, то узел j помечается из узла i символом + qj.
В данном случае узлу j приписывается пометка [+ qj, i]. Аналогично
если посылка qj единиц потока вызывает уменьшение потока по дуге, то
узел j помечается из узла i символом - qj. В данном случае узлу j приписывается пометка [- qj, i].
26
Текущий поток из узла i в узел j увеличивается, когда qj единиц
дополнительного потока посылается в узел j по ориентированной дуге (i, j)
в направлении, совпадающем с ее ориентацией. В данном случае дуга (i, j)
называется прямой.
Текущий поток из i в j уменьшается, когда qj единиц потока посылается в узел j по ориентированной дуге (i, j) в направлении, противоположном ее ориентации. В этом случае дуга (i, j) называется обратной.
Если узел j помечается из узла i и дуга (i, j) прямая, то поток по
данной дуге увеличивается и величина, соответствующая оставшейся неиспользованной пропускной способности дуги, должна быть нужным образом скорректирована. Данную величину называют остаточной пропускной способностью дуги. Если некоторому узлу приписывается пометка и
при этом используется прямая ветвь, то она может иметь только положительную «остаточную пропускную способность». Кроме того, узел j может
быть помечен из узла i только после того, как узлу i приписана пометка.
Аугментальный путь потока из s в t определяется как связная последовательность прямых и обратных дуг, по которым из s в t можно послать несколько единиц потока. Поток по каждой прямой дуге увеличивается, не превышая при этом ее пропускной способности, а поток по каждой
обратной дуге уменьшается, оставаясь при этом неотрицательным.
Аугментальный путь потока используется для выбора такого способа изменения потока, при котором поток в узле t увеличивается и при этом
для каждого внутреннего узла сети не будет нарушено условие сохранения
потока.
2.1.1. ПРОЦЕДУРА РАССТАНОВКИ ПОМЕТОК ДЛЯ ЗАДАЧИ О
МАКСИМАЛЬНОМ ПОТОКЕ
Задача о максимальном потоке часто встречается на практике, причем число узлов и дуг в сети нередко достигает нескольких тысяч. Поэтому для решения таких задач необходимо использовать эффективную процедуру вычислений. Благодаря простоте постановки задачи о максимальном потоке был разработан эффективный рекуррентный алгоритм поиска
оптимального решения (максимального потока), использующий процедуру
расстановки пометок. Перейдем к описанию этого алгоритма.
Пусть (i, j) - ориентированная дуга, ведущая из узла i в узел j. Поток
по ней можно увеличить на qj единиц, если дуга (i, j) является прямой и узлу j приписывается пометка [+ qj, i]. Предположим, что дуге (i, j) уже приписан поток fij  0 (fij  Uij). Очевидно, что величина qj не может превосхо27
дить остаточной пропускной способности Uij - fij . Но этого не достаточно
для того, чтобы пометить узел j, поскольку из узла i не всегда можно получить Uij - fij единиц потока. В узел j можно послать столько единиц потока,
сколько их добавляется в узел i, т. е. самое большее qi. Следовательно, поток по прямой дуге (i, j) можно увеличить на величину qj, где
qj = min[qi, Uij - fij].
Точно так же можно пометить узел j, если дуга (j, i) является обратной. Уменьшение потока по дуге (j, i) возможно только в том случае, когда
fji  0. Этот поток может быть уменьшен самое большее на число единиц
потока, которое можно взять из узла i, т. е. на величину qi. Следовательно,
поток по обратной дуге (j, i) может быть уменьшен на величину qj, где
qj = min[qi, fji].
Алгоритм расстановки пометок работает следующим образом. Вначале источнику приписывается пометка [, -], указывающая на то, что из
данного узла может вытекать поток бесконечно большой величины. Далее
ищется аугментальный путь потока от источника к стоку, проходящий через помеченные узлы. Все узлы, отличные от источника, в начальный момент не помечены. Нужно пройти к стоку по прямым и обратным дугам и
последовательно пометить принадлежащие им узлы. Возможны два следующих случая:
1. Стоку t приписана пометка [+qt, k]. В этом случае аугментальный
путь потока найден, и поток по каждой дуге этого пути может быть увеличен или уменьшен на величину qt.
2. Сток t не может быть помечен. Это означает, что аугментальный
путь потока не может быть найден, следовательно, построенные дуговые
потоки образуют оптимальное решение (максимальный поток).
2.1.2. ПРИМЕР РАБОТЫ АЛГОРИТМА РАССТАНОВКИ ПОМЕТОК
Для сети, изображенной на рис. 2.1а необходимо найти максимальный поток из источника в сток. Каждой дуге (i, j) приписывается пометка
[fij, Uij], где fij – текущее значение дугового потока, а Uij – пропускная способность дуги. Сначала величины всех дуговых потоков полагаются равными нулю. При выполнении каждой итерации должен быть помечен сток
t. Эта задача решается за шесть итераций, результаты каждой из которых
приведены на рис. 2.1.
28
Шаги на первой итерации
1
2
3
4
Описание процедуры
Приписать узлу s пометку [, -]
Приписать узлу 2 пометку [+3, s]
Приписать узлу t пометку [+2, 2]
Изменить дуговые потоки: fs2 = 2,
f2t = 2
[0,4]
1
2
[2,2]
[0,2]
[2,3]
s
[0,3]
[0,1]
t
Поток = 2
[0,1]
[0,2]
3
Рис. 2.1а. Пример работы алгоритма расстановки пометок: первая итерация
Шаги на второй итерации
5
6
7
8
9
10
1
Описание процедуры
Приписать узлу s пометку [, -]
Приписать узлу 1 пометку [+2, s]
Приписать узлу 2 пометку [+2, 1]
Приписать узлу 3 пометку [+1, 2]
Приписать узлу t пометку [+1, 3]
Изменить дуговые потоки: fs1 = 1,
f12 = 1, f23 = 1, f3t = 1
[1,4]
2
[2,2]
[1,2]
[2,3]
s
[1,1]
[0,3]
t
Поток = 3
[0,1]
[1,2]
3
Рис. 2.1б. Пример работы алгоритма расстановки пометок: вторая итерация
Шаги на третьей итерации
11
12
13
14
Описание процедуры
Приписать узлу s пометку [, -]
Приписать узлу 1 пометку [+1, s]
Приписать узлу t пометку [+1, 1]
Изменить дуговые потоки: fs1 = 2,
f1t = 1
29
[1,4]
1
2
[2,2]
[2,2]
[2,3]
s
[1,3]
[1,1]
t
Поток = 4
[0,1]
[1,2]
3
Рис. 2.1в. Пример работы алгоритма расстановки пометок: третья итерация
Шаги на четвертой итерации
15
16
17
18
19
1
Описание процедуры
Приписать узлу s пометку [, -]
Приписать узлу 2 пометку [+1, s]
Приписать узлу 1 пометку [-1,2]
Приписать узлу t пометку [+1, 1]
Изменить дуговые потоки: fs2 = 3,
f12 = 0, f1t = 2
[0,4]
2
[2,2]
[2,2]
[3,3]
s
[2,3]
[1,1]
t
Поток = 5
[0,1]
[1,2]
3
Рис. 2.1г. Пример работы алгоритма расстановки пометок: четвертая итерация
Шаги на пятой итерации
20
21
22
23
Описание процедуры
Приписать узлу s пометку [, -]
Приписать узлу 3 пометку [+1, s]
Приписать узлу t пометку [+1, 3]
Изменить дуговые потоки: fs3 = 1,
f3t = 2
30
1
[0,4]
2
[2,2]
[2,2]
[3,3]
s
[2,3]
[1,1]
t
Поток = 6
[1,1]
[2,2]
3
Рис. 2.1д. Пример работы алгоритма расстановки пометок: пятая итерация
Шаги на шестой итерации
24
25
Описание процедуры
Приписать узлу s пометку [, -]
Ни один из узлов не может быть
помечен, поэтому максимальный
поток равен 6
2.2. ТЕОРЕМА О МАКСИМАЛЬНОМ ПОТОКЕ И МИНИМАЛЬНОМ
РАЗРЕЗЕ
Пусть задана сеть G = (N, А). Разобьем множество узлов N на два
непересекающихся подмножества Nс и N c . Эти два подмножества соединены между собой дугами, образующими множество Ас. Множество всех
оставшихся дуг - Ac . Пусть сток t принадлежит подмножеству N c , а источник s – подмножеству Nс. Тогда величина любого потока из Nс в N c ,
протекающего по дугам из множества Ас, не может быть больше, чем сумма пропускных способностей всех дуг из Ас, т. е.
 f ij   U ij .
iN c
jN c
(2.4)
Этот «барьер для потока», отделяющий множество Nc от N c , называется «разрезом» и обозначается (Nc, N c ). Величина максимального потока, который может протекать из узла s в узел t, ограничена сверху величиной этого разреза. Величина разреза (Nc, N c ) равна сумме пропускных
способностей всех дуг из множества Ас, по которым поток может протекать из Nс в N c . Согласно теореме о максимальном потоке и минимальном
разрезе, величина максимального потока из узла s в узел t равна величине
минимального разреза, отделяющего узел s от узла t.
31
Теорему о максимальном потоке и минимальном разрезе иллюстрирует сеть, изображенная на рис. 2.2. Существует несколько разрезов, отделяющих узел 6 от узла 1, и величина максимального потока равна 8.
Пропускные способности разрезов 1, 2 и 3, изображенных на рис. 2.2, равны 9, 12 и 8 соответственно. Поэтому разрез 3 является минимальным.
[0,2]
2
[0,3]
1
5
[0,1]
[0,2]
[0,3]
3
[0,2]
4
Разрез 1
(9)
6
[0,2]
[0,1]
[0,4]
[0,3]
[0,2]
Разрез 3
(8)
Разрез 2
(12)
Рис. 2.2. Теорема о максимальном потоке и минимальном разрезе
Значение теоремы о максимальном потоке и минимальном разрезе
заключается в том, что максимальный поток в сети с ограниченной пропускной способностью можно находить, вычисляя пропускные способности всех разрезов и выбирая среди полученных значений минимальное.
При решении задачи о максимальном потоке этот результат имеет небольшое практическое значение, поскольку не дает никакой информации о самих потоках по дугам. Однако данный результат важен с теоретической
точки зрения и часто используется при разработке сложных потоковых алгоритмов или при анализе решения на оптимальность.
Доказывается данная теорема следующим образом. Пусть F - величина некоторого допустимого потока из узла s в узел t. Для любого разреза
(Nc, N c ) справедливо равенство
(2.5)
F     f ij -  f ji .

iN 
jN
 jN
c
Поскольку N = Nс  N c и узел не может одновременно принадлежать двум подмножествам Nс и N c , то
F   f ij   f ij -  f ji -  f ji ,
iN c
jN c
iN c
jN c
iN c
jN c
32
iN c
jN c
(2.6)
F  [  f ij -  f ji ]  [  f ij -  f ji ] .
или
iN c
jN c
iN c
jN c
iN c
jN c
iN c
jN c
(2.7)
Второе слагаемое равно нулю, поэтому
F   f ij -  f ji ,
iN c
jN c
iN c
jN c
(2.8)
откуда следует, что
F   f ij ,
iN c
jN c
(2.9)
поскольку величина fji  0. Следовательно, величина F любого потока
ограничена пропускной способностью произвольного разреза (Nс , N c ), откуда следует, что величина максимального допустимого потока ограничена сверху пропускной способностью минимального разреза.
Из (2.9) и неравенства fij  Uij следует, что
F    U ij .
iN c jN c
(2.10)
Правая часть неравенства (2.10) равна величине разреза (Nс , N c ), отделяющего узел s от узла t. Обозначим эту величину через Vst , тогда
F  Vst .
(2.11)
Пусть (L, L ) - такой разрез, что (а) s L, t L и (б) j L , если существует
i L, при котором fij  Uij или fij > 0. Как было показано выше,
F    f ij -   f ji .
iL jL
iL jL
(2.12)
Из определения множества L следует, что если (i, j)  (L, L ), то fij = Uij, а
если (j, i)  ( L , L), то fji = 0. Следовательно,
  f ij    U ji
(2.13)
  f ji  0 .
(2.14)
iL jL
и
iL jL
iL jL
Поэтому
F    U ij  Vst .
iL jL
(2.15)
Из неравенства (2.11) и (2.15) следует, что F = Vst.
2.3. ЗАДАЧА О МНОГОПОЛЮСНОМ МАКСИМАЛЬНОМ ПОТОКЕ
Существует большой ряд технических и экономических задач, в которых рассматриваемые системы могут быть приближенно описаны в виде
33
детерминированных многополюсных потоковых моделей. Примерами таких систем являются транспортные сети, где автострады изображаются
дугами, пропускные способности которых соответствуют максимально допустимой интенсивности движения; телефонные сети, где телефонные линии представляются дугами, а пропускные способности соответствуют
максимальному числу вызовов, которые могут обслуживаться в каждый
момент времени; электроэнергетические распределительные системы, где
линии электропередачи представлены дугами, а пропускные способности
соответствуют максимальному объему электроэнергии, который может передаваться по линиям в единицу времени. Во всех этих задачах предполагается существование нескольких источников некоторого продукта. Предполагается также, что величина продукта, который может транспортироваться к нескольким стокам, ограничена только пропускными способностями распределительных звеньев.
Задачу нахождения максимального потока для всех пар узлов в неориентированной сети можно рассматривать как обобщение задачи с одним источником и одним стоком, и для ее решения можно воспользоваться
процедурой, описанной в п. 2.1.2, применяя ее к каждой паре узлов. Более
изящный и более эффективный метод был предложен Гомори и Ху. Если
пропускная способность каждой дуги не зависит от направления движения
потока по этой дуге и если каждую пару узлов можно рассматривать как
пару источник - сток, то общее число задач о максимальном потоке, которое должно быть решено, равно n(n - 1)/2, где n - число узлов в сети. При
работе алгоритма Гомори - Ху максимальный поток определяется только
n - 1 раз.
2.3.1. АЛГОРИТМ ГОМОРИ - ХУ
Пусть G = (N, А) - неориентированная сеть, где N - множество узлов, А - множество дуг, cij - пропускная способность дуги (i, j) из множества А, и cij = cji . Mножество узлов задается в виде N = {1, 2, …, n}.
При описании алгоритма будут использоваться следующие обозначения:
vij - максимальный поток между узлами i и j;
(X, X )ij - минимальный разрез, отделяющий i от j (i  X, j  X );
С(Х, X )ij - пропускная способность минимального разреза, отделяющего i от j.
Если некоторый узел s рассматривать как источник, а другой узел
t - как сток, то, согласно теореме о максимальном потоке и минимальном
34
разрезе, vst = C(X, X )st. Если затем в качестве источника и стока выбирается другая пара узлов (i и j соответственно), удовлетворяющих одному простому условию, то в алгоритме Гомори - Ху при определении величины vij
используется решение задачи о максимальном потоке, найденное на
предыдущем шаге. Узлы i и j выбираются таким образом, что оба они принадлежат Х (или X ), тогда множество узлов X (или X, если i и j принадлежат X ) может быть объединено в один узел. При этом величина максимального потока из i в j будет одной и той же для исходной и конденсированной сетей.
Пусть N ij - множество узлов, образованное в результате конденсации всех узлов, лежащих по ту сторону разреза, где не содержатся узлы i и
j. Пусть A ij - множество дуг, соединяющих узлы из N ij. Тогда модифицированная сеть может быть представлена в виде G ij = ( N ij , A ij). Если известны пропускные способности дуг, принадлежащих A ij, то для нахождения величины максимального потока между узлами i и j можно воспользоваться процедурой расстановки пометок. Эти пропускные способности определяются с помощью следующей простой процедуры. Пусть j1,
j2, …, jr - узлы из X , непосредственно связанные с узлом i  X. Если конденсируется множество X , то дуги (i, j1), (i, j2), …, (i, jr) заменяются одной
дугой, соединяющей узел i и конденсированный узел X . Пропускная способность этой дуги вычисляется следующим образом:
r
c iX   c ij .
m 1
(2.16)
m
Как отмечалось выше, величина максимального потока из i в j может быть вычислена с помощью процедуры расстановки пометок, примененной к сети G ij. Для определения величины vij вновь необходимо найти
минимальный разрез, отделяющий i от j. Пусть (X, X )ij - соответствующий
разрез с минимальной пропускной способностью. Теперь можно выбрать
другую пару узлов, принадлежащую либо X, либо X , и построить другую
конденсированную сеть. В результате выполнения процедуры расстановки
пометок можно будет определить другой разрез и построить новую конденсированную сеть. Можно показать, что, после того как будет выбрана n
-1 пара узлов, будут определены все n(n - 1)/2 величин максимального потока для исходной сети G.
Основная идея алгоритма Гомори - Ху состоит в итеративном построении максимального остовного дерева, ветви которого соответствуют
разрезам, а параметры ветвей - величинам разрезов. Ниже дается обоснование алгоритма и приводится иллюстративный пример.
35
2.3.2. ОБОСНОВАНИЕ АЛГОРИТМА
Пусть G = (N, А) - неориентированная сеть, и пусть пропускные
способности всех дуг из А удовлетворяют условию cij = cji. Пусть
i, j, k  N. Согласно теореме о максимальном потоке и минимальном разрезе, vij = С(Х, X )ij. Если k  X , то vik  С(Х, X )ij, а если k  Х, то
vkj  С(Х, X )ij. Следовательно, vij  vkj и vij  vik , откуда следует, что
vij  min [vik, vkj]. Если аналогичные рассуждения повторить для vik и vkj, то
получаться следующие результаты: vik  min [vip, vpk], vkj  min [vkq, vqj], где
{i, p, k, q, j} - связное множество узлов
из N. Следовательно,
vij  min [vip, vkq, vpk, vqj]. В общем случае
v ij  min[ v ii 1 , v i1i 2 , v i 2 i 3 ,..., v i r j ],
(2.17)
где {i, i1, i2, …, j} - связное множество узлов из N.
Перед тем как продолжить рассуждения, нужно доказать следующее свойство максимального остовного дерева:
w ij  min[ w ii 1 , w i1i 2 , w i 2 i 3 ,..., w i r j ],
(2.18)
где (i, j) - произвольная дуга, не принадлежащая данному дереву, {i, i1, i2,
…, j} - единственная последовательность узлов, соединяющих ветви дерева, wij - вес дуги сети. Если неравенство (2.18) не верно, то вместо любой
дуги пути из i в j можно взять дугу (i, j), в результате чего будет построено
дерево с большим весом. Данное противоречие доказывает справедливость
неравенства (2.18).
Если веса wij дуг остовного дерева положить равными vij, то для
любой дуги (i, j), не принадлежащей дереву, будет справедливо соотношение
v ij  min[ v ii 1 , v i1i 2 , v i 2 i 3 ,..., v i r j ],
(2.19)
где {i, i1, i2, …, j} - связная последовательность узлов дерева, принадлежащих пути из i в j. Из неравенств (2.17) и (2.19) следует, что для любой дуги, не принадлежащей дереву,
v ij  min[ v ii 1 , v i1i 2 , v i 2 i 3 ,..., v i r j ].
(2.20)
Максимальное остовное дерево, удовлетворяющее равенству (2.20),
называется деревом разрезов потому, что каждая его ветвь соответствует
разрезу, а вес ветви равен пропускной способности разреза. Если требуется
определить величину максимального потока между двумя произвольными
узлами, надо в дереве найти путь, соединяющий эти два узла, и выбрать в
36
этом пути дугу с минимальным весом. Вес этой дуги равен величине максимального потока между рассматриваемыми узлами.
37
2.3.3. ПРИМЕР ЗАДАЧИ О МНОГОПОЛЮСНОМ МАКСИМАЛЬНОМ ПОТОКЕ
Для каждой пары узлов сети, изображенной на рис. 2.3, определить
величину максимального потока между ними.
7
2
8
2
4
5
7
1
5
8
4
6
4
9
7
11
9
3
6
Рис. 2.3. Сеть в задаче о многополюсном максимальном потоке.
Данная задача решается за n-1=7-1=6 итераций алгоритма ГомориХу. Если процедура расстановки пометок применялась бы к каждой паре
узлов, то потребовалось бы решить 21 задачу о максимальном потоке. Разрезы, построенные на каждой итерации, состоят из дуг, остаточная пропускная способность которых равна нулю. Для простоты изложения результаты, полученные при выполнении процедур расстановки пометок,
опущены. Итерация 1. s=2 и t=5. Величина максимального потока равна
13. Поэтому v25=v52=13. Построение дерева разрезов начинается с ветви,
соединяющей узел 5 и конденсированный узел 1,2,3,4,6,7. Вес данной ветви равен 13.
7
2
8
1
9
2
4
5
7
5
8
4
7
6
4
3
9
1, 2, 3, 4, 6, 7
13
5
11
6
Рис. 2.4а. Задача о максимальном потоке: первая итерация
Итерация 2. s=1 и t=2. Величина максимального потока равна 19. Поэтому
v12=v21=19. Узлы 2 и 5 лежат по одну сторону минимального разреза, а
38
остальные - по другую. Вес ветви, соединяющей узел 2 и конденсированный узел 1,3,4,6,7 равен 19.
7
2
8
8
4
19
2
13
5
11
9
3
1, 3, 4, 6, 7
7
6
4
9
2
4
5
7
1
5
6
Рис. 2.4б. Задача о максимальном потоке: вторая итерация
Итерация 3. s=6 и t=7. Величина максимального потока равна 21. Поэтому
v67=v76=21. Узлы 2, 5 и конденсированный узел 1,3,4,6 лежат по одну сторону минимального разреза, а узел 7 - по другую. Вес ветви, соединяющей
узел 7 и конденсированный узел 1,3,4,6 равен 21.
2,5
2
8
9
8
7
1
9
4
7
7
21
1, 3, 4, 6
19
2
13
5
6
4
11
3
9
6
Рис. 2.4в. Задача о максимальном потоке: третья итерация
Итерация 4. s=4 и t=6. Величина максимального потока равна 25. Поэтому
v46=v64=25. Узлы 6 и 7 расположены в той же части дерева разрезов, что и
конденсированный узел 1,3,4. Вес ветви, соединяющей узел 6 и конденсированный узел 1,3,4 равен 25.
39
2,5
2
8
9
8
7
1
4
21
6
25
19
1, 3, 4
2
13
5
6
4
9
7
7
11
9
3
6
Рис. 2.4г. Задача о максимальном потоке: четвертая итерация
Итерация 5. s=1 и t=4. Величина максимального потока равна 24. Поэтому
v14=v41=24. Узел 1 располагается по ту сторону конденсированного узла
3,4, где не находится ни один из оставшихся узлов. Вес ветви, соединяющей узел 1 и конденсированный узел 3,4 равен 24.
2,5
8
5
14
7
1
1
2
4
4
9
24
21
7
6,7
6
25
19
3, 4
2
13
5
9
3
Рис. 2.4д. Задача о максимальном потоке: пятая итерация
Итерация 6. s=3 и t=4. Величина максимального потока равна 22. Поэтому
v34=v43=24. Вес ветви, соединяющей узел 3 и узел 4 равен 22.
2,5
8
9
2
5
14
7
1
1
4
24
6,7
7
21
6
25
2
13
22
9
4
19
4
3
3
Рис. 2.4е. Задача о максимальном потоке: шестая итерация
40
5
В результате получено полное дерево разрезов, состоящее из шести
дуг. Величины максимальных потоков записываются в виде следующей
матрицы:

19

22

V  24
13

24
 21
19 22 24 13 24 21
 19 19 13 19 19 

19  22 13 22 21 .

19 22  13 25 21
13 13 13  13 13 

19 22 25 13  21
19 21 21 13 21  
Контрольные вопросы к главе 2
1.
2.
3.
4.
5.
6.
7.
8.
Дать определение потока в ориентированной сети.
Сформулировать математически условие сохранения потока.
Дать определение разреза и величины разреза.
Сформулировать теорему о максимальном потоке и минимальном разрезе.
Можно ли решать задачу о кратчайшем пути как задачу о максимальном потоке, в которой поток полагается равным 1.
Если в связной сети пропускные способности дуг, образующих разрез,
положить равными 0, то возможен ли отличный от 0 поток между источником и стоком?
Может ли максимальный поток между двумя парами узлов сети превышать пропускную способность минимального разреза?
При каких условиях неориентированная дуга, соединяющая узлы i и j,
может быть заменена двумя ориентированными дугами (i, j) и (j, i) с той
же пропускной способностью, что и у исходной дуги? В каких случаях
такая замена невозможна? Привести соответствующие примеры.
Упражнения к главе 2
2.1. Решить задачи 3.10, 3.11, 3.18, 3.19 из «Сборника задач по курсам
«Математическое моделирование», «Методы оптимизации».
2.2. Параметр каждой дуги изображенной ниже сети соответствует верхней
границе потока по этой дуге. Найти:
а) максимальный поток из узла 2 в узел 10;
б) цепь с максимальной пропускной способностью из узла 2 в узел 10;
в) максимальный поток между всеми парами узлов.
41
1
27
14
21
2
12
20
4
16
6
13
19
7
21
10
14
22
5
26
15
18
17
8
25
9
20
3
Рис. к упр. 2.2.
2.3. Проверить правильность найденной в упражнении 2.2(а) величины
максимального потока с помощью теоремы о максимальном потоке и минимальном разрезе.
2.4. Параметр каждой дуги изображенной ниже сети соответствует верхней
границе потока по этой дуге. Найти:
а) максимальный поток из узла 1 в узел 9;
б) цепь с максимальной пропускной способностью из узла 1 в узел 8;
в) максимальный поток между всеми парами узлов.
1
10
12
16
14
2
21
4
18
9
15
11
7
25
17
21
6
23
19
5
3
Рис. к упр. 2.4.
42
9
18
8
30
Download