
книги из ГПНТБ / Ху, Т. Целочисленное программирование и потоки в сетях
.pdf12.4. r-РАЗДЕЛЯЮЩЕЕ МНОЖЕСТВО |
283 |
Задача П лато заключается в нахождении поверхности наимень шей площади, ограниченной заданной замкнутой кривой Жор дана Г. С этой задачей связана другая: найти поверхность наи меньшей площади, граница (или часть границы) которой заранее точно не определена, а лежит в заданной трехмерной трубке. Можно определить весовую функцию w в каждой точке простран ства и тогда рассматривать еще одну задачу: найти поверхность, обладающую минимальным весом и ограниченную заданной зам кнутой кривой Жордана Г. (Здесь под весом поверхности пони мается интеграл от функции w по этой поверхности.)
Рассмотрим, например, задачу нахождения поверхности, обла дающей минимальным весом и свободной границей. Пусть Р — поверхность, топологически эквивалентная сфере. Открытую область внутри Р обозначим буквой й, й (J Р обозначим буквой
R. На поверхности Р выделим две подповерхностп: Г8 и 1\. Опре
делим весовую функцию на й; за пределами й весовую функцию считаем равной нулю. Будем искать поверхность с минимальным весом, разделяющую Г., и Г/. Если Р — Г8 — Г( есть некоторая
кривая Г, а весовая функция является константой на й , то задача нахождения разделяющей поверхности минимального веса пре вращается в задачу Плато. В соответствии с нашим сетевым подходом для решения задачи пространство й 3 можно аппроксими
ровать конечной сетью, найти поверхность с минимальным весом толщины г, а затем г надо устремить к нулю.
ГЛАВА 13
ЦИКЛИЧЕСКИЙ АЛГОРИТМ ЦЕЛОЧИСЛЕННОГО ПРОГРАММИРОВАНИЯ
13.1. Введение (Гомори [79])
Рассмотрим следующую задачу линейного программирования: максимизировать
Xq ~ $ qq |
$ol$ -’l |
^ 0 2 ^ 2 |
* • • |
O'Qn'X'm |
|
при условии |
|
|
|
|
|
$'71+1— |
$ п + 1 , О |
^77+Ь 1^1 |
^тг+1, 2$"2 |
• • • |
& п + 1 , п Х ц , |
%п+т ^ |
&п+т, 0 |
&п+т, 1^-1 |
ttn+m, 2*^2 |
|
(1) |
• 8 • |
п ^ т |
||||
x j > 0 |
( /= 1 , |
н + 1 , . . . , / г + т ). |
. |
Заметим, что $:„+!, . . хп+т — слабые переменные, а |
.х1; . . . |
хп — исходные переменные задачи (1). Если наряду |
с огра |
ничениями (1 ) потребовать, чтобы все xj (j = 1 , . . ., т) были
целыми, то задача будет называться задачей целочисленного про граммирования. Существует большое количество задач, особенно комбинаторных, которые можно сформулировать как задачи цело численного программирования (см. [34], [6 ] и § 15.3).
Ограничения (1) определяют выпуклую область O A B C D в ге-мер-
ном пространстве, как показано на рис. 13.1. Узлы целочисленной решетки на рис. 13.1 изображены точками. Такие точки, рас положенные внутри области O A B C D , являются допустимыми
решениями задачи целочисленного программирования. Оптималь ные решения задачи линейного программирования всегда распола гаются на границе области решений. В данном случае граничные точки не являются даже допустимыми решениями, поскольку ни одна из них не целочисленна. Предположим, что область допу стимых решений сужена до. выпуклой оболочки допустимых целых точек внутри допустимой области. На рис. 13.1 эта выпук лая оболочка показана затененной областью O E F G II. Эту зате
ненную область можно рассматривать как область допустимых решений некоторой другой задачи линейного программирования. Действительно, если к задаче линейного программирования, опре деляющей допустимую область O A B C D , добавить ограничение
13.1. ВВЕДЕНИЕ |
285 |
типа R R ', как показано на рис. 13.1, то вновь полученная задача будет иметь OEFGH в качестве области допустимых решений. Такая вновь полученная область обладает -двумя важными свой ствами: во-первых, она содержит все допустимые целочисленные' точки исходной задачи линейного программирования (поскольку она является выпуклой оболочкой этих точек), во-вторых, все крайние точки новой области — целочисленны. Поэтому любое базисное оптимальное решение модифицированной задачи линей ного программирования имеет своими компонентами целые числа и является оптимальным ре шением исходной задачи цело численного программирования.
Именно алгоритмы цело численного программирова ния, которые будут описаны ниже, реализуют методы си стематического введения до полнительных ограничений с целью сведения исходной до пустимой области к выпуклой оболочке ее допустимых цело численных точек.
Как только это будет сде лано, можно решать моди фицированную задачу линей ного лрограммирования лю бым обычным методом, и полученное базисное опти
мальное решение автоматически будет целочисленным. Представ ленный ниже целочисленный алгоритм обладает следующими свойствами: 1 ) все дополнительные ограничения сохраняют допустимые точки исходной целочисленной задачи; 2 ) за конеч
ное число шагов создается достаточное количество дополнитель ных ограничений для того, чтобы оптимальное решение моди фицированной задачи было целочисленным; 3) дополнительные ограничения (гиперплоскости) проходят по крайней мере через одну целочисленную точку, хотя и не обязательно находящуюся внутри выпуклой оболочки; 4) каждое новое ограничение сокра щает область допустимых решений исходной задачи целочислен ного программирования. Следует подчеркнуть, что оптимальное решение исходной задачи может быть получено прежде, чем допустимая область сократится до размеров выпуклой оболочки. К тому же, поскольку оптимальное целочисленное решение определяется пересечением п гиперплоскостей, таких гиперпло скостей существует не более, чем это необходимо; некоторые из них могут быть ограничениями исходной задачи.
290 |
ГЛ. 13. ЦИКЛИЧЕСКИЙ |
АЛГОРИТМ |
||
Если s-й столбец является ведущим, то |
||||
|
1 + 1 |
1 |
1 |
/ 00 |
|
#оо |
= #оо— #о |
|
7os
или
aot^aoo — /оо, поскольку a Qs> f 0s,
или
i+i ^ *
«оо -<геоо-
Другими словами, а00 уменьшится по крайней мере до ближайшего
целого. Следовательно, а00 не может уменьшаться на е (t) при
ОО
2 е (t) < с. Если а00 каждый раз уменьшается до ближайшего i=i
целого или на целую величину, то после конечного числа шагов оно станет меньше любого наперед заданного М (М — предпола гаемая нижняя граница). Если алгоритм бесконечен, то а00 должно
оставаться некоторым фиксированным целым числом для t > 10. Предположим, что это произошло.
Тогда рассмотрим а10. Так же как и a00, а10 не может оставаться нецелым значением. Если бы это было так, то, поскольку а00 —
целое, первая строка стала бы производящей и после введения отсечения Гомори и итерации симплекс-метода мы получили бы
|
|
<+1 |
< |
t |
А 0 |
» |
|
|
#10 —#10 |
#1s |
f |
||
|
|
|
|
|
hs |
|
где 0 < / i o < l |
и 0 < / i s< l . |
Здесь a\s— неотрицательное число, |
||||
большее f\s. |
(Если а\$—отрицательно |
и |
а\ —лексикографически |
|||
положителен, |
то a*s положительно и, следовательно, а' 0 не может |
|||||
не измениться.) |
Отсюда |
|
|
|
|
|
|
|
1+1 ^ - 1 |
|
Л |
г 1 1 |
|
|
|
аю <aio —/io = laioJi |
т. е. ai0 уменьшается по крайней мере до ближайшего целого. Поэтому а10 либо будет оставаться некоторым фиксированным
целым числом, либо после конечного числа шагов станет отрица тельным. Если а10 станет отрицательным, то первая строка будет
ведущей и
i+i |
1 |
Д10 |
1 |
сео = ао |
— |
as. |
|
|
|
«is |
|
Из того, что as > 0 и als < |
0, |
следует, что aos > 0, т. е. зна |
чение а0о строго уменьшится, что противоречит допущению о неиз
менности значения а00. Если aXj |
^ 0 для всех / = |
1, . . ., s, . . . |
|
. . ., п, |
то задача не имеет допустимых решений. |
(Заметьте, что |
|
ведущий |
элемент должен быть |
отрицательным.) |
|
292 ГЛ . 13. Ц И К Л И Ч Е С К И Й А ЛГО РИ ТМ
при условиях
|
|
|
Зж1 + 2 ж2 |
< 1 0 , |
|
|
|||
|
|
|
|
Xi + 4 г2 |
< |
1 1 , |
|
|
|
|
|
|
?>xv+ За:2 + х3< |
13, |
|
|
|||
|
|
|
|
а?1, х2, х3> 0 (целые). |
|
|
|||
Вводя слабые переменные я4, х5, хв, получаем: |
|
|
|||||||
|
1 |
— |
x i |
— |
х 2 |
— * 3 |
|
|
|
х о |
0 |
— 4 |
— 5 |
— 1 |
|
|
|
||
X l |
0 |
- |
1 |
|
0 |
0 |
D = 1 |
|
|
х 2 |
0 |
|
0 |
— 1 |
0 |
|
|
||
Х 3 |
0 |
|
0 |
|
0 |
— 1 |
|
|
|
Х к |
10 |
|
3 |
|
2 |
0 |
|
|
|
Х ц |
И |
|
1 |
|
4 |
0 |
|
|
|
х в |
13 |
|
3 |
|
3 |
1 |
|
|
|
|
1 |
— |
X i |
— |
X i |
— х з |
|
|
|
х 0 |
5 5 /4 |
— 1 1 /4 |
|
5 /4 |
- 1 |
|
|
|
|
Х\ |
0 |
— 1 |
0 |
0 |
-1 |
0 0 |
0 |
||
х г |
1 1 /4 |
|
1 /4 |
|
1 /4 |
0 |
|||
х 3 |
0 |
0 |
0 |
- 1 |
0 —1 0 0 |
||||
я 4 |
18/4 |
10/ 4 * |
- |
2 /4 |
0 |
11 |
1 4 |
0 |
|
х5 |
0 |
0 |
- 1 |
|
0 |
0 |
0 0 - 1 |
||
Х в |
19 /4 |
|
9 /4 |
- |
3 /4 |
1 |
|
|
|
|
1 |
— X 4 |
— |
х 5 |
— х 3 |
|
|
|
|
|
187/10 |
11/10 |
— 7 /1 0 |
— 1 |
£ > = 4 x 1 0 /4 = 10 |
|
|||
Х 1 |
1 8 /10 |
|
4 /1 0 |
— 2 /1 0 |
0 |
|
|
|
|
х 2 |
2 3 /10 |
— 1/1 0 |
3 /1 0 |
0 |
|
|
|
||
Х 3 |
0 |
0 |
0 |
— 1 |
|
|
|
||
x k |
0 |
— 1 |
0 |
0 |
|
|
|
||
Х Ъ |
0 |
0 |
— 1 |
0 |
|
|
|
||
Х в |
7/10 |
— 9/1 0 |
- 3/1 0 |
1 * |
|
|
|
Ведущий столбец
|
|
|
1 |
— хв |
£)= 10 X 1 = 1 0 |
|
|
1 |
~Xk |
— Хь |
|||
х 0 |
194/10 |
2/10 |
4/10 |
1 |
Группа неравенств F |
|
Xi |
18/10 |
4/10 |
—2/10 |
0 |
Пр,и„о„»-ТО<0’ 0' 0'°1<5' 5’ 5’ 0> |
|
*2 |
23/10 |
—1/10 |
3/10 |
0 |
||
х3 |
7/10 |
—9/10 |
—3/10 |
1 |
<------------(7,1, 7, 0) (2, 6, 2, 0) |
|
*4 |
0 |
- 1 |
0 |
0 |
щая строка |
(4j 2i 4 , о) (9, 7, 9, 0) |
Xi |
0 |
0 |
- 1 |
0 |
|
(1, 3, 1, 0) (6, 8, 6, 0) |
Xi |
0 |
0 |
0 |
—1 |
|
(8, 4, 8, 0) (3, 9, 3, 0) |
ч |
-7 /1 0 |
—1/10 |
—7/10 * |
0 |
Например: |
|
|
|
|
|
|
(7,1,7,0) + (4 , 2,4, 0) = |
|
|
|
|
|
|
= |
(1,3,10) (mod 10) |