книги из ГПНТБ / Ху, Т. Целочисленное программирование и потоки в сетях
.pdf
|
11.1. |
|
Д В У Х П Р О Д У К Т О В Ы Е |
потоки |
233 |
|||||
Ш аг 2. |
Находим |
обратный |
путь |
из |
N z |
в N z>, |
состоящий |
|||
из дуг А 23, |
А 34, И47, |
|
И78, |
А 8 2 ', |
для которого |
|
|
|||
|
х\ = |
min (ж£3, х\7) = min (2 , 2 ) = |
2 , |
|
||||||
f e f t = m i n ( b 23 — |
Я м » &34 + 4 з » |
5 47, &78 + |
4 7, &82' — 4 ' ) |
= |
||||||
|
|
|
= min (2, 4, 2, 4, 2) = |
2. |
|
|
||||
Находим |
прямой |
|
путь |
из |
iV2 в N 2>, |
состоящий из дуг А23, |
||||
Азв, А в7, A 7i, A ib и П52 ', |
для |
которого |
|
|
|
|
xj = min (xle, х\„ х\ъ) = min (2 , 2 , 2 ) = 2 ,
bf = min {b23—4 ,, b3&+ х\„ b67+ x\v b74, bi5 + x\b, 6M<) =
= min (2, 4, 4, 2, 4, 2) = 2.
Следовательно,
x\f = 2 , bbf = 2, h = min (4 /, 0,5bbf) = min (2 , 1 ) = 1 .
Мы направляем единицу потока 1-го продукта по циклу, обра зованному двойным путем. Результат изображен на рис. 11.5.
|
|
Р и с . 11.4. |
Р и с . 11.5. |
по |
Ш а г |
3. Поток / |
(2, 2') увеличиваем на 2 единицы, посылая |
одной |
единице по |
каждому из путей. Результат изображен |
|
на |
рис. |
1 1 .6 . |
|
|
Дальнейшее использование шага 1 не может увеличить / (2, 2 ), |
а использование шага 2 не приводит к получению двойного пути.
Отсюда потоки, полученные на рис. 11.6,— максимальные, т. е. ве личина / (1, 1') + / (2, 2') = 6 + 4 = 10 максимальна.
Минимальное разделяющее множество состоит из дуг A i5, А к1,
^4 38» ^в7-
234 |
ГЛ. И . МНОГОПРОДУКТОВЫЕ п о т о к и |
|
|
Чтобы доказать справедливость алгоритма, нужно доказать |
|||
следующие |
утверждения. |
|
|
1°. После выполнения шага 3 для всех дуг выполняется усло |
|||
вие IZjjl + |
lzfjK&ii- |
|
|
2°. Когда алгоритм заканчивается, |
то либо |
находятся по |
|
|
токи, удовлетворяющие задан |
||
|
ным ограничениям, либо выя |
||
|
сняется, что заданные потоко |
||
|
вые ограничения являются не |
||
|
совместными. (Если решается |
||
|
задача максимизации / ( 1 ,1 ') + |
||
|
+ / ( 2 , 2 '), то в результате ра |
||
|
боты |
алгоритма |
оказывается |
найденной величина
шах [ /( 1 , 1 ') + |
/ |
( 2 , 2 ')].) |
3°. Величины x\j |
и xfj —це |
|
лые числа. |
|
|
4°. Алгоритм |
конечен. |
Д оказательство.
1°. Докажем сначала, что после выполнения шага 3 для любой
дуги А ц прямого пути выполняется условие |
|
||
IХЬ I + |
1 xh I |
bij- |
{*) |
Пусть направление от А/ к Nj —положительное. |
|
||
Из определения прямого пути следует, что |
|
||
b i j - x \ j |
x\j ]> 0. |
(5) |
|
Перед выполнением шага 2 имеем |
|
|
|
Ьц — | x\j | — | хц |> 0 . |
(6 ) |
||
По определению |
|
|
|
min [x\j, 0,5 (btj + |
xlj — xb)]. |
(7) |
На шаге 2 |
мы направляем h единиц потока 1-го продукта от Nj |
к N t , а на |
шаге 3 — h единиц потока 2-го продукта от N t к N j . |
Возможны 4 случая.
Случай 1. Пусть на рассматриваемой дуге A tj перед выполне нием шага 2 x\j > 0 и x\j ^ 0. На шаге 2 величина потока 1-го продукта уменьшается на h единиц, а на шаге 3 величина потока 2 -го продукта увеличивается на h единиц.
Из (6 ) тогда имеем
Ьц — | x\j —h | — | x\j -f h | > 0 .
Следовательно, условие (*) выполняется.
11.1. Д В У Х П РО Д У К Т О В Ы Е п о т о к и |
235 |
||
Случай 2. Пусть на рассматриваемой дуге |
A tj |
перед выполне |
|
нием шага 2 x j i ^ O и x l j ^ O . |
Неравенство (5) |
примет вид |
|
bij |
Хц Xlj ~^>0. |
|
|
Согласно определению h, |
|
|
|
0,5 (bij —x)i —xfj), |
|
|
|
или |
|
|
( 8) |
bij — xji — xfj — 2 h ^ 0 . |
|
На шаге 2 величина потока 1-го продукта по дуге Ац увели чивается на h единиц, на шаге 3 величина потока 2 -го продукта увеличивается на h единиц. Тогда из неравенства (8 ) имеем
btj — | x}i + h | — | xb + h | > 0 .
Условие (*) выполняется.
Случай 3. Пусть x\j ^ 0 и 4 ^ 0. Тогда на шаге 2 величина потока 1 -го продукта уменьшается на h единиц, на шаге 3 величи
на потока 2-го продукта уменьшается на h единиц. Из неравен ства (6) получим
Ьц — \ x \ j - h\ — \х%— h \ ^ 0 .
Случай 4. Пусть xji ^ 0 и xji 0. Тогда на шаге 2 величина потока 1 -го продукта увеличивается на h единиц, а на шаге 3 вели
чина потока |
2-го продукта |
уменьшается на h единиц. Получим |
|
Ьц — I xji + |
h | — | xji —h |> 0 . |
Условие (*) |
выполняется 1). |
|
Совершенно аналогично можно доказать, что после выполне ния 3-го шага условие (*) выполняется для любой дуги обратного пути.
Рассмотрим теперь случай, когда некоторая дуга А ц принад лежит и прямому, и обратному пути. Пусть при этом дуга Ац для обоих путей имеет одно и то же направление. Тогда на шаге 2 потоки 1 -го продукта взаимно уничтожаются, а на шаге 3 поток
2-го продукта увеличивается на 2h единиц. При этом суммарный поток по дуге А ц не превосходит дуговой пропускной способно
сти Ьц, |
потому что h = min {x\f, Q,bbbf). В |
рассмотренном выше |
примере |
так обстоит дело с дугой А гг. |
|
Остается рассмотреть случай, когда дуга |
А ц в прямом пути |
|
имеет одно направление, а в обратном пути |
— противоположное. |
г) Здесь надо рассмотреть два случая |
Если x ji > h , то условие (*) |
выполняется в силу (5); если же х^ < К, то |
условие (*) выполняется в силу |
(8),— Прим, перев. |
|
236 ГЛ. 11. МНОГОПРОДУКТОВЫЕ п о т о к и
(Например, в рассмотренном выше примере такова дуга П47.) Тогда на шаге 2 поток 1-го продукта увеличивается на 2h, а на шаге 3 потоки 2-го продукта взаимно уничтожаются. При этом суммарный поток по дуге A tj не превосходит дуговой пропускной способности btj, потому что h = min (xbf, 0,5bbf).
Утверждение 1° доказано.
2°. Теперь докажем, что когда алгоритм заканчивается, то либо оказываются найденными потоки, удовлетворяющие задан ным ограничениям, либо выясняется, что заданные потоковые ограничения несовместны. (А если решается задача максимизации
/ ( 1 , 1 ') + |
/ ( 2 , |
2 '), то после окончания работы алгоритма оказы |
||||||||||||
вается найденной величина |
max |
[ /( 1 , |
1 ') + |
/ |
(2 , 2 ')].) |
|
|
|
||||||
Согласно описанию алгоритма, вычисления заканчиваются |
||||||||||||||
только |
тогда, |
когда |
построены |
потоки, |
не |
меньшие |
г ( 1 , |
1 ') |
||||||
и г (2 , 2 '), либо когда на шаге 2 |
/ (1 , |
1 ') = |
г (1 , 1 '), |
а / |
(2 , |
2 ') |
< |
|||||||
< г (2 , |
2 ') и при этом не существует двойного пути. |
|
|
|
|
|||||||||
Предположим, что |
пе существует обратного пути |
из А 2 |
в А 2'. |
|||||||||||
Тогда по |
лемме |
11.4 |
существует разрез {Х2Ь, Х2Ь), |
где N 2'(zX2b. |
||||||||||
Если для некоторой дуги Ац разреза (Х2Ь, |
Х2Ь) поток х ц ф О , |
|||||||||||||
то, как было выше доказано, |
А 4 £ X 2b и AV £ Х2Ь. Так |
как для |
||||||||||||
всех дуг |
рассматриваемого |
разреза |
х\} -\- xfj = Ъц, |
где |
A* £ Х2Ь |
|||||||||
А 7 С Хгь> то |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
/(!> |
1;) + /(2, |
2') = с (Х2ь, Хгь)- |
|
|
|
(9) |
Так как разрез (Х 2ь, Хгь) является множеством, разделяющим пары узлов (Alt Aj-) и (А2, А 2'), то должно выполняться
|
/(1,1') + |
/(2, |
2 ' ) < с ( Х 2Ь, Х 2Ь). |
(10) |
|
Из (9) и |
(10) следует, |
что в |
рассматриваемом случае |
получена |
|
величина |
max [ /( 1 , 1 ') |
+ |
/ ( 2 , |
2 ')]. |
|
Следовательно, величину / (2, 2') в этом случае можно увели чить, только уменьшая /(1, 1'). Значит, заданные потоковые
ограничения |
являются несовместными. |
|
|
||
Если же |
для каждой дуги разреза (Х2ь, |
Х 2ь) поток x \ j = О, |
|||
т. е. |
на каждой дуге xlj = bij, |
где N t ^ X 2b и N j ^ X 2b, то |
построен |
||
max/(2, 2'). |
Следовательно, |
величину / (2, 2' ) |
невозможно увели |
||
чить, |
даже |
если уменьшить величину /(1, 1'). Значит, |
и в этом |
случае заданные потоковые ограничения являются |
несовместными. |
|||||
(При |
нахождении m a x [ / ( l , |
1') + |
/ |
(2, 2')] |
на шаге 0 |
мы |
построили максимальный поток |
/ (1, |
1') |
= с ( 1 , |
1'). При даль |
||
нейшей |
работе алгоритма величина / (1, |
1') не изменялась. |
Сле |
довательно, величина / ( 1 , 1 ') не может быть увеличена, даже
если |
уменьшить |
/ (2, 2'). Таким образом, получена величина |
max |
[ /( 1 , 1 ') + / |
( 2 , 2 ')].) |
11.1. ДВУХПРОДУКТОВЫЕ п о т о к и |
237 |
||
Случай, когда не существует |
прямого пути (т. е. |
существует |
|
разрез (X2f, X 2f), где |
6 X2f), |
разбирается аналогично. Следо |
|
вательно, утверждение |
2 ° доказано1). |
|
3°. Сформулируем доказываемое утверждение в виде теоремы.
Теорема 11.2 (о четной целочисленности [106]). Если величины
г(1 , 1 '), г (2 , 2 '), btj — четные числа, причем r ( 1 , 1 ') и г (2, 2 ')
удовлетворяют |
условиям теоремы |
1 1 .1 |
, то |
|
существуют |
потоки |
||||||
/ (1 , 1 ') = г (1 , |
1 ') |
и / ( 2 , |
2 ') |
= |
г (2, |
2'), |
|
такие, |
что |
все |
x\j |
|
и х\j — целые числа. |
|
1') |
+ |
/ (2, |
2')], |
то достаточно |
потре |
|||||
(Если ищется max [/(1, |
||||||||||||
бовать, чтобы только величины Ъц были четными числами.) |
||||||||||||
Д оказательство. |
На шаге 0, |
используя |
алгоритм |
расстановки |
||||||||
пометок, можно построить поток |
/ |
(1 |
, Т) — г (1 , 1 ') |
так, |
чтобы |
|||||||
все x\j были четными числами. |
(Это |
можно |
сделать, так как Ьц |
|||||||||
и r(l, Т) — четные.) |
Отсюда следует, |
что все |
величины Ъц — |
\х\}\ |
будут четными числами после выполнения шага 0. Так как вели чина г (2 , 2 ') —четное число, то и величины x\j после выполнения шага 1 будут четными.
Когда мы доказывали, что дуговые потоки не превосходят дуговых пропускных способностей, было установлено, что на
каждой дуге |
А ц потоки либо увеличиваются, либо уменьшаются |
на величину |
h. Так как по определению |
h —min (xbf, 0,5bbf),
то h может оказаться нецелым числом только тогда, когда bbf—
нечетное (поскольку величины x\j, |
x\j, Ь'ц сначала все были чет |
|||||||
ными). После выполнения шага 1 |
в первый раз величина |
bbf = |
||||||
= min (bij ± x\j ± x\j) = 0 (mod 2 ). |
|
поток 1-го продукта увели |
||||||
Рассмотрим дугу |
Atj, |
в которой |
||||||
чивается |
на h единиц, а поток |
2 -го |
продукта |
уменьшается |
на h |
|||
единиц. |
Рассмотрим величину bij + |
| xjj -|- h | ± |
| х\j —h |. |
|
||||
Если |
b i j — | x \ j | + x f j — четное |
число, то Ъц — \ х \ } \ - h\ ± | Х Ь — |
||||||
— h\ — также четное независимо |
от |
того, четно h или нет. |
|
|||||
Рассмотрим теперь дугу Ац, |
в которой либо поток 1-го про |
|||||||
дукта, либо поток 2-го продукта |
увеличиваетсяч на 2h. |
Здесь |
||||||
также величина Ъц ± |
| xt) + h | + |
|
| хц — h | |
будет выражаться |
||||
четным |
числом. |
|
|
|
|
|
|
|
Таким образом, после выполнения шага 3 и перед выполнением |
||||||||
шага 1 |
каждая дуга |
имеет четную |
пропускную способность для |
|||||
потока 2 -го продукта. |
|
|
|
|
|
|
|
|
J) Из приведенного доказательства видно, что при. выполнении алго |
||||||||
ритма шаг 1 можно опустить, |
так как нигде не используется, что поток х2^ |
должен быть максимальным.— Прим, перев.
238 |
ГЛ. 11. МНОГОПРОДУКТОВЫЕ п о т о к и |
|
После шага 1, который увеличивает или уменьшает x\j на чет |
ное число единиц, величина Ъц ± x\j + x\j по-прежнему останется четной. Таким образом, ЪЬ} не может быть нечетным числом, a k не может быть нецелым. Следовательно, x\j и x\j остаются целыми
в ходе всего алгоритма.ш |
|
|
заметим, что вели |
||
4°. |
Чтобы доказать конечность алгоритма, |
||||
чина / |
(2 , 2 ') |
каждый раз увеличивается по крайней мере на 2 еди |
|||
ницы (на 2xlf |
или на Ьы). Величина / (1, |
1') |
сохраняет свое зна |
||
чение, |
полученное на шаге 0. Так как / (2, |
2') ограничена сверху |
|||
величиной min [с (2 , 2 '), с ( 1 , 2 ; 1 ', |
2 ') — / ( 1 , 1 ')], то алгоритм |
||||
конечен, щ |
|
N 2 или |
— N 2>, является |
||
Заметим, что случай, когда N i = |
частным случаем, при котором выполняются условия теоремы 1 1 .1 .
Действительно, этот частный случай может быть представлен с помощью сети, в которой &12 или bi2- — произвольно большое
число.
Обсуждение
Широкое распространение получила следующая гипотеза. Мно жество то-продуктовых потоков в неориентированной сети является допустимым тогда, когда выполняются следующие 2т — 1 нера
венств:
|
/ (к, |
к ')^ с ( к , |
к') |
|
( ( 7) неравенств) , |
|
|||||
/(*, *') + |
/(/> |
|
j; V, f ) |
|
( ( “ ) |
неравенств) |
, |
|
|||
m |
|
|
|
|
|
|
|
|
|
|
|
2 |
f(k, |
i ' ) < e ( l . |
1', . .., |
m') |
( C |
) |
неравенств) . |
|
|||
fe=i |
|
|
|
|
|
|
|
|
|
|
|
Контрпример для 4 продуктов, опровергающий эту гипотезу, |
|||||||||||
впервые |
был найден |
Фордом (личное сообщение). |
Пример |
для |
|||||||
|
|
|
3 продуктов |
иллюстрируется |
на |
||||||
|
|
|
рис. 11.7; как показано в работе |
||||||||
|
|
|
[106], условия/(1 , 1 ') = 4 , / ( 2 , 2 ') = |
||||||||
|
|
|
= 2 , / |
(3, |
3') |
= |
1 |
являются недо |
|||
|
|
|
пустимыми. |
что |
рассмотренный |
||||||
|
|
|
Заметим, |
||||||||
|
|
|
выше |
алгоритм |
дает |
возможность |
|||||
|
|
|
получить |
|
одновременно |
max |
|||||
|
|
|
[ /( 1 , 1 ') + |
/ |
(2 , 2 ')] и max / ( 1 |
, 1 |
'), |
||||
|
|
|
т. е. с помощью этого алгоритма |
||||||||
|
|
|
можно |
найти |
max |
[oti/ (1 , 1 ') |
+ |
||||
|
|
|
+ а 2/ |
(2 , 2 ')], где а! |
> а 2 > |
0 . |
|
11.2. М Н О ГО П РО ДУ К ТО В Ы Е потоки |
239 |
11.2. Многопродуктовые потоки (Форд и Фалкерсон [6 6 ],
Томлин [186])
Прежде чем приступить к изучению этого параграфа, читателю рекомендуется перечитать первые 5 абзацев § 11.1.
Рассмотрим сначала задачу о максимальном многопродуктовом потоке. Пусть в сети для каждого продукта задан источник и сток. Сеть содержит т дуг, заданы их пропускные способности blt б2, . . ., Ът. Для каждого продукта в сети имеется несколько цепей, ведущих из источника в сток. Требуется пропустить поток каждого продукта по цепям таким образом, чтобы не были пре вышены пропускные способности дуг и сумма величин потоков по всем цепям была бы максимальна.
Произвольная цепь в сети может быть представлена ш-мерным |
||
вектором, i-я |
компонента которого равна 1 , |
если дуга i входит |
в эту цепь, и |
равна 0 в противном случае. |
Определим матрицу |
инциденций дуги-цепи |
А = [ац\ следующим образом: |
1 , |
если дуга i входит в цепь |
a ij — {О |
в противном случае. |
Обозначим через Xj величину потока, протекающего по цепи /. Тогда задача максимизации суммы величин всех цепных потоков примет вид
максимизировать 2 xi j
при условиях |
|
'Zai]xj + si =^bi (г = 1, 2, . . ., т), |
(1) |
j |
|
где S; — слабые переменные.
Заметим, что при такой формулировке задачи матрица А может иметь миллионы столбцов, где всевозможным цепям каж дого из продуктов соответствуют свои столбцы. К счастью, как будет показано ниже, для того, чтобы решить задачу (1 ), нам понадобится запоминать только матрицу размера (т + 1 ) X
X (т + 1). В ограничениях (1) многопродуктовый характер зада чи представлен в неявном виде, он учитывается при построении матрицы А 1). В случае когда имеется единственный продукт, задача (1 ) превращается в обычную задачу о максимальном потоке.
Предположим, что имеется т столбцов, образующих начальный базис задачи (1). Тогда можно разрешить (1) относительно этого)*
*) Имеется в виду, что в матрице А каждая цепь фигурирует столько раз, сколько различных продуктов может по ней перевозиться.— Прим,
перев.
240 |
ГЛ . И . МНОГОПРОДУКТОВЫЕ п о т о к и |
|
базиса |
и найти вектор цен л: = (я^ |
я 2, . . ята), где каждый |
элемент |
соответствует своей строке. |
Заметим, что относительная |
оценка Cj каждого небазисного столбца а7определяется выраже нием Cj = Cj — яа;. Если все Cj ^ 0, то текущий базис является оптимальным. Если некоторый cj > 0, то соответствующий этому cj столбец aj должен быть введен в базис. Оказывается, что задача нахождения Cj несложна. Будем интерпретировать я г как длину дуги г. Тогда величина яа7будет равна длине той цепи, которой соответствует столбец aj. Заметим, что Cj — + 1 для всех столбцов. При вычислениях с помощью симплекс-метода вектор я появляет ся в нулевой строке под слабыми переменными х). Оказывается, что нам не нужно запоминать все столбцы матрицы А, соответ ствующие всевозможным цепям каждого продукта. На каждой стадии вычислений можно просто использовать модифицированный
симплекс-метод и запоминать матрицу размера (т + 1 ) |
X (т + 1 ). |
||
Если какая-то из |
цен л г |
окажется отрицательной, |
то столбец, |
стоящий под этой |
ценой |
я г в симплексной таблице, |
выбирается |
в качестве ведущего. Если все лг окажутся неотрицательными, то будем интерпретировать я г как длины дуг и искать для каждо го продукта кратчайшую цепь, ведущую из источника в сток. Если кратчайшие цепи для всех продуктов окажутся длины 1 или боль
ше, то это значит, что текущий базис является оптимальным 2)* . Заметим, что перед введением в таблицу каждый столбец должен быть скорректирован, как это делается в § 7.2.
Перейдем теперь к многопродуктовой задаче о допустимости. Для каждого продукта задана величина потока, и требуется опре делить, могут ли быть эти величины одновременно реализованы в заданной сети. Например, пусть задана сеть с ограничениями
на пропускные |
способности дуг, |
представленная на рис. 1 1 .8 . |
|
Требования |
к |
четырехпродуктовому потоку представлены на |
|
рис. 11.9 (т. |
е. |
нужно пропустить |
2 единицы 1-го продукта из N± |
в N 2, три единицы 2-го продукта — из N 2 в А 4 и т. д.). Требуется
определить, может ли быть пропущен этот четырехпродуктовый поток в заданной сети так, чтобы пропускные способности дуг не были бы превышены.
Рассмотрим так называемые допустимые сети, которые удовле творяют заданным требованиям к потоку. Каждая такая сеть получается следующим образом. Для каждого продукта находят некоторую цепь из его источника в сток, затем каждой дуге этой
цепи приписывают пропускную способность, |
равную заданному |
|
:) В |
нулевой строке под слабыми переменными |
появляется вектор я, |
а не —я |
из-за того, что мы используем —св и — |
в исходной таблице. |
2) Если длина некоторой кратчайшей цепи окажется меньше 1, то стол бец, соответствующий этой цепи, должен быть введен в базис.— Прим,
перев.
11.2. МНОГОПРОДУКТОВЫЕ потоки |
241 |
требованию к потоку этого продукта. Сеть, получаемую в резуль тате «наложения» друг на друга цепей, соответствующих всем заданным требованиям к потоку, назовем допустимой. Можно считать, что все допустимые сети имеют те же дуги и узлы, что и исходная сеть, но разные дуговые пропускные способности. (Некоторые из пропускных способностей дуг могут быть равны О,
Р и с . |
11.8. Дуговые |
Р и с . 11.9. |
Требова |
пропускные способности. |
ния к |
сети. |
но эти дуги не выбрасываются, чтобы все допустимые сети имели одинаковые дуги.) Может существовать несколько миллионов допустимых сетей, каждая из которых удовлетворяет заданным требованиям к многопродуктовому потоку.
Произвольную допустимую сеть можно представить то-мерным вектором &j = [а,!], а2ц • • ■> «м;!, где а17- — пропускная спо собность 1 -й дуги, а2;- — пропускная способность 2 -й дуги и т. д.
Тогда все допустимые сети могут быть представлены в виде матри
цы |
содержащей т строк. (Например, для сети на рис. 11.8 |
|
матрица [atj] будет иметь 5 |
строк.) |
|
|
Будем называть линейной |
выпуклой комбинацией допустимых |
сетей линейную выпуклую комбинацию векторов aj. Любая линейная выпуклая комбинация допустимых сетей также удовле творяет заданным требованиям к потоку. Предлагаемый ниже подход позволяет определить, содержится ли в исходной сети такая сеть, которая является линейной выпуклой комбинацией
допустимых |
сетей. |
|
|
|
|
|
Если исходная сеть, представимая в виде [bj, b2, . . ., Ьт], |
||||||
содержит сеть вида [Ъ[, |
Ь', |
. . ., |
Ъ'т], где |
Ъ\ ^ bt |
(i = 1, 2, . . . |
|
. . ., то), а столбец [Ъ[, |
. |
. ., Ът’ ] является линейной выпуклой |
||||
комбинацией столбцов матрицы |
то эта исходная сеть удовле |
|||||
творяет заданным требованиям к потоку. |
|
|
||||
Обозначим через xj |
коэффициент при |
столбце |
в линейной |
|||
комбинации |
столбцов |
матрицы |
[ац\. |
Тогда |
многопродукто |
вую задачу о допустимости можно сформулировать следующим образом:
максимизировать 0 = 2 Xj
16 т. Ху
242 |
Г Л . 11. |
М Н О ГО П РО ДУ К ТО В Ы Е |
п о т о к и |
при условиях |
|
|
|
|
yj atjXj |
L Si = bi (i = 1 , 2 , |
. . m), |
(1 )
si^ z 0.
Если оптимальное значение 0 ^ 1 , это значит, что в исходной сети все требования к многопродуктовому потоку выполняются.
Если оптимальное значение 0 = 1, то исходная сеть является допустимой. При такой формулировке матрица [а,ц] может содер жать миллионы столбцов, но, к счастью, нет необходимости все их выписывать.
Если у нас имеется т столбцов, являющихся начальным бази сом задачи (2 ), то с помощью симплекс-метода можно найти вектор
цен я. С помощью этого вектора я можно, как это делалось в моди фицированном симплекс-методе, найти столбец, который увели чивает значение целевой функции. Так как относительная оценка cj столбца aj определяется выражением Cj = Cj — яа;-, а с} = 1
для всех столбцов, то нам надо искать минимальную из величин
яаj. Если при |
минимальном значении яа;- получится, что Cj |
= |
= Cj — яа7- ^ |
0 , то текущее решение будет оптимальным. |
|
При вычислениях мы запоминаем матрицу размера (т + 1) |
X |
X (т + 1 ) и интерпретируем величину я г как стоимость дуги i
единичной пропускной способности. Когда в симплексной таблице получаются все я г ^ 0 , мы пытаемся ввести в базис столбец,
который представляет самую дешевую допустимую сеть 1). Если получается 0 ^ 1 , значит, все требования к многопродуктовому
потоку выполняются. Если получается, что 0 < 1, а яа7- ^ 1 для всех у, то исходная сеть не содержит линейной выпуклой ком бинации допустимых сетей 2*).
Рассмотрим пример, иллюстрирующий решение многопродук товой задачи о допустимости. Пусть в сети на рис. 11.8 числа около дуг указывают их пропускные способности, а требования к четырехпродуктовому потоку в этой сети представлены на на рис. 11.9. Требуется определить, можно ли этот четырехпро дуктовый поток пропустить в заданной сети.
В симплексной таблице 11.1 представлены дуговые пропускные
способности |
исходной |
сети (как |
значения слабых |
переменных); |
||
0 в этой таблице равно 0. Здесь вектор b = |
[bit b2, |
Ь3, Ь4, 65] = |
||||
= [9/ 2, 5/2,* |
3, 4, 5/2]. |
Заметим, |
что в табл. |
11.1 |
имеется одно |
|
х) |
См. упр. 2 к гл. |
9 и работу |
[90].— Прим, |
перев. |
|
|
2) |
Следовательно, в исходной сети не могут быть реализованы одновре |
менно заданные требования к потоку. Действительно, нетрудно показать, что если в некоторой сети одновременно реализованы заданные требования к потоку, то эта сеть представима в виде линейной выпуклой комбинации допустимых сетей.— Прим, перев.