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

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

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

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

Добавлен: 15.10.2024

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

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

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

130

при условиях

ГЛ. 7. ПРИНЦИП ДЕКОМПОЗИЦИИ

5 А .ц 4 - Я 12 “Ь 6А-22 + ■ • • = 7 ,

Я,14

=1,

(2)

^12 “Г

^-22 + • • • ;= 1

 

Задача (2) является канонической задачей линейного программи­ рования с неизвестными Яг;-. Если воспользоваться методом штра­ фа (см. § 2.3), то с каждой искусственной переменной должна быть связана достаточно большая положительная оценка. В нашем случае поступим иначе. В табл. 7.1 искусственным переменным отвечают нулевые оценки, и какие бы на их месте ни появлялись в дальнейшем значения относительных оценок, положительные

 

 

 

 

 

Таблица 7.1

 

 

 

1

„а

а

„а

Хц

Х\2

Я22

 

константы

 

x t

*2

хз

 

Z

1 0

0

0

9

20

18

.

0

 

 

1

 

 

5

1

6

.

7

 

 

 

1

 

1

0

0

.

1

ха

 

 

 

1

0

1

1

.

1

3

 

 

 

 

 

 

 

 

 

или отрицательные, они не будут влиять на окончание работы алгоритма. Точки в табл. 7.1 показывают, что существуют другие столбцы, не включенные в таблицу.

 

 

 

 

Таблица 7.2

 

 

 

 

1

Х а

х а

Х а

Ян

Я12

Я22

константы

 

 

1

2

3

 

Z

1

2/5

— и

- 2 0 ,4

0

0

0

—28,6

Ян

0

0

1

0

1

0

0

1

Я12

0

- 1 /5

1

6/5

0

1

0

4/5

Я22

0

1/5

— 1

- 1 /5

0

0

1

1/5

После введения Яи , Я12, Х22 в базис получается табл. 7.2. Из нее видно, что (л:, щ, п 2) = (—2/5, И , 20,4),

7 48

(cj j t L j ) х 4 = {(1 , 8) — ( — 2/5) (1, 4 )} [X i , x 2] = - ^ x i + ~ x ^

Следовательно, для Si имеем: минимизировать

7

, 48

"g- x l + -g" х 2



7.2. ПРИМЕР

при условиях

2 л?! За :2 = 5, 5#! + а:2 = 6 ,

хи ж2 <:о.

Решением является: Xi = \, х2= 1 при

