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

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

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

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

Добавлен: 15.10.2024

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

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

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

ПРИЛОЖЕНИЕ В

АЛЬТЕРНАТИВНОЕ ДОКАЗАТЕЛЬСТВО ДВОЙСТВЕННОСТИ

Доказательство теоремы двойственности в гл. 3 основано на теореме 1.2. или на ее эквивалентной форме — теореме об отде­ ляющей гиперплоскости. Доказательство теоремы 1.2. чисто алгебраическое и весьма длинное. Если нас интересует только теорема двойственности сама по себе, мы можем воспользоваться следующим доказательством, которое не связано с теоремой 1.2. (Это доказательство изложено в работе Дрейфуса [50].)

Рассмотрим прямую и двойственную задачи линейного про­

граммирования:

 

 

 

 

 

минимизировать

Z =

сх

 

 

 

 

 

 

при ограничениях

Ах ^ Ь,

х ^ 0

 

(1>

и

 

 

 

 

 

 

 

максимизировать

w =

уЬ

 

 

при ограничениях

 

 

УА < с, у > 0.

 

(2)

 

 

 

Легко видеть, что любая пара допустимых решений х и у

задач (1) и (2)

будет

удовлетворять соотношениям

 

z

- сх

(уА) х =

у (Ах) ^ yb

= w.

(3)

Покажем теперь, что для оптимальных решений х* и у*

 

 

z* =

сх* = у*Ах* = у*Ь =

w*.

(4)

Рассмотрим целевую функцию z задачи (1), как функцию правой части Ь ограничений (1), а для обозначения оптимального значения целевой функции, когда правая часть равна Ь, исполь­ зуем z* (Ь). Тогда по определению

z* (Ь) = сх*.

(5)

Если увеличить любую компоненту bt вектора Ь задачи (1), то оптимальное значение z* (b) заведомо не уменьшится. Отсюда


 

АЛЬТЕРНАТИВНОЕ ДОКАЗАТЕЛЬСТВО

ДВОЙСТВЕННОСТИ

 

457

следует, что

 

 

 

 

 

 

 

 

 

 

 

 

для всех

г.

 

(6)

Предположим, что i0-e ограничение

задачи (1) выполняется

как

строгое неравенство для

оптимального решения х*,

т.

е-

 

 

П

 

 

 

 

 

 

 

 

 

2

aiQixi

^

bi0.

 

 

 

 

 

5=1

0

 

 

 

 

 

 

Тогда найдется такое е, что при увеличении Ь,0 на ei

нера­

венство будет все еще выполняться,

а оптимальное значение z*

(b)i

не изменится. Отсюда следует, что

 

 

 

 

 

d z *

 

 

 

П

 

 

 

 

 

О ДЛЯ

 

2

aHXf > bi-

 

(7)

 

 

 

 

 

 

 

 

5=1

 

 

 

 

Рассмотрим следующую задачу линейного программирования,,

которая несколько отличается от задачи (1):

 

 

минимизироватг

 

Z =

сх

 

 

 

 

при

ограничениях

 

 

 

 

 

Ах ^

Ь +

еа;,

х ^

0.

 

(8)>

 

 

 

Можно получить допустимое решение задачи (8), незначи­ тельно изменив оптимальное решение задачи (1), т. е. можно использовать х* + еа; как допустимое решение задачи (8). Этот факт легко проверяется:

А (х* + ее;-) = Ах* + еа,- ^ Ь + еа;.

Поскольку, х* + ее; — допустимое решение задачи (8),.

с (х*

-|- ее;) должно быть не меньше оптимального значения целе­

вой

функции задачи (8).

Другими

словами,

 

z* (Ь +

еаД ^

с (х* +

ее;) — сх*

-)- есе; = z* (Ь) +

ес;.

Выражая обе части неравенства через е, получаем (предпола­

гая х* =

В -1Ь >

0)

 

 

 

 

 

 

т

 

 

 

 

 

z* (Ь) + е 2

-Щ- а ц < 2 * (Ь) + ес;.

(9>

 

 

 

г—1

 

 

Если

е > 0

, то из соотношения (9) следует

 

т

(Ю>

г=1


458

 

 

 

 

 

ПРИЛОЖЕНИЕ В

 

 

 

 

Если х* > 0,

то можно

выбрать е <

О таким,

чтобы х* -|- 8 ^ 0 ,

т. е.

чтобы х* +

ее,-

оставалось допустимым решением задачи

(8).

Для

е < 0

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

(9) следует

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( и )

из утверждений

(10) и (11) вытекает,

что

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

 

 

 

S

~ЖГ аи = сл

если

x t

> 0 -

 

(12)

 

 

 

i —1

 

 

 

 

 

 

 

 

 

 

Обозначим dz*/dbt через у*

и покажем, что у* — оптимальное реше­

ние задачи (2) и что соотношение (4)

выполнено. Из соотношений

(6) и

(10)

видно, что у* неотрицательно

и

удовлетворяет

огра­

ничениям задачи (2). Далее заметим,

что имеет

место следующее

'Соотношение:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

cixf =

( 2 у*аи) хЬ

i =

1.

• • • *п.

(13)

 

 

 

 

 

 

г=1

 

 

 

 

 

 

 

Действительно, если х* — 0, то утверждение

(13)

очевидно.

Если

 

 

 

 

 

 

 

 

 

т

 

 

 

 

же х* 0,

то в силу

(12)

имеем c j =

2

ytaij> откуда и следует

(13). Из (13) получаем

 

 

 

г=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

п

т .

 

 

п

 

 

 

 

 

 

 

СХ* =

2

(

2

У*аи) Х1 =

2

(у*аДх? =

у*Ах*

(14)

 

 

 

j=i

i —1

 

j=l

 

 

 

 

 

и первая часть равенства (4) доказана. Чтобы доказать вторую часть равенства (4), заметим, что справедливо следующее соотно­ шение:

 

 

г/? ( 2 ацх*) =

y*bt,

i =

1,

. . .,т .

(15)

 

 

 

;= 1

 

 

 

 

 

 

Действительно,

в силу (1)

всегда

2

auxj ^ ^ i при; = 1, ..., т.

 

 

 

 

 

 

j=i

 

 

 

Если

2

aiixf = bi,

то

равенство (15)

очевидно

выполняется.

 

j=i

П

 

 

 

 

 

 

Q

Если

же

 

то

в силу

(7)

имеем

2 aiix* > b i ,

г/* = -^т- = 0

7=1

*


АЛЬТЕРНАТИВНОЕ ДОКАЗАТЕЛЬСТВО ДВОЙСТВЕННОСТИ

459

и утверждение (15) справедливо. Из (15)

легко получаем

 

ш

п

т

 

 

у*Ах*= 2

У? (.2

ацх*) = 2

= У*Ь-

(16)

i= l

j=i

i = 1

 

 

Из соотношений (14) и (16) следует соотношение (4) и теорема двойственности доказана.

Всюду в доказательстве мы предполагали, что

функция z* (Ь)

дифференцируема.

При доказательстве соотношения (9) предпола­

галось, что х* =

В"ХЬ >

О и, следовательно,

z* (Ь + еаг) —

линейная функция от b -f-

еа;-, в противном случае она содержала

бы члены более высокого

порядка относительно

е.

ПРИЛОЖЕНИЕ С

АЛГОРИТМЫ ТИПА ДЕРЕВА ПОИСКА

Целочисленные алгоритмы, описанные в гл. 13—17, относятся к методу отсечений, поскольку они порождают дополнительные ограничения или отсекающие плоскости. В этом приложении мы обсудим другой подход, который может быть назван методом дерева поиска. Сюда относятся алгоритм ветвей и границ (Лэнд и Дойг [139], Литтл и др. [144]), аддитивный алгоритм (Балаш [4], Бил и Смол [14]), алгоритм прямого поиска (Лемке и Шпильберг [143]) и многие другие. Обзор этих методов и дополнительные ссылки можно найти в работе Балинского [6] и Лемке и Шпильберга [143]. Алгоритмы типа дерева поиска обладают следующими общими свойствами:

(а) они просты для понимания, (б) они легко могут быть запрограммированы на вычислитель­

ной машине, (в) верхняя граница числа шагов, необходимых в алгоритме,

имеет порядок

О (кп), где п — число переменных,

(г) они обладают простой математической структурой.

Свойства (а)

и (б) выражают, несомненно, большие преимуще­

ства алгоритмов этого типа. Свойство (в) является недостатком, поскольку влечет за собой экспоненциальный рост количества вычислений при увеличении размерности задачи. (Здесь необхо­ димо подчеркнуть, что верхней границы числа шагов в алгорит­ мах метода отсечения не установлено.) Мы останавливались по­ дробно на алгоритмах метода отсечений, поскольку они дают луч­ шее понимание задачи (см. гл. 18, 19, 20). Зная структуру задачи, можно надеяться построить более эффективные алгоритмы. Из опыта известно, что для небольших задач алгоритмы типа дере­ ва поиска требуют меньше вычислительного времени, чем алго­ ритмы метода отсечений, но время вычислений растет быстрее в алгоритмах типа дерева поиска. Здесь мы дадим краткое описа­ ние алгоритмов типа дерева поиска.

Рассмотрим

задачу

целочисленного программирования

минимизировать z =

су

при ограничениях

(1)

Ау ^

Ь, у ^

0, у — целочисленный вектор.


АЛГОРИТМЫ ТИПА ДЕРЕВА ПОИСКА

461

Если каждая компонента вектора у ограничена сверху целым числом М, то существует + 1)” таких неотрицательных цело­ численных векторов у. Мы должны проверить каждый из них на допустимость и выбрать допустимое решение с минимальным значением целевой функции в качестве оптимального решения. Поскольку число + 1)" обычно очень велико, в алгоритмах типа дерева поиска делается попытка исключить проверку вариантов, которые доминируются проверенными ранее реше­ ниями.

Опишем сначала метод ветвей и границ. Решим задачу (1) как задачу линейного программирования, отбросив требование цело­ численное™. Если в оптимальном решении все переменные уj ^ О и целочисленны, то очевидно, что у — оптимальное решение задачи целочисленного программирования. Если некоторая ком­ понента y h = lyk] -f- fh, где 0 < / ft < 1, то решаем две задачи линейного программирования, одну с дополнительным ограниче­

нием уь

=

[z/ft], а другую с дополнительным ограничением у* =

= [уk] +

1.

Если одна из этих двух задач линейного програм­

мирования,

скажем, с ограничением y k = [у*], не дает целочис­

ленного решения (например, у г = [/г] -f- / г), то необходимо решить еще две задачи линейного программирования, одну — с дополни­ тельными ограничениями yh = [у*], у г = [г/г], другую с допол­ нительными ограничениями ук = [уд], у* = [уг] + 1.

Все полученные таким образом решения могут быть частично упорядочены в виде дерева, корень которого соответствует реше­ нию задачи линейного программирования, полученному без цело­ численных ограничений. Если решение у0 не удовлетворяет тре­ бованиям целочисленное™, оно разветвляется на два других решения у1 и у2. Решение у0 называется предшествующим реше­ ниям у1 и у2, а у1 и у2 называются следующими за у°.

Если все решения, следующие за у1 и у2, недопустимы, то мы

должны

ветвиться из у0

снова с

ограничениями у г = [г/г! — 1

и у г =

[уг]

2. Любая

вершина

с нецелочисленным

у г

может

иметь

много

следующих

вершин,

соответствующих

у г =

[уг],

г/г =

lyi\ — 1,

. . ., Уг =

[уг1 + 1,

2/г = \уА + 2 . . .

и

т.

д.

Вершина называется висячей, если не имеет следующих за ней вершин; из этого определения следует, что висячая вершина представляет собой допустимое целочисленное решение или недо­ пустимое целочисленное решение. Идея метода ветвей и границ заключена в следующих двух фактах.

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