Доклады БГУИР
2011 № 1 (55)
УДК 656.2-50: 519.8
РЕОПТИМИЗАЦИЯ РЕШЕНИЯ ЗАДАЧ О НАЗНАЧЕНИИ
М П. РЕВОТЮК, П.М. БАТУРА, А.М. ПОЛОНЕВИЧ
Белорусский государственный университет информатики и радиоэлектроники П. Бровки, 6, Минск, 220013, Беларусь
Поступила в редакцию 7 декабря 2010
Рассматривается случай регулярного решения линейных задач о назначении с незначительным изменением матриц стоимостей. Реоптимизация решения асимметричной задачи коммивояжера методом ветвей и границ с ветвлением на задачах о назначении, а также комбинаторной задачи выбора позволила снизить их вычислительную сложность на порядок.
Ключевые слова: задача о назначении, разностная схема, вычислительная сложность.
Постановка задачи
Известно, что классические линейные задачи о назначении (ЛЗН) в виде
n n
,=i j=\
mm w 7 cj ■ Xj
Z Xj = Z Xj = 1; Xj > 0; i, j = 1, n\ (1)
i=i j=i I
характеризуются вычислительной сложностью O(n3) [1]. Случай поиска максимума сводится к (1), если произвести замену Cj ^ c* - Cj, i, j = 1,n, c = max |Cj, i, j = 1,nj .
Достаточно часто требуется пересчет задачи (1) после изменения исходных данных. Например, при решении асимметричной задачи коммивояжера методом ветвей и границ, когда cy Ф cjt, i, j = 1, n, эффективный способ ветвления - порождение вариантов решения ЛЗН [2]. Варианты отличаются лишь изменением некоторых элементов строки матрицы. Прямолинейный пересчет очередного варианта задачи потребует O(n3) операций. Однако итерация расчета для любой отдельной строки имеет вычислительную сложность O(n2) [1, 2], что побуждает использовать наследование результатов предшествующего решения. Цель работы - построение алгоритмов получения решения новой задачи на основе наследуемых результатов.
Представляющие практический интерес задачи с прямоугольной матрицей
I m n
min jZZ cj • xj
I i=1 j=1
Z xj =Z xj=1; xj > i=1, m, j =1n \ (2)
i=1 j=1 I
могут рассматриваться как задачи вида (1) после формального дополнения матрицы строками или столбцами с нулевыми элементами. Очевидно, что сканирование нулевых строк или столбцов будет бесполезным, но необходимым этапом реализации алгоритма венгерского метода. Тем не менее, далее ЛЗН будут рассмотрены в постановке (2), когда т < п. Холостые итерации сканирования нулевых строк будут исключены. Случай т > п легко сводится к решению (2) после транспонирования матрицы и соответствующей замены содержательной интерпретации индексов строк и столбцов.
Алгоритм решения задачи
Наиболее эффективные для решения задачи (1) алгоритмы венгерского метода используют особенности двойственной задачи
{ш п , ___I
Е ч +Е | ср - и - - 1=1'ш' У=1'п |. (3)
Здесь неизвестными являются потенциалы строк и столбцов. Значения потенциалов особого интереса не представляют, но определяют решение задачи (2). Отображение решения (3) будем осуществлять на упорядоченный вариант вектора назначений строк столбцам
Я = = i С - ui - = 0, i = 1, ш, У = 1, п |.
Схемы известных версий алгоритмов венгерского метода совпадают, включая быстрый этап инициализации для формирования начального назначения строк и итерационного дополнения решения для оставшихся строк. Вычислительная сложность этапа инициализации -0(п2). На этом этапе пытаются выполнить назначение строк, используя операцию приведения матрицы задачи. Приведение состоит в вычитании из элементов столбцов минимальных элементов столбцов. Однако этап инициализации можно исключить, совмещая этап начального назначения строк с этапом последовательного поиска решения для всех строк. Такой прием станет ключевым для построения алгоритма реоптимизации.
Действительно, пусть М и N - множества строк и столбцов матрицы ЛЗН (1), а М * и N - множества строк и столбцов текущего назначения, для которых в результате операции приведения выделены элементы с нулевой невязкой: с^ - ui - = 0, i е М, У е N. Если
5 =| М* |< ш и t =| N |< п, то, согласно теореме Кенига-Егервари, 5 +1 < ш .
Определим приращение потенциалов h = тт{(с1:/ -ui -), i £М*,у £ , а новые значения потенциалов пусть будут и* = ui + h ■ ^ £ М ) и V* = V/ - h ■ (/ е N ). Полученные значения допустимы для задачи (3), так как выполняются условия:
\ 1 /Г* * *
1) если i е М , то uj + V. < uj + V. < сУ ;
. * * * *
2) если i £М , / е N , то ^ + V. = u. + V. < е..;
/ 7 ^ 7 1 у 1 у У
ч * * * *
3) если i £М , / £ N , то u■ + V. = u■ + V. + h < с...
^ г у г у у
Такое новое назначение приведет к увеличению целевой функции задачи (3):
ЕИ* + Е V* =Еui + (ш - 5^ + Е V } - Л =Еu¡ + ЕV } +h(ш - 5 - t) .
i У i У i У
Именно это позволят увеличить количество назначенных элементов матрицы, так как 5 +1 < ш . По индукции, последнее справедливо для любых значений 5 = 1, ш , что подтверждает возможность отказа от этапа инициализации.
Проведенные рассуждения не накладывают ограничений на способ расширения множеств М* и N . Отсюда следует, что последовательное добавление строк, начиная с пустого множества, - допустимый вариант алгоритма решения задачи.
Анализ известных реализаций алгоритма венгерского метода показывает, что итерации расширения множеств М * и N чаще выполняются именно по строкам. Различные версии алгоритма отличаются при этом лишь эвристиками начального назначения потенциалов.
Например, пусть u¡ = 0, i = 1, ш, V = 0, У = 1, п . Тогда возможный компактный вариант
программы решения ЛЗН представлен на рис. 1. Здесь на каждой итерации вначале уточняются значения потенциалов столбцов, а затем назначается и корректируется потенциал добавляемой строки. Коррекция требуется в случае возникновения конфликтов с ранее просмотренными строками.
template -1з1азз зззз> з1 азз LAP ( "3" lap(;; // репекие задачи з назначении vc^d lap(3nt -} ; // итгерагля назначения строки зззз *v; // пзгенциаль: сзрзк к зззлёше int *next; // ссклка на з.земент дерева озз" *з1азх:; // нектзр неЕяззк int w; // нскер итерации int *зз1зг; // вектзр счетчика итераций ргззеззеЗ: int ш, п; // разкернзсг= задачи int *х; // зектср гекуцегз репения ззз" *с; // г^атрица зззиг^ссти
cceratcr ccstj) -! // сценка целЕЕСи функции задачи з г з - з = 3;
fcr {int ; = :■; j<n; j—) if (r;j;<n] s^c ;r ; *r.-; ; ; ret'jin з;
:■
vcid ccl(^:it j); // уточнение гз^ен^иала сгзлбца
vcid 3et(^nt i, ^r.c j, сззз xj ; // изменение алежнга мгтркцк задачи public:
LAP (int M, int H, зззз "CJ; virtual ~LAF () ;
static 1зсз1 iwas, ззпбс Г itm)
Lt (wasl=itm) return false; was=itm; return true;
template cclass зззз>
vcid 1А£-;зззз>: : lap (ir.t i) // ^зерагзия назначения ззрзз-.и int j,fc,l=i,J; w—;
fcr (5=0; 5<n; 5 —) slack ; =3r_f; dc ■:
зззз h = Lr.f.. *b = с + l~nf "J=u|I| ; fcr ('7=;, i=j; :t<n; k++)if (cclcr;k; : — if (i3_ic_r. (slack; k; , b[ k; -"J-v ;k; ) ) next;k; =C; if (is_raiii (h. slack [k" ) ) j = k;
if (to ■:
fcr (k= j; ken; k—} if {cclcr ;k; ==w)
u;r;k;;4=h; v;k;—:-.; ¡- else slack'k"-=л;
u;i; +=л;
:■
сз1зг;;; =w; i=r; j;; } while [Kb];
fcr (; (k=neKt "j" ': <n; j=k) r";j"=r"k";
tenplate I class зззз> vcid 1AF<3 ззз>: :lap () // решение задачи з назначении fcr (int i=0; L<n; i—) lap(i);
:■
Рис. 1. Шаблон класса с основными функциями решения задач о назначении
Примечательно, что такой алгоритм при обработке строки i,i < m, не учитывает информацию о последующих строках. Этим объясняется большее количество шагов коррекции потенциалов просмотренных строк по сравнению с лучшими реализациями алгоритма венгерского метода, выполняющих построение кратчайшего аугментального пути (Shortest Augmenting Path, SAP) [1]. Однако реализация алгоритма венгерского метода, пригодная для реоптимизации, должна опираться на сохраняемые значения потенциалов строк и столбцов. Алгоритмы метода SAP такие значения в явном виде не используют.
Очевидна схема решения ЛЗН с добавлением новых строк. В [4] подобная схема предложена для решения ЛЗН с расширяемой матрицей задачи (1). Этап расширения матрицы размером п х п решенной задачи начинается с предварительной оценки потенциалов:
^+1 = тп(тп(с,,п+1 - u,,i = 1 п) Сп+1,п+1), ^+1 = т п(сп+1,У - ^, У =1,п).
^ У
Далее выполняется итерация назначения алгоритма венгерского метода для строки п +1 расширенной матрицы. Однако в случае реоптимизации решения изменяться могут произвольные элементы матрицы задачи с сохранением ее размера. Очевидно, что можно выделить строки, в которых изменены элементы, и повторить итерации назначения для таких строк.
Можно заметить, что изменение элементов матрицы влечет необходимость пересмотра результата оптимизации, если только меняется позиция нулевого элемента после операции приведения. Действительно, увеличение элемента с^ ^ с* матрицы задачи (2), когда х^ = 0, не
меняет решения для любых i е 1, ш, У е 1, п . Аналогично, уменьшение элемента с^ ^ с*, когда
хр = 1, не нарушает соотношения ср = ui + V. в задаче (2).
В других случаях, как несложно показать, требуется повтор итераций назначения лишь для строк
М' = {i | (с* > С У) л ( х„ = 0) V (с* < СУ) л (ху = 1), У = \п}, (4)
что влечет, как легко заметить, снижение вычислительной сложности пересчета задачи (1) на величину ^ш -|М*0(п2).
Изменение элементов матрицы должно отражаться значениями потенциалов, сбросом признака назначения соответствующей дуги графа и итерацией назначения строки. Если изменены элементы строки i', то ее потенциал должен быть скорректирован:
u, = шш(с,,/ - V/, У = 1, п). (5)
В случае изменения элементов столбца у' его потенциал также должен меняться: V:, = тт(сУ, - ui, i = 1, ш). (6)
у i у
Очевидно, что выбор между строкой или столбцом измененного элемента для реопти-мизации решения определяется схемой алгоритма. Если применена схема итерации по строкам (рис. 1), то необходимо получить список строк, для которых столбцы не назначены. Проще всего такой список получить посредством проверки условия г. < ш, У = 1,п (рис. 2).
1:е1[р1асе сгзз> тс^а 1АР<ссз1;>: :сс1 (1ш; Л
(1гл ±=0; ---) 1з_т1и(л, с ) ;
1:е1[р1асе -;-:1£зз сгзз> // нэжыение эпежнтв мат^-и^ы задачи тгг^с! 11АР<сгзз> : : зе1: (^лt л ., ^г.т , ;гзз х) { с ;±*п+□; =х;
"--(:;;
- : =~; 1ар (Л-: ;
Рис. 2. Функции реоптимизации решения задач о назначении
Реоптимизация задачи с прямоугольной матрицей, когда т < п, должна учитывать факт включения столбцов в текущее назначение. Изменение элементов для не назначенных столбцов не требует пересчета.
В общем случае коррекцию элементов матрицы удобно проводить групповым методом, совмещая операции обработки подвергшихся изменению строк и столбцов. Однако в некоторых случаях схема исходной задачи предопределяет номер строки, что будет показано далее.
Применение реоптимизации для решения задачи выбора
Исключение этапа инициализации применимо, как следствие, для решения комбинаторной задачи выбора вида
т1п 1X X срхР
\геМ ]=1
X ху = X ху = 1; ху > 0; / е М, ] = 1, п, М с 1, п \, (7)
шМ ]=1 I
когда решение ЛЗН вида (2) дополнено необходимостью выбора из множества сочетаний индексов исходной матрицы задачи [3, 4].
Прямолинейный способ решения задачи (7) - перебор среди ЛЗН для всех возможных сочетаний. Вычислительная сложность такой процедуры имеет оценку С-0(п3) . При перечислении сочетаний естественно использовать взаимозависимость последовательно порождаемых ЛЗН и возможность наследования решений задач вида (2) [4]. В этом случае пересчет потребуется лишь для измененных строк матрицы очередного сочетания.
Предпочтительным методом порождения сочетаний для задачи (7) является метод «вращающейся двери» с одиночным расстоянием Хэмминга между множествами М* и М*к+1,
к = 1, Ст [5]. Это означает изменение одной строки матрицы очередной ЛЗН и приводит к выполнению условия М*| — 1, к > 1.
Таким образом, вычислительная сложность процедуры решения задачи (7) будет иметь оценку С"т - 0(п2). Это на порядок лучше оценки для прямолинейной реализации схемы полного перебора ЛЗН для всех сочетаний, рассматриваемых независимо. Замена схемы полного перебора на более экономную схему не влечет сокращения времени решения задачи, так как схема порождения сочетаний здесь отражается первым сомножителем.
Поиск глобально оптимального варианта среди множества ЛЗН уместно проводить с прерыванием анализа вариантов, которые наверняка будут хуже лучшего варианта из просмотренной последовательности. Установление бесперспективности варианта для некоторых ЛЗН предлагается проводить, используя оценки нижней границы целевой функции в процессе решения. На основании теории двойственности, нижняя оценка целевой функции г] на итерации q решения ЛЗН венгерским методом определяется выражением
т п
гq =Х и +Х V], (8)
<=1 ]=1
где и], - значения потенциалов строк и столбцов на итерации ]. Если г] > Хггс, где 2гсс -
значение целевой функции лучшего из просмотренных вариантов, то итерации анализа рассматриваемой ЛЗН можно прекратить. Так как на последней итерации нижняя оценка целевой функции совпадает с оценкой оптимального решения, то выражение (8) эффективнее для вычисления по сравнению с прямолинейной реализацией выражения (1).
Однако перебор уместен при наличии дополнительных ограничений на правила образования сочетаний. Наивная схема перебора для решения задачи (7) при отсутствии таких ограничений может быть исключена, если использовать рекуррентный алгоритм реализации венгерского метода решения ЛЗН с итерацией по строкам (рис. 1).
Процесс решения ЛЗН с матрицей размером т х п в этом случае соответствует итерациям добавления строк в последовательности задач
I k п
т1п 1Е Е с»х-
I >=1 7=1
V 7
Е х7=Е ху =1 х7 -0;1=1к, 7=1п г , к=1 т.
(9)
7=1
При этом т < п, но если транспонировать матрицу задачи (9), то получаем случай (1) с учетом замены содержательного смысла индексов строк и столбцов матриц. Вычислительная сложность решения задачи (9) оценивается величиной 0(пъ).
=1
Применение реоптимизации для решения задачи коммивояжера
Конкретизируем схему пересчета ЛЗН [1] при использовании метода ветвей и границ для решения точного решения асимметричных задач коммивояжера [5]. Формальная модель задачи коммивояжера имеет вид:
п п _
Е хУ =Е хР=1 хР - г',7=1,п;
1=1 7=1 Г (1°)
и. -и7 + пх77 < п-1, 1 = 2,п, 7 = 2,п, 1 Ф 7
I 7 у 7 7 7,/ 77 ,/
Алгоритм метода ветвей и границ может быть реализован разными способами, различающимися правилами порождения ветвей дерева вариантов. Наиболее успешным для решения задачи (10) оказывается подход, базирующийся на решении ЛЗН, анализе получающихся замкнутых циклов и, если таких циклов более одного, последующем переборе вариантов разрыва циклов. Рекурсия обхода дерева строится на матрице расстояний, где разрывы циклов задаются назначением бесконечных значений длин запрещаемых дуг.
Процесс релаксации в узле дерева вариантов задачи коммивояжера связан с установкой бесконечных значений элементов матрицы ЛЗН. Очевидна возможность частичного наследования предшествующего решения. Реализацию ветвления на уровне 1 дерева вариантов задачи
коммивояжера предлагается проводить на векторе решения R1 = {/1 х^ = 1, 7 = 1,п|.
Можно заметить, что если к - некоторая вершина решения задачи (2), то последовательность
К1 (к) = {к (0) = к, (к (1) = ^ (,-1) К (0 Ф к)} С ^
только тогда соответствует гамильтонову циклу, когда условием остановки является К(п -1) = к , к е 1,п. Если цикл не гамильтонов, т.е. К1 (к) с R1, то необходимо породить множество задач уровня 1 +1. Для этого следует указать цикл минимальной длины, выбрав вершину входа в цикл
к1 = а^тт {К1 (к)|, к е 1,п|.
Правило порождения ЛЗН тривиально - для каждой вершины обнаруженного цикла необходимо запретить посещение других вершин этого цикла. Количество порождаемых ЛЗН -
К1 (к1 )|. При этом матрица очередной ЛЗН отличается от предыдущей одной строкой, в которой часть элементов заменяются значением, не меньшим значения
Стах = таХ К : 1 Ф 3, 1 = 1 п, 7 = 1 п} .
Построчное изменение матриц проводится по следующему закону:
7 = с7 + Стах (1 е К1 (к1 )л7 е К1 (кк1)) , 1,] = Щ . (11)
ЕЕ<
>=1 7=1
т1п 1Е Е сух13
Из выражения (4) следует, что релаксация на множестве ЛЗН при решении задачи коммивояжера методом ветвей и границ соответствует условию \М *| = 1, т = п . Последнее объясняет сокращение времени решения задачи коммивояжера в п раз.
Из (11) следует, что изменение элементов матриц в любом узле дерева вариантов производится только путем увеличения значения. Учитывая, что потенциал измененной строки будет уточняться на итерации пересчета, предварительное уточнение потенциалов не требуется.
Экспериментальная оценка времени решения задач
В таблице приведены результаты экспериментальной оценки среднего времени решения ЛЗН и реоптимизации результатов решения после изменения одного из случайно выбираемых элементов матриц. Размеры матриц случайных исходных данных, генерируемых по равномерному закону распределения, - п=500.. .5000, т = п / 2 .
Оценка времени реоптимизации и независимого решения задач о назначении
Размерность, задачи ( m x n ) Среднее время решения, мсек (Celeron 1,7 Ггц, 512 Мбайт)
Реоптимизация Метод SAP [1] Венгерский метод
250x500 0,533 19,167 14,167
500x100° 0,533 98,867 86,000
750x1500 1,033 279,567 344,867
1000x2000 2,033 587,800 757,867
1250x2500 3,067 1088,267 1438,400
1500x3000 5,633 1787,267 2509,767
1750x3500 5,633 2745,167 4044,633
2000x4000 32,200 4006,067 6165,533
2250x4500 33,767 5579,000 8810,333
2500x5000 34,800 7521,700 12043,167
Предложенный алгоритм реоптимизации использует значения потенциалов строк и столбцов предыдущего решения, которые формируются алгоритмом венгерского метода (рис. 1). Результаты эксперимента подтверждают ожидаемое преимущество реоптимизации перед прямолинейным пересчетом, реализуемым даже на основе лучшего среди известных методов решения ЛЗН метода SAP. Алгоритм метода SAP [1] в явном виде значения потенциалов не формирует, поэтому реоптимизация на его основе требует отдельного рассмотрения.
Заключение
Таким образом, реоптимизация решения ЛЗН - эффективный прием решения последовательно возникающих задач. Сокращение времени получения оптимального решения в первом приближении пропорционально объему локальных изменений данных задачи. Дополнительная память для хранения наследуемых значений потенциалов строк и столбцов не превышает объема O(m + n). При этом сохраняется возможность прерывания итераций расчета после установления бесперспективности текущего варианта относительно ранее рассмотренных.
REOPTIMIZATION OF THE LINEAR ASSIGNMENT PROBLEM
MP. REVOTJUK, P.M. BATURA, A.M. POLONEVICH
Abstract
The problem of the solution of sequence of the linear assignment problems, the initial data different by minor alteration is considered. Inheritance of the result's data of previous problems and its reoptimization allows to decreasing time of reception of the new solution. The algorithm of reoptimization, based on a Hungarian method, is offered.
Литература
1. Jonker R., VolgenantA. // Computing, 1987. Vol. 38. P. 325-340.
2. Fischetti M., Lodi A., Toth P. et al. // The Traveling Salesman Problem and its Variations. 2002. P. 169-194.
3. Turkensteen M., Ghosh D., Goldengorin B. et al. // European Journal of Operational Research. 2007. Vol. 189. P. 775-788.
4. Toroslu I.H., Ügoluk G. // Information Sciences 2007. Vol. 177. P. 1523-1529.
5. Ревотюк М.П., Полоневич А.М. // Сетевые компьютерные технологии: Сб. тр. III Межд. науч. конф. (Минск, 17-19 октября 2007 г.) Минск. 2007. С. 58-63.