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

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

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

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

Добавлен: 15.10.2024

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

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

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

350

ГЛ. 17. ПРЯМОЙ АЛГОРИТМ

знакомо: это ограничение, выражающее границу суммы небазис­ ных (исходных) переменных. Обозначим индекс этой строки, через L. Ограничение имеет вид

tb + 2 Xj = <L-

(3)

j£J

 

Целочисленная константа ai0 выбирается достаточно большой, для того чтобы любое допустимое целочисленное решение удовле­ творяло уравнению (3) при неотрицательном целочисленном зна­ чении слабой переменной Хорошо известно, что добавление1 строки (3) позволяет получить допустимое решение двойственнойзадачи. М ы не будем подчеркивать здесь это свойство L -строки, однако оно играет важную роль в прямом алгоритме х).

Цель

введения L -строки заключается в том, чтобы помочь

в выборе

ведущего столбца. Пусть a Lj обозначает элемент в /-м

столбце и в L -й строке. Дл я каждого столбца а;-определим новый вектор-столбец 2) г;- следующим образом:

( 4 )

Правило выбора ведущего столбца состоит в следующем: столбец. а8 выбирается в качестве ведущего, если rs является лексикогра­ фически минимальным среди столбцов rj, у которых a Lj > 0.

Сформулировать кратко критерий выбора производящей строки не удается. Поэтому сначала будет сформулировано основное требование к производящей строке, а затем обсуждено значение такого подхода.

Потребуем, чтобы правило выбора производящей строки обла­ дало следующей особенностью:

строка а может быть взята

в качестве производящей,

если выбрав ее в качестве

таковой, м ы

для каждой

строки i за конечное число симплексных итераций

получим таблицу, в которой ais ^ ai0.

(5)

Такое требование не означает, что условие ais ^ ai0 должно выполняться для всех i в некоторой таблице (что является необ­

ходимым и достаточным условием переходного цикла). Н а ш е требование допускает возможность того, что ais > ai0 для всех i

в некоторой таблице.

1)

См. Юнг [224] и [225] и Гловер [76],

а также § 17.4.

2)

В определении (4) мы предполагаем,

что вектор-столбец аj из (1)

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


17.1. ВВЕДЕНИЕ И АЛГОРИТМ

351

Любое правило выбора производящей строки, обладающее свойством (5), будем называть допустимым правилом. Выполнения

свойства (5) достаточно х) для доказательства конечности. Однако само по себе свойство (5) еще не обеспечивает конструктивного способа получения допустимых правил выбора производящей строки. С помощью теоремы 17.1, изложенной ниже, и некоторых дополнительных рассуждений будет получен такой способ, позво­ ляющий: сформулировать допустимые правила.

Поскольку выбор производящей строки является задачей нетривиальной, по-видимому, должно существовать несколько строк, которые могут служить в качестве производящих. В предва­ рительных рассуждениях и в примере начала этой главы в качестве производящей использовалась ведущая строка симплекс-алго­ ритма. Эта строка всегда дает отсечение, которое является веду­ щей строкой с ведущим элементом, равным единице. По-видимому, в таблице существуют и другие строки, из которых могут быть получены отсечения с такими же свойствами. Допустим, что отсечение получается по формуле *2)

“ - ■ [ - £ ] + 2 [ £ ] ( - * > ■

(*>

Строка и может стать производящей тогда и только тогда, когда

где 0S определяется из условия

= 1Н1П ai0

Определим множество V (s) как совокупность строк3), удовлетво­

ря ющ их условию (7).

х) Свойство (5) не самое слабое ограничение, которое можно исполь­ зовать для получения допустимых правил выбора производящей строки. Однако более слабые ограничения, по-видимому, потребуют более сложных построений, и поэтому мы используем свойство (5), которое просто форму­ лируется и является достаточным условием конечности. Другие формулировки можно найти у Гловера [76] и Юнга [225].

2) Полагая X = avs, как это делается в (6), мы получаем в качестве ведущего элемента 1. В отдельных случаях можно взять X <. avs и при этом

= 1 (что сохраняет ведущий элемент, равный 1) и получить более силь­

ное («глубокое») отсечение. Эта идея была предложена Вильсоном [214].

Мы не будем здесь пользоваться этими соображениями, поскольку они при­

водят к более сложным

правилам выбора производящей строки и потому

усложняют изложение в

целом. Однако тем, кто интересуется вычислитель­

ными

аспектами, следует помнить о такой возможности.

3)

Иногда автор говорит не о строках из F (s), а о номерах этих строк.—

Прим.

ред.


352

ГЛ. 17. ПРЯМОЙ АЛГОРИТМ

Теперь

рассмотрим, как можно получить правила выбора

■строки v £ V (s), обладающей свойством (5). Заметим, что в пере­ ходном цикле 0S ^ 1. Поэтому ai0 ^ ais для всех i и, следова­