(Ci — ЯЬ^Х! — я 1= - ^-- 1+- ^ -- 1 — И = 0 .

Подобным же образом для S2:

2 — яЬа)х 2= ((5, 6 , 1)— (

2,

К , х'г, х'3]-=

= 5,la;i + 6 ,8^ + 1,5а:;.

Соответственно линейная программа имеет вид: минимизировать

Ъ,\х[ + 6 ,8 а;; + 1,5а:;

при условиях

За:; + 4а:; + За:; = 1 2 ,

х., х2, х3^ 0 .

Решением является: - 0, х2 ■0, х3 4,

(са- я 1 * ) х 2 - п а = 5,1-0 + 6 ,8 -0 + 1 , 5 - 4 - ^ =

= 6 — 2 0 ,4 = — 14,4 <

0,

^32= L2x32 = ("4 ’ 3,

[0, 0, 4] =

5.

131

(3)

Таким образом, [132, е2] = [5, 0, 1]. Прежде чем добавить этот вектор в табл. 7.2, необходимо умножить его на обращение теку­ щего базиса В-1:

Полученный вектор вместе с его относительной оценкой (—14,4) записывается в табл. 7.2. Результатом является табл. 7.3. После итерации получается оптимальная табл. 7.4 с

Х ц = 1 , Я,12= 3/4, ^32 ~ •

9*

132

 

 

ГЛ. 7. ПРИНЦИП ДЕКОМПОЗИЦИИ

 

 

 

 

 

Таблица 7.3

 

 

 

 

1

Х а

2

3

Ян

Я.12

Я22

Я32

константы

 

 

1

 

 

 

 

 

Z

1

2/5

—и

—20,4

0

0

0 --1 4 ,4 ...

—28.6

Яи

0

0

1

0

1

0

0

0

1

Al2

0

- 1 /5

1

6/5

0

1

0

1/5

4/5

Я22

0

1/5

—1

- 1 /5

0

0

1

4/5 * ...

1/5

 

 

1

 

Таблица

7.4

я 22

Язг

 

 

1

2

3

Яц

Я12

 

 

Х а

 

х а

 

 

 

 

Z

1

4

- 2 9

—24

0

0

18

0 . ..

—25

Яи

0

0

1

0

1

0

0

0 ...

1

Я12

0

—1/4

5/4

5/4

0

1

- 1 /4

0 . ..

3/4

Я32

0

1/4

—5/4

- 1 /4

0

0

5/4

1

1/4

Итак,

Х1 = Я(1 [1 , 1 ] = [1 , 1 ],

ха = -§-[4, 0, 0] + { [ 0 , 0, 4] = [3, 0, 1].

Для проверки убедимся, что ограничения (1) удовлетворяются и

ъ =

1 +

8-1

+

5-3

+

6-0

+

1-1

=

25.

Упражнения

 

 

 

 

 

 

 

 

 

 

Решить задачу:

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

z =

5xi

+

+

хг +

6 а:' +

2 х'

+

х'3

при условиях

 

 

 

 

 

 

 

 

 

 

 

^ 1 + ^2 + х3 + К +

+ Х3= 6 ,

 

 

Xi +

 

х3

 

 

 

 

1 ,

 

 

 

а’г-Ь 2 а:3

 

 

 

=

3,

 

 

 

 

 

2.xi

х2

 

х3=

4,

 

 

X i ^ O ,

а :(^0

(г = 1,

2, 3)

 

при помощи алгоритма декомпозиции Данцига — Вулфа. Исполь­ зовать Х.ц (соответствующее art = 1 , а:2 = 3) и Х12, Я22 (соответ­

ствующие х\ = 2, х2 = 4) в качестве исходных базисных пере­ менных.


ДОПОЛНЕНИЕ

133

Дополнение

В этой главе большая задача линейного программирования, показанная на рис. 7.1 (имеющая большое число строк и столбцов), преобразовывалась в задачу линейного программирования, пока­ занную на рис. 7.2, с большим числом столбцов. Для того чтобы решить задачу, показанную на рис. 7.2, не требуется выписывать все столбцы. Мы используем несколько столбцов в качестве начального базиса и выписываем столбец, который должен войти в базис. Задача определения «наилучшего» столбца есть другая задача линейного программирования. В общем случае большая задача линейного программирования решается разбиением задачи на две части (главную часть и вспомогательную часть). Главной частью является задача линейного программирования, содержа­ щая много строк или столбцов. Однако ни строки, ни столбцы не выписываются полностью. Вместо этого во вспомогательной части решается другая оптимизационная задача, которая дает «наилучшую» строку или столбец для главной части. В гл. 11 приведено много примеров, укладывающихся в эту схему. Читатель может также прочитать Гомори [82].

ГЛАВА 8

МАКСИМАЛЬНЫЙ ПОТОК

8 Л. Введение

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

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

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

конечно. Если дуга имеет определенную ориентацию (направле­ ние), то она называется ориентированной, или направленной,

дугой, в противном случае она называется неориентированной дугой. Для изображения узлов, ориентированных и неориенти­ рованных дуг используются соответственно кружки, линии со стрелками и линии без стрелок. На рис. 8.1 изображена сеть из четырех узлов и шести ориентированных дуг.

Будем использовать символ N t для обозначения узла i и сим­ вол Aij для обозначения ориентированной дуги, ведущей из N t в N j. Если дуга между узлами N t и N j неориентированная, то ее можно обозначать как символом Ац, так и Ац.

Сеть называется связной, если при любом разбиении множества

узлов сети на подмножества X тлХ найдется дуга А ц или дуга А л,

где N t £ X и N j 6 X. В этой книге всюду термин «сеть» обозначает

связную сеть. Для удобства будем считать, что между любыми двумя узлами N t и N j имеется либо не больше одной ориентиро-


8.1. ВВЕДЕНИЕ

135

ванной дуги А ц и одной ориентированной дуги Ац, либо только одна неориентированная дуга А ц . В большинстве случаев можно

заменить одну неориентированную дугу двумя ориентированными. Мы исключаем возможность существования петель, т. е. дуг, веду­

щих из некоторого узла в этот же узел.

дуг сети: N 1, Ац ,

Рассмотрим

последовательность узлов и

N 2, А а з , N з , . .

. , N k_u A h-i, h, N k. Такую

последовательность

узлов и дуг назовем цепью или ориентированной цепью, ведущей из узла N t в узел N h. Если N t = N h, то такая последовательность называется ориентированным циклом. Например, на рис. 8.1 последовательность А 12, N 2, A 2t, N t является цепью, ведущей из N s в N ц последовательность N a, A l2, N 2, А 23, N 3, А 32, N 2, И 24, N t также является цепью, ведущей из N s в N t. Последователь­

ность N 2, А 23, N 3, А 32, N 2 является циклом. Цепь называется простой, если она не содержит циклов. В дальнейшем под терми­

ном «цепь» мы будем понимать простую цепь.

A i2, N 2,

А 23,

Путем будем называть последовательность N

N s, • •

Л^й-i,

A k. 1 , ft, N k,

где N u

N 2,

. . .,

N k — узлы

сети,

и либо

A if i+l,

либо A i+l, i

(при i =

1 , 2 ,

. .

.,

к — 1) является

дугой сети. Таким образом, путь отличается от цепи тем, что при движении по пути от N xк N h можно пройти дугу сети и в направле­ нии, противоположном ее ориентации. Для неориентированных сетей понятия цепи и пути совпадают. Например, на рис. 8.1 последовательность N s, A s3, N 3, А 23, N 2, Н 24, N t является путем. Если дугу А 23 заменить дугой А 32, то этот путь превратится в цепь.

Пока, как мы видим, определение сети совпадает с определени­ ем графа. Мы используем термин «сеть», так как с каждой дугой будет сопоставлено несколько чисел, тогда как в теории графов дуга лишь указывает на то, что узлы соединены. Пусть с каждой дугой А ц сопоставлено положительное число Ьц, называемое

пропускной способностью дуги. (Используется также термин «про­ пускная способность ребра».) В сети выделяют два специальных узла. Один из них называется источником и обозначается N s; другой называется стоком и обозначается N t. Сеть можно рас­ сматривать как водопроводную систему, в которой трубы соответ­ ствуют дугам, источник воды соответствует источнику N s, сток воды — стоку N t, а соединения между трубами — остальным узлам сети. Пропускная способность дуги здесь соответствует попе­ речному сечению трубы. Надо найти, какой максимальный поток воды можно пропустить из источника в сток в этой водопроводной системе.

Чтобы сформулировать эту задачу более точно, введем сначала понятие потока в сети. Потоком из источника N s в сток N t в сети называется множество неотрицательных чисел Хц (каждое из которых поставлено в соответствие некоторой дуге сети), если эти