Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 231
Скачиваний: 0
14.1. |
ПОЛНОСТЬЮ |
ЦЕЛОЧИСЛЕННЫЙ АЛГОРИТМ |
303 |
Ш а г 2. Выбрать К > |
0 (правило выбора будет описано даль |
||
ше) и написать |
внизу таблицы дополнительную строку |
|
Эта строка выбирается в качестве ведущей.
Ш а г 3. Провести шаг двойственного симплекс-метода, вычерк нуть дополнительную строку и вернуться к шагу 1 .
Доказательство конечности. Доказательство конечности про водится в предположении, что существует нижняя граница хп целевой функции х0. Использование двойственного симплексметода гарантирует выполнение условия
Если а00 уменьшается, то уменьшается на целое число, поскольку
все числа остаются целыми, и, следовательно, через конечное
число шагов а00 станет меньше х0. Если алгоритм |
бесконечен, |
то п00 должно оставаться неизменным для всех t > t0. |
Рассмотрим |
тогда компоненту а10 столбца а„. Если а10 уменьшается, то на целое число. Когда а10 становится отрицательным, первая строка
должна быть выбрана в качестве производящей. Если а1;- ^ 0 для всех j, то задача неразрешима. Если же a{j <С 0 для некоторого ;, то в дополнительной строке
П
нее гарантируется правилом выбора Л.) Итерация с выбранной ведущей строкой строго увеличит ai0. Поскольку cc[) > a j + 1, должно уменьшиться, что противоречит предположению о неизмен
ности б 00 для |
t > |
t0. |
Поэтому а10 (если алгоритм бесконечен) |
|||
должно стать постоянным для |
всех £><i, |
где tx> ta. Аналогич |
||||
ные рассуждения можно провести и для |
второй, третьей и т. д. |
|||||
компонент вектора |
а 0- |
Таким |
образом, |
после |
конечного числа |
|
шагов все а;0 (г = |
1 , |
.. ., |
п + т) станут неотрицательными целыми. н |
|||
Теперь опишем правило выбора К в шаге 2 полностью цело |
||||||
численного алгоритма. |
Пусть |
производящая |
строка имеет вид |
х= а0+ 2 aJ( —xi)
идополнительная строка
14.1. ПОЛНОСТЬЮ ЦЕЛОЧИСЛЕННЫЙ АЛГОРИТМ |
305 |
|
Ш а г 4. Положить X — max Xj для |
avj <С 0. |
|
з |
позволяет сделать веду |
|
Правило выбора X, описанное выше, |
щий элемент равным —1 , при этом будет сохраняться двойствен
ная допустимость таблицы и в то же время нулевой столбец будет максимально лексикографически уменьшаться. Следует заметить, что отсечение Гомори не является самым «сильным» возможным неравенством. Оно также может быть «сильнее» или «слабее» самого производящего неравенства. Например, пусть производя
щей |
строкой |
будет |
|
|
|
|
|
|
|
|
|
|
|
х = —4 — 3 (—ц ) |
- |
5 { - х 2). |
|
(12) |
|||
Если |
использовать |
X = |
2, получим |
отсечение |
|
|
||||
|
|
|
s = |
—2 — 2 (—zj) - |
3 ( ~ х 2) > |
0. |
(13) |
|||
Для X = |
3 имеем |
|
|
|
|
|
|
|
||
|
|
|
s = |
<-т-2 — 1 (—а*) - |
2 |
(—х2) |
> |
0. |
(14) |
|
Для X = |
4 |
|
|
|
|
|
|
|
|
|
|
|
. |
s = |
- 1 - |
l 7 - z j ) - |
2 |
( - х 2) |
> |
0. |
(15) |
Как видно, неравенство (14) сильнее, чем (12), (12) сильнее,
чем (13), а (13) сильнее, чем (15).
Другое замечание касается того, что если величина X, полу чаемая указанным выше способом, может быть увеличена так, чтобы [а0/А,] и [a,jlX] (aj > 0) оставались без изменения, то отсече
ние Гомори можно усилить, несмотря на то, что нулевой столбец уменьшится на ту же величину.
Выпишем производящую строку
X = d 0 + 2 |
d j { — X j ) + 2 а 'з ( —хз)‘ |
(16) |
а * < 0 |
а '. > 0 |
|
j |
о |
|
Чем больше величина X, тем меньше абсолютная величина коэффи циентов отсечения. Естественно, что мы хотели бы иметь абсо лютную величину [a„MJ большой, а абсолютные величины [а;-Ш — малыми. Если значение X (полученное по приведенному выше правилу) может быть увеличено так, чтобы значения [aj/X] и [а0М,]
не изменялись, то используется большее значение для X. Тем самым по возможности уменьшится абсолютная величина [а;/Х] для некоторых /, и отсечение станет сильнее.
Например, пусть целевая функция имеет вид
X q |
2 0 — х1 |
2 х 2 — Зх2 |
и производящая строка
х = —20'+ (—7) (—Xi) + (—8) (—х 2) + (—15) (—х 3) + 18 (—ж4).
20 Т. Ху
306 14. ПОЛНОСТЬЮ ЦЕЛОЧИСЛЕННЫЙ а л г о р и т м
Используя описанную выше процедуру выбора X, получим X — 7. Соответствующее отсечение
s = —3 + х4 + 2х2 + Зх3 — 2х4 ^ 0.
Если использовать X = 9 вместо' X = 7, получим отсечение s* = —3 + х4 + х2 + 2 х3 — 2х4 ^ 0 ,
являющееся более сильным (см. [214]).
Интересная особенность полностью целочисленного алгоритма состоит в том, что для его использования не обязательно требовать целочисленности всех аг^. Пусть задача целочисленного програм мирования имеет вид
максимизировать ,
|
|
|
П |
Хо = |
Поо |
2! |
|
•при условиях |
|
|
i=l |
|
|
|
|
п |
|
|
|
Xn+i — Q-iO 2 |
a U x i |
^ 0 0 = 1 > • • • i m ')i |
|
J= 1 |
0 = 1, |
||
X j > |
о |
где o-oo и Cj — целые, ai0 и atj могут быть произвольными действи тельными числами. Таблица 14.1 содержит в первых п + 1 строках только целые числа.
|
|
Таблица 14.1 |
|
||
|
|
—Я*1 |
Д?2 |
• • • |
хп |
^0 |
а оо |
си |
с2-> |
* ■*» |
сп |
X i |
0 |
— 1 |
|
|
|
х 2 |
0 |
|
— 1 |
|
|
хп |
6 |
|
|
’ |
- 1 |
хп+1 |
а 10 |
|
|
|
|
|
• |
|
a ij |
|
|
хп+т |
ато |
|
|
|
|
Выпишем произвольную производящую строку (опуская обо значение строки)
х == ао |
2 а1( —xj)" |
|
Вне зависимости от того, являются ли а0 и |
целыми или дей |
|
ствительными, коэффициенты |
отсечения |
|
-[* ]+ 2 [*](-*л