тельно, свойство (5) имеет место независимо от того, какую строку выбрать в качестве производящей. Таким образом можно сосредо­ точить внимание на выборе производящей строки в стационарных

циклах.

 

 

В стационарном цикле 0S <

1, и поэтому

 

откуда строка i может быть выбрана как производящая

тогда

и только тогда, когда

 

 

ai0 <

ais.

-(8)

Заметим, что из условий (8) и (5) можно вывести следующее заклю­ чение: если свойство (5) не выполняется, то существует бесконеч­ ная последовательность таблиц, в которых строка выбирается в качестве производящей. Поэтому необходимо доказать, что можно выбирать производящую строку среди строк с ais > ai0

и

при этом будет иметь место свойство (5).

 

 

 

Доказательство этого факта может быть получено как следствие

из теоремы

17.1.

 

 

 

 

Т еорема

17.1. Пусть дана

таблица,

в которой

строка

с

индексом

v производящая и

столбец as —

ведущий. И

пусть

a vj j-й элемент строки,v, a avj соответствующий коэффи­ циент строки v в следующей таблице. Если отсечение

 

 

s» =

[ - S r ]

+

2 [ - S - ] < - ^ )

 

 

(»)

 

 

 

 

 

}£J

 

 

 

 

 

 

используется

в

качестве ведущей

строки,

то

aVJ- ^ 0

для всех

j £ J x), кроме

индекса к слабой переменной

в (9) и

 

 

 

 

avj<

avs

для

всех

j 6 /.

 

 

(10)

Д оказательство. Действительно,

 

 

Г а»./ П

 

avj= avj

——

\avS, откуда

 

 

 

г

“|

 

 

 

 

 

L a v s

J

 

 

a 0j

a v j

< 1 ,

и

в силу

 

^

получаем

следует, что --- = ----- ----

aps>>0

 

&v$

&v s

L ^ v s

J

 

 

 

 

 

 

 

 

& v j <C d v s •

Дл я того чтобы связать теорему 17.1 с нашими рассуждениями относительно правил выбора производящей строки, вначале

г) f — множество индексов небазисных переменных после преобразо­ вания.— Прим, перев.



 

17.1.

ВВЕДЕНИЕ И АЛГОРИТМ

353

отметим, что в

стационарном

цикле —

= 0. Таким

образом,

_

 

 

L^osJ

 

 

av0 = «во = «»о>

«»о —

значение

элемента

(стоящего в

нулевом

столбце и в строке' v) в таблице, которая получилась в результате последнего переходного цикла. Теперь если avs av0 = у > 0,

то, как следствие из (10), имеем (при выборе любого s) а - — av0 =

У < У-

Таким образом,

если строка v повторно выбйрается

в

качестве

производящей

до тех пор, пока

avs > av0 = avо, то

конечная последовательность преобразований

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

к

таблице,

в которой avs ^

av0.

 

 

Итак, можно обеспечить выполнение требований к допустимому

правилу выбора производящей строки, если правило обладает следующим свойством: если в таблице для некоторой строки i

«is > «го «го и это условие выполняется в последующих табли­ цах, то строка i будет выбираться как производящая до тех пор, пока не выполнится условие ais ^ ai0 (после чего строка i пере­

стает быть производящей строкой). Заслуживает внимания сход­ ство этого правила с правилом выбора производящей строки в полностью целочисленном алгоритме Гомори.

Следующие два правила представляют собой примеры допусти­ мых правил выбора производящей строки.

П равило 1

а. Составить последовательный конечный список индексов строк таким образом, чтобы индекс каждой строки вошел в него по меньшей мере один раз. Перейти к (б).

б. Если список пуст или не содержит ни одного индекса из V (s), вернуться к (а); в противном случае найти в списке первый индекс v £ V (s). Выбрать строку v как производящую строку. Вывести из списка индекс v и все предшествующие ему индексы.

Перейти к

(в).

 

 

 

 

 

в. Последовательно выбирать строку v, взятую в (б), как

производящую, до тех пор, пока v 6 V (s). Как только

v (f V (s),

вернуться

к

(б).

 

 

 

 

 

П равило

2

 

 

 

 

 

а. Пусть

V t (s)

множество

V (s), соответствующее

t-й таб­

лице.

Если

Vt (s) содержит более одного

элемента:

V t (s) =

= {щ,

v2, . . ., vh+2}, то в качестве производящей выбрать такую

строку va, что в последовательности множеств

V t (st), V 2 (s2), . ..

. . ., V t (s) строка va

появилась

раньше (не позднее) остальных

vi V t (s) и

затем сохранялась

вплоть до

V t (s); перейти к (б).

б. Последовательно выбирать строку v, взятую в (а), до тех

пор, пока

v 6 V (s). Как только

v ^ V (s ),

вернуться к

(а).

Прежде чем окончательно сформулировать прямой алгоритм, скажем несколько слов относительно формы и структуры записи

23 т. Ху