Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.10.2024

Просмотров: 188

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

19.2. А СИ М ПТОТИЧЕСКИЙ А ЛГОРИТМ

395

? (g) ^ t (g). Если точка t — неприводимая, то сумма

2 1' { g ) - g = g { f )

 

«ев

 

даст различные групповые элементы для разных t \

Однако имеет­

ся только | G | различных групповых элементов,

и, следователь­

но, неравенство (9) справедливо. (Заметим, что граница, получен­

ная для t (g),

справедлива

и для x N.) я

 

С ледствие

19.1. Если t

= (t (g)) — неприводимая точка мно­

гогранника Р (G, г],

g0), то

 

 

 

 

2

t(g)^.D — 1.

(10а)

 

 

«ев

 

 

Д оказательство.

Если произведение нескольких

целых поло­

жительных переменных фиксировано, то максимальное значение

суммы этих целочисленных переменных

 

достигается,

когда

все

переменные (кроме одной)

равны единице.

По теореме

19.6

 

 

 

 

 

II (1 - и ( £ ))< /<?| =

£>.

 

 

 

 

 

 

 

 

 

«ев

 

 

 

 

 

 

 

 

 

 

 

Поэтому

наибольшее значение

суммы

2

t (s)

достигается

при

t(g)

= 0

для всех g ф h. Полагая t (g)

«ев

 

 

 

 

 

=

0 для всех g ф п , имеем

( 1 + 0 ) . . . .

(1 + t (h)).

. . . • (1 +

0)

<

| G | =

D,

 

t. e.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 +

t (h) ^

D,

или t (h) ^ . D

— 1.

 

 

 

Тогда, очевидно,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

t (s) —(0 +

• • • +

1(h) +

. . . +

0 )^Z ) — 1

 

 

 

 

«ев

 

 

 

 

 

 

 

 

 

 

 

 

 

и утверждение (1 0 a) доказано.

н

 

 

 

 

 

 

и решением х

Установим связь между решением t задачи (7)

задачи (2а). Рассмотрим любое допустимое решение

x N задачи (5)

и допустимое решение t задачи (7), такие,

что

 

 

 

 

 

 

2

xj = t(g),

где

Jg =

