Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 180
Скачиваний: 0
414 гл : 19. ЛИНЕЙНОЕ И ЦЕЛОЧИСЛЕННОЕ п р о г р а м м и р о в а н и е
Заметим, что решения задачи (30), полученные с использова нием этих периодических поправок, являются оптимальными целочисленными тогда и только тогда, когда
х в = B -1b — B _1Nx^ ^ 0.
В настоящем случае / [41, 47] = g3, так что
x N = (0, 0, 0, 1, 1).
Используя значения для В _1Ь и B -1N из оптимальной таблицы; задачи линейного программирования, получаем
|
’ 43 |
1 |
Г4/6 “I |
Г2/61 |
|
Г42” |
||
х в = |
123/6J “ L3/6J 1 |
L 0 |
J |
1 = |
L20^ |
|||
|
|
|
|
|
|
|
|
|
Так как компоненты |
х в неотрицательны, |
решение |
||||||
Х2 1 >Гз, ^4, |
Х§, |
хъ, X’j) |
(42, |
2 0> |
6 ) |
0, |
0, 1, 1)' |
является оптимальным решением.
Хотя у нас имеются достаточные условия (теорема 19.8) приме нимости асимптотического алгоритма, реальные вычисления пока жут, что алгоритм дает оптимальное решение и в большинствеслучаев, когда достаточные условия не выполнены. На рис. 19.4 зачерненные точки обозначают пра вые части Ь, для которых асимптоти ческий алгоритм дает оптимальное решение, а светлые кружки указы вают правые части, где алгоритм не
дает решения.
19.3. Алгоритм групповой миними зации (Ху [112])
В этом параграфе мы рассмотрим, алгоритм решения задачи групповой; минимизации:
минимизировать
2 c*(g)-t(g)
g £ G - 0 |
|
при условии |
|
2 _g-t(g) = go, |
(!) |
g £ G - 0 |
|
t(g )^ Q (целые). |
|
Очевидно, что задача (1) охватывает случай g (; ц cz (3 \ 0. Действительно, для элемента g' $ ц можно взять в качестве его стоимости с* (g') еколь угодно большое число, так что g' в опти
|
19.3. |
АЛГОРИТМ |
ГРУППОВОЙ |
МИНИМИЗАЦИИ |
415 |
|||
мальном |
решении использоваться |
не |
будет. Заметим также, что |
|||||
с * ( & ) ^ |
О для всех S 6 |
G , |
поскольку В |
— оптимальный |
базис |
|||
соответствующей |
задачи |
линейного |
программирования *). |
Для |
||||
удобства изложения заменим с* (gt) |
= 0 |
на положительные е*, |
||||||
такие, что |
D s t < min с* (g) |
(с* |
(g) |
ф О)*2). |
|
|||
|
|
|
Мы предполагаем, что группа G является циклической группой порядка D.
Заметим, что g0 является одним из элементов группы G. Поэто му, решение задачи (1) определяет представление группового элемента g0 через другие элементы группы с наименьшей стоимо стью; gQ = g0 со стоимостью с* (g0) является одним из возмож ных представлений элемента g0. Вместо того, чтобы решать зада чу (1) для одного g0 мы решим ее для всех возможных правых частей go = gi, g2, . . ., gD-i. Другими словами, каждый эле мент группы мы хотим выразить с наименьшей стоимостью через другие групповые элементы, на которых эта стоимость дости гается. Эту задачу мы будем решать по этапам. Информация, рас сматриваемая на каждом этапе, называется текущей. Пусть с (go) — наименьшая (текущая) стоимость представления ga через другие элементы, известная к данному текущему моменту. Пару, образованную из с (ga) и числа, указывающего (кодирующего) 3) представление ga в виде комбинации со стоимостью с (ga), будем называть пометкой группового элемента ga. Пометку назовем временной, если она может-быть изменена в процессе вычислений, т. е.| если может быть найдено представление для ga в виде ком
бинации элементов из G \ 0 со стоимостью, меньшей текущей стои мости с (ga)- В противном случае пометку назовем постоянной.
Вычисления начинаются с пометок [с* (^а), а]. Эти помет ки — временные, поскольку нет уверенности, что стоимость с* ( g a ) представления g a = g a элемента g a наименьшая. Первую компо
ненту пометки будем называть ее стоимостью. Будем говорить, что пометка элемента g a меньше пометки элемента £р, -если стоимость
пометки элемента ga меньше стоимости пометки элемента gp. Алгоритм (Ху [112]) состоит в следующем.
х) с* (g) неотрицательно, так как оно равно компоненте вектора ciy
оценок небазисных переменных относительно оптимального базиса В. См. задачу (5) из предыдущего параграфа,— Прим. ред.
2)Нулевые стоимости заменяются стоимостями ег > 0 только для удоб ства доказательства. Нет необходимости делать такие замены при вычисле ниях.
3)Кодировка представления элемента в виде суммы с соответствующей стоимостью осуществляется специальным образом посредством запоминания лишь одного слагаемого этого представления, по которому рекурсивна можно восстановить остальные. Подробнее об этом будет сказано далее.—
Прим. ред.
416гл. 19. ЛИНЕЙНОЕ И ЦЕЛОЧИСЛЕННОЕ ПРОГРАММИРОВАНИЕ
Ша г 1. Сравнить стоимости всех временных пометок, объя вить пометку с минимальной стоимостью постоянной и выделить
ее. Если |
несколько пометок имеют минимальную стоимость, то |
|
в качестве постоянной |
выделить любую из них. |
|
Ш аг |
2. Пусть g { it |
g i 2, . . . , g ir —элементы группы с постоян |
ными пометками и пусть gir—последний групповой элемент, получивший постоянную пометку. Найти суммы
С ( g i i ) + |
с |
( g i r ) , С ( g i2) + |
С ( g i T) , |
. . . , |
с ( g ir) + с ( g i r ) |
|||
и сравнить их соответственно с |
|
|
|
|||||
С ( f t , + |
g i r ) , |
С { g i2 + |
gir), |
. . . , |
с ( g ir + g i r) . |
|||
Если с ( g i .) -f- с (gir) ^ c |
( g ^ |
+ |
gir), |
то пометки не менять. Если же |
||||
с (gi ■ )J r c ( g i ) < ^ c (gi t + |
gir) i |
T0 заменить пометку группового эле |
||||||
мента (gi. + g ir) |
на |
[ c ( g i . ) - | - c ( g i r ) , д], |
где |
q — вторая компонента |
текущей пометки элемента g i . 1). (Можно также заменить вторую компоненту пометки (gi + gir) второй компонентой пометки g ir).
Перейти к шагу 1. Работа алгоритма заканчивается, когда все пометки станут постоянными.
Прежде чем привести доказательство и подсчитать число опе раций в алгоритме, рассмотрим численный пример. Предположим, что группа G — циклическая порядка 10; соответствующие стои мости приведены ниже:
с* ( g t ) = 10, |
3, |
2, |
7, |
8, |
5, |
4, |
9, |
7 |
|
|
|
|
\ |
|
|
|
|
g t i |
g 2> |
g 3 ) |
gtti |
g b i |
g e t |
g i t |
g s t |
gH‘ |
Сначала заполним ряд из D — 1 пар, соответствующих D — 1 элементам группы. Все пометки — временные:
g1 |
gz |
gz |
git |
gb |
g6 |
gi |
g8 |
8q |
|
10 |
3 |
2 |
7 |
8 |
5 |
|
4 |
9 |
7 |
1 |
2 |
3 |
4 |
5 |
6 |
' |
7 |
8 |
9 |
1.Сравниваем стоимости всех временных пометок и выделяем
[2, 3] как постоянную |
пометку посредством введения знака * |
||||
в <<нижний правый угол» |
пары.i* |
|
|
|
|
0 Достаточно запоминать информацию |
лиш ь об одном |
слагаемом g i . |
|||
представления ( g i . + g l ), |
так |
как |
второе |
однозначно восстанавливается |
|
как разность элементов (g .• + |
g , |
) и g.; |
. П оск ольку элемент g , |
имеет посто- |
i г j u j
янную пометку, ее стоимость может не совпадать с исходной c * { g i ) . Стоимость пометки определяется представлением элемента с наименьшей стоимостью, информация о котором и дается второй компонентой q .— П р и м . р е д .
418 ГЛ. 19. ЛИНЕЙНОЕ И ЦЕЛОЧИСЛЕННОЕ ПРОГРАММИРОВАНИЕ
Тогда имеем |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
е 1 |
£2 |
g3 |
|
84 |
|
|
8з |
86 |
81 |
g8 £9 |
|
|||
|
10 |
3 |
2 |
|
6 |
|
|
5 |
4 |
4 |
7 |
6 |
|
||
|
1 |
2* |
3* |
|
2 |
|
; |
3 |
3* |
7 |
2 |
3 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. |
Выделяем |
[4,7] |
как |
постоянную |
пометку. |
|
|
|
|||||||
2. |
Сравниваем |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
с (ёз) + |
с (g7) |
= 2 + 4 = 6 > 0 |
= |
с (0), |
замен |
нет; |
||||||||
|
с ( ё г ) + |
с ( £ 7) |
= |
3 + |
4 = |
7 > 6 |
= |
с (g9), |
замен |
нет; |
|||||
|
с (ёв) + |
с (g7) |
= 4 + 4 = 8 > 2 = с |
(йГз), замен нет; |
|||||||||||
|
с (ёт) + |
с ( # 7) |
= 4 + 4 = 8 > 6 = с |
{gi), |
замен нет. |
||||||||||
1. |
Выделяем |
[5,3] |
как |
постоянную |
пометку. |
|
|
|
|||||||
2. |
Сравниваем |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
с (ёз) + |
с ( g 5) |
= 2 + 5 = |
7 = |
7 |
= |
с |
замен |
нет; |
||||||
|
с (ёг) + |
с (ёз) |
= 3 + 5 = 8 > 4 |
|
= с (ё7), замен нет; |
||||||||||
|
с (ёв) + |
с (g5) |
= 4 4 - 5 = 9 < |
10 |
= |
с (gt), |
заменяем |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
[10,1] на [9,3]. |
||
|
Заметим здесь, что второй компонентой текущей пометки ge |
||||||||||||||
является 3: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
с (ё7) + |
с (gs) = |
4 + |
5 |
= |
9 > 3 |
= |
с (gg), |
замен |
нет; |
|||||
|
с (ёъ) + |
с (g5) = |
5 + |
5 |
= |
10 > |
0 |
= |
с (0), -замен нет. |
||||||
Продолжая процесс, |
выделяем |
[6,2], |
как постоянную |
пометку, |
повторяем шаг 1 и шаг 2. В дальнейшем замен не происходит, так что в конце концов мы получим
81 |
82 |
gз |
g4 |
£5 |
86 |
8i |
#8 |
g9 |
9 |
|
|
6 |
|
4 |
f |
|
6 |
3 |
2 |
5 |
4 |
7 |
||||
3^[ |
2* |
3# |
2* |
з* |
3# |
7* |
2 * |
3* |
Предлолржим, что мы хотим найти представление группового элемента gi, имеющее наименьшую стоимость. Второй компонентой пометки gi является 3. Следовательно, мы знаем, что в искомое
представление gi — 2 * (ё)'ё входит t (g3) ^ 1 . Возвращаясь назад, получаем gt — g3 = gs и видим, что второй компонентой пометки элемента g8 является 2. Это означает, что t (g2) ^ 1. Возвращаясь назад, получаем gs — g2 = ge и видим, что второй компонентой