{ j \ f (аД = g},

 

 

 

для

всех

#£т].

 

Поскольку

с* (g) =

min cf,

Jg =

{/ | / (аД =

g},

то имеем

 

 

 

 

 

 

j'eJg

 

 

 

 

 

 

 

П

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c*(g)t(g),

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

i=i

 

«ев

 

 

 

 

 

 

 

 


396 ГЛ. 19. л и н е й н о е и ц е л о ч и с л е н н о е п р о г р а м м и р о в а н и е

или

 

c%xN^ c * t.

(106)

Пусть t* —оптимальное решение задачи (7), а

х%—решение

задачи (5), полученное из t* согласно (86). Тогда

 

CjVXjV = c*t*

(1 1 )

и в силу (106) х%—оптимальное решение задачи (5).

Поскольку t*—оптимальное решение задачи (7), для произ­

вольного хл, получаем

 

 

c^XjV> c* t> c* t* .

 

(1 2 )

Обозначим значение целевой функции задачи (2в) через

Zj (b),

а свВ_1Ь через zL (Ь). Тогда

 

 

zi (b) = zL (b) —с^Хдг.

(13)

Поскольку х%[—оптимальное решение

задачи (5), то из

соот­

ношений (И ), (12) и (13) следует

 

 

свВ_1Ь —с%х% = свВ-1Ь —c*t* ^ z L (b) —c%xN = zj (b).

(14)

Следовательно, если x%—такое, что

хв = В-1 (Ь—N x^)^0,

то из соотношения (14) заключаем, что (хв, х%) —оптимальное решение (2в). Этот результат можно сформулировать в виде теоремы.

Теорема 19.7. Если t* — оптимальное решение задачи (7), то соответствующее ему решение х* = (В - 1 (Ь — Nxjy), х%) являет­ ся оптимальным решением задачи (2 в) при условии, что

В' 1 (Ь—N xft)>0.

Исследуем теперь, в каких случаях

xs = B 1b —B-Wxjv^O .

Мы знаем, что хв = В-1Ь является решением задачи линейного программирования. Вектор В _1Ь неотрицателен, если b принадле­ жит конусу, порожденному столбцами из В. Обозначим этот конус через Кв- Если b — Nxn также принадлежит конусу К в, то В -1 (b — Nx^) ^ 0. Геометрически, если точка b расположена достаточно далеко от любой граничной точки конуса К в и если длина вектора Nxw достаточно мала, то разность b — Nx^ также лежит внутри конуса Кв- Если через К в (d) обозначим подмноже­ ство точек конуса К в, удаленных в евклидовой метрике не меньше чем на d от любой граничной точки конуса К в, то К в — К в { 0 )


 

 

 

19.2.

А СИ М ПТОТИЧЕСКИЙ АЛГОРИТМ

 

397

и

из

условия

 

h £ K B (d), ||

Nx^ ||

< d

следует,

что

В -!(Ь — Nxjv) ^

0.

Рассмотрим длины небазисных вектор-столб­

цов

aj

(/ =

1 , . . . ,

п). Наибольшую из

них

обозначим

через

^тах, т.

е.

Zmax =

 

max

(y,a b )v2-

Тогда

 

 

 

 

 

 

 

з= 1 .......™ i

 

 

 

 

 

 

 

П

 

 

п

 

 

 

 

 

|| Nxjv || = ||

HjXj | |

Imax S

~ ^max 2

^ (^)^^max { E

!)•

 

 

 

j = l

 

 

i= 1

 

 

 

 

Следующая теорема дает достаточное условие неотрицательности xjg.

Теорема 19.8. Если

b £ K B ( l m a x ( D — 1)), где

D = |d etB |,

то (хЦз, х%) оптимальное

целочисленное решение

задачи (26),

где хв = В_1(Ъ —Nxfr), х% соответствует t* согласно (86 ), а t* —

оптимальное решение задачи (7).

Изобразим конус К в. На рис. 19.2

(а)

имееется полоса точек,

которые удалены не более чем на d

от граничных

точек конуса

К в. Заметим,

что данная точка Ь может

принадлежать полосе,

тогда как Я,Ь,

при Я, ^ 1 может лежать вне ее.

аналогичное

Можно указать и другое достаточное условие,

теореме

19.8.

Пусть lt — максимальный

элемент

в i-й строке

матрицы B _1 N.

Построим вектор-столбец 1

= Ui, . . .,

l t , . . .,

1т].

Тогда,

если

B_1b — ( D — 1) 1 ^ О,

оптимальное

решение

t*

задачи (7) соответствует оптимальному решению задачи целочис­ ленного программирования (2 а).

Пусть дана задача целочисленного программирования (2а). Рассмотрим матрицу А и вектор с как фиксированные, а правую часть — как вектор, который может принимать одно из значений Ь1, Ьа, . . ., bft. Для любой заданной правой части Ь* существует оптимальный базис В* соответствующей задачи линейного про­ граммирования. Можно разбить m-мерное пространство точек, удовлетворяющих ограничениям, на несколько конусов, соот­

ветствующих различным оптимальным базисам

Вг.

Это показано

на рис. 19.2 (б).

В является оптимальным для

правой

части Ь,

Если базис

а Ь' — другая

правая часть, для которой В -1Ь'

> 0 ,

то В —

оптимальный базис и для Ь'. Теорема 19.8 показывает, что конус К в имеет полосу фиксированной ширины Zmax ( | det В | — 1).

Если b и Ь' — точки, не принадлежащие полосе, то оптимальное решение задачи (2 а) находится по оптимальному решению зада­

чи (7). Пусть оптимальное решение задачи (2а) при правых частях

b и Ь'

есть х* (Ь) и х* (Ь') соответственно. Тогда

х*(Ь) =

(х£(Ь), хдг(Ь)) = (В_1Ь, 0) + ( - В - В Д ( Ь ) , х&(Ь)),

х*(Ь') =

(хМЬ'), xjv(b')) = (B_1 b', 0 ) + ( —B_1Nx]y (b'), х% ( Ъ' ) ) .


398 ГЛ . 19. Л И Н Е Й Н О Е И Ц Е Л О Ч И С Л Е Н Н О Е ПРОГРАМ М ИРОВАН ИЕ

Заметим, что мы разбили решение на две части. Первая часть соответствует решению задачи линейного программирования, вто­ рая часть представляет собой поправку, необходимую для того, чтобы сделать хв целочисленным. Следует подчеркнуть, что получается из оптимального решения t* задачи (7), которое является оптимальной вершиной многогранника Р (G, ц, g0). Вместе с оптимальным базисом В определены также G и т). Но t* одинаково для двух правых частей, если они отображаются в один

Ри с . 19.2.

итот же элемент g0. Поэтому, если две правые части Ь и Ь' отли­ чаются на целочисленную комбинацию столбцов из В, то их обра­ зы при отображении / = <£В-1 одинаковы и вторые части в соот­ ношениях (15) одинаковы. Разность между х* (Ь) и х* (Ь') тогда равна В -1 (Ь — Ь').

Так как существует в точности | G | возможных элементов группы G для оптимального базиса В, то существует | G | воз­ можных элементов g0, и в (15) может быть не более [ G | различных вторых частей. Можно вычислить вторую часть соотношения (15) для каждого g0 6 G. Если это сделано, то решение задачи цело­

численного программирования получено для всех правых частей

Ь, принадлежащих К в (d), где d, = Zmax (D — 1). Заметим, что в оптимальном решении задачи целочисленного программирования (x)jXjy) часть х% является периодической относительно столбцов;

19.2. АСИ М ПТОТИЧЕСКИЙ АЛГОРИТМ

399

оптимального базиса В соответствующей задачи линейного про­ граммирования х).

Каждое Ь, для которого соответствующая задача линейного программирования имеет решение, принадлежит некоторому конусу К в- Этот конус может быть, например, одним из конусов, изображенных на рис. 19.2 (б). Это означает, что b можно выра­

зить

посредством

столбцов из

В, т.

е.

Ь =

г

где

Яг ^ 0 .

Точка b может

принадлежать,

либо

не

 

 

конусу

принадлежать

К в (Imax ( D — 1)). Но если %i >

0 для всех i,

то /сЬ при достаточ­

но

большом к будет принадлежать

конусу

К в (lmax (D

— 1)).

На рис. 19.2(a) показан случай к = 2. Это означает, что задача целочисленного программирования с ограничением Ах = кЪ может быть решена при достаточно большом к, если решение соответствующей задачи линейного программирования не вырож­ дено. Поэтому настоящий параграф называется «асимптотический

алгоритм».

Заметим,

что

ширина полосы d = Zmax (D — 1)

обычно дает слишком

жесткие достаточные условия.

Пусть Ь принадлежит допустимой области 2)* . Тогда из соот­

ношения (9)

получаем

 

 

 

 

II

(1 + г (£ ))< Д 3)-

Из соотношения (8 6 ) для небазисных компонент задачи (2а) следует

[ j ( i + * ;)< £ > .

(16)

3=1

 

Когда D = | det В | = 1 (матрица А унимодулярна), из соот­ ношения (16) получаем, что Xj = 0 для всех /. В этом случае d = = ^max (D — 1) = 0 и оптимальное целочисленное решение совпа­ дает с решением задачи линейного программирования, которое имеет не больше чем т ненулевых компонент. Поскольку D воз­ растает начиная с 1 , то полоса уже не будет при этом иметь нуле­

вой ширины, а оптимальное решение будет, вообще говоря, отли-

!) Имеется в виду, что ХдТявляется периодической функцией от вектора

га

Ь —правой части задачи

(b-j- ^

X;bj) = х ^

(Ь), где

Я;—целые, В =

 

 

 

i=i

 

 

 

= [bj, b2, . .., Ьт ]. —Прим. ред.

 

 

 

2)

Имеется

в виду, что

(Ь) ^

0 .— Прим.

ред.

 

3)

Заметим,

что это соотношение справедливо в случае, если точка t(g)

неприводима. Но не любое оптимальное решение задачи (7)

является непри­

водимой точкой.

Следующее ниже утверждение о границе числа ненулевых

компонент оптимального решения задачи (2а) также справедливо, если соот­ ветствующая точка t(g) — неприводима.— Прим, перее.


400 г л . 19. Л И Н Е Й Н О Е И Ц ЕЛ О Ч И С Л Е Н Н О Е ПРОГРАМ М ИРОВАН ИЕ

чаться от решения соответствующей задачи линейного програм­ мирования. Если b принадлежит допустимой области, то опти­ мальное решение имеет не больше чем т + р ненулевых компо­ нент. Чтобы получить верхнюю границу для р, предположим, что х% имеет р ненулевых компонент или что Xj ^ 1 для р небазис­

ных компонент. Тогда из соотношения (9) получаем

£ » > П (1 + ^ ) > 2 р,

3

ИЛИ

Р < log 2d .

Итак, в случае D = 1 оптимальное решение задачи линейного программирования оказывается автоматически целочисленным. При возрастании D решение задачи целочисленного программиро­ вания начинает постепенно удаляться от решения соответствующей задачи линейного программирования, однако при этом число ненулевых небазисных переменных всегда не больше log2 Z>.

Начав решать задачу целочисленного программирования (2а), возьмем оптимальный базис В соответствующей задачи линейного программирования. Применив отображение фВ-1 к ограничениям задачи (2 а), преобразуем их в одно отношение сравнения (6 ).

Если мы решим задачу групповой минимизации (7), то сможем

получить х^ из соотношения

(8 6 )

и

х % из соотношения

х %

= В-1 (Ь — Nxfr). Если х* в >

0, то

(х |,

х^) — оптимальное

цело­

численное решение исходной задачи целочисленного программи­ рования (2а). Обсудим теперь детально решение задачи груп­ повой минимизации (7). Задача (7) во многом похожа на задачу о рюкзаке, только вместо отношения сравнения в последней име­

ется

единственное

ограничение

типа неравенства.

Для

любого

S £

г) и элемента h £ G определим функцию

 

 

 

 

ф (5\ К) = min TiC*(g)t(g)

 

 

при условии

 

g£S

 

 

 

 

 

 

 

 

S *(*)•*= *,

 

(17)

 

 

g £ S

 

 

 

 

 

t { g ) > 0

(целые).

 

 

Если

S — пустое

множество 0,

то положим ф (0,

Ь) =

оо. Если

h — нулевой элемент группы, то ф (S, 0) = 0. Для любого другого S и h групповой элемент g' £ S либо используется по меньшей мере один раз при подсчете ф (S, К), либо не используется вовсе. В пер­ вом случае

t (g') > 1 и ф (S, К) = с* (g') + ф (S, h — g'),

(18)

а во втором

t {g') = 0 и ф ( S , К) = ф ( S — g ' , h).

(19)