КОМПЬЮТЕРНЫЕ _
УДК 719.161
ПОЛИНОМИАЛЬНОЕ ПРЕОБРАЗОВАНИЕ В ПРИБЛИЖЕННЫХ АЛГОРИТМАХ РЕШЕНИЯ ЗАДАЧ ТИПА КОММИВОЯЖЕРА
ГАРАЩЕНКО И.В., МАЦИЙ О.Б., ПАНИШЕВ А.В.
Предлагается подход к повышению точности приближенных решений для класса задач типа коммивояжера.
Введение
Целью данного исследования является разработка алгоритма симметричной задачи класса коммивояжера с матрицей стоимости, характеризующейся большим числом одинаковых значений.
Для достижения поставленной цели решены следующие задачи:
1. Построены приближенные симметричные задачи коммивояжера с матрицей стоимостей, содержащей большое число равных или близких друг другу значений.
2. Разработан алгоритм, благодаря которому открывается возможность за полиномиальное время существенно повысить точность симметричной задачи клас -са коммивояжера большой размерности.
3. Получены результаты для симметричной задачи коммивояжера.
Основное содержание исследования
Каждую задачу типа коммивояжера можно представить как комбинаторную оптимизационную задачу о перестановках, определяемую тройкой (P,X,f), элементы которой обозначают следующие объекты [1,2].
1. Р - пространство решений: множество всех цикли-
ческих перестановок т = ([1], т[2], ..., т[п]) множества {1, 2,..., п}. Обходу т соответствует маршрут коммивояжера в виде последовательности (т[1], т[2], ..., т[п], т[1]) различных номеров
т[1], т[2], ..., т[п] элементов 1, 2,., п.
2. Х - пространство параметров, каждый элемент которого х является квадратной матрицей стоимостей [dij]n порядка n, dij є Rq , i Ф j, йц =ж , i, j = 1,n,Rq - множество неотрицательных действительных чисел.
3. f - функционал стоимости: f: PxO ^ Rq , где f = (t, x) - стоимость решения т при значении параметра х.
Оптимальным для значения параметра х является решение т* є P, такое, что для всех те P f (т*, x) < f (т, x) в случае минимизации функционала f и f(x*,x) > f( т, x) - в случае его максимизации.
Наличие дополнительных ограничений в условиях задачи сужает пространство решений Р, а показатель эффективности f и значение параметра х индуцируют её свойства.
Большинство прикладных задач типа коммивояжера являются NP-трудными. Статус труднорешаемости задачи означает, что для нахождения её точного решения применимы только переборные методы, требующие на практике значительных вычислительных ресурсов. Они не гарантируют нахождение оптимума в установленном временном промежутке и поэтому зачастую оказываются непригодными в системах реального времени.
Альтернативой точным переборным методам являются эффективные приближенные методы, строящие допустимое решение с приемлемой точностью. Известные приближенные алгоритмы для задач типа коммивояжера можно условно разбить на две группы. К первой группе относятся процедуры, реализующие стратегию пошагового построения допустимого обхода с помощью простых решающих правил. Вторая группа представлена алгоритмами, определяющими решения оптимизационных задач на графах, которые затем преобразуются в маршрут коммивояжера. В предлагаемом способе построения алгоритмов второй группы преобразование графовой задачи в обход отличается от известных преобразований.
Назовем симметричной задачей класса коммивояжера (СЗКК) задачу (P,X,f) с матрицей стоимостей [dij]n, в которой dij = dji , i ф j, dii =с» ,
i, j = 1, П. Ей отвечает полный взвешенный граф G = (V, E) с множеством вершин V, |V| = п, и множеством ребер Е, |E| = (1/2)п(п-1), где ребру {i,j} приписан вес dij = dji. Допустимым решением СЗКК является обход, стоимость которого определяется из
матрицы [dij ]п и выражения для функционала стоимости f. В СЗКК с матрицей стоимостей порядка п
|P| = (п -1)!.
Основной результат в данной работе получен для симметричной задачи коммивояжера (СЗК), в которой, как известно, минимизируется функционал
D(H = £ dh[1] . i=1
Будем строить приближенные СЗК с матрицей стоимостей [dij ]п , содержащей большое число равных
РИ, 2007, № 1
45
или близких друг другу значений dij. Такое решение находится при использовании определения i-дерева, обобщающего известное определение 1-дерева [3, 4].
Под i-деревом T = (V,Ei) будем понимать подграф полного графа Gn = (V, E), который содержит дерево, стягивающее множество вершин V\{i}, и два ребра, инцидентные вершине i, і є {1,2,..., n}, |V| = n. Рассмотрим особенности i-дерева Т, открывающие возможность уменьшения погрешности приближенных алгоритмов СЗКК.
В i-дереве Т обозначим 5^ , k = 1, n, степень вершины k. Множество его вершин V представим разбиением на три подмножества V, V2, V3, где Vj - множество вершин с единичной степенью (висячих вершин), V2 - множество вершин со степенью 2, а V3 = V\(V1 u V2).
Лемма. Для любого i-дерева графа Gn = (V, E), \V\ = = n, i є {1,2,..., n}, n > 3, справедливо равенство
|Vl| = E max{8k - 2,0}. (1)
k=1
Доказательство. В i-дереве графа Gn число ребер равно |V|. В любом графе сумма степеней вершин равна удвоенному числу ребер. Поэтому для i-дерева
2 | V | = 2(|V1| + |V2| + |V3|) = E8k .
k=1
Тогда
| V11=( ESi-1V11) + ( Е8і-1V21) + ( Е8і-1V31) =
ieV1 i^V2 ieV3
= E (8i - 2) = E max{Sk - 2,0}.
ieV3 k=1
В i-дереве графа Gn = (V,E), представленном гамильтоновым циклом, V2 = V. Любое i-дерево по определению содержит единственный цикл. Отсюда следует, что в i-дереве V2 ^0. Обратно, связный граф T = (V,Ei), |V| = | Ei | = n, в котором число вершин степени 2 меньше n, не является гамильтоновым. Кроме того, из (1) следует, что если в i-дереве Т
V3 Ф& , то и V1 Ф& . Заметим, что для любого i-дерева
графа Gn = (V,E) : 1<| V11<| V | -3.
На рис. 1, а представлено i-дерево с единственной висячей вершиной, а на рис. 1, б - i-дерево, содержащее |V| - 3 висячих вершин.
Рис. 1. i-дерево с единственной висячей вершиной (а); i-дерево^содержащее |V| - 3 висячих вершин (б)
Пусть T = (V,E)- связный подграф полного графа Gn = (V,E), | V| = |Ei | = n. Назовем операцией 1-замены в Т замену ребра из Ei на ребро из Е - Ei, преобразующую Т в связный граф с единственным циклом и с числом висячих вершин на единицу меньшим, чем в Т.
Покажем, что преобразование i-дерева T = (V, Ei) в гамильтонов цикл полного графа Gn можно выполнить операциями 1 -замены за полиномиальное время.
Каждое ребро (k,l) i-дерева представим упорядоченной парой (5k, 61), где 5k, 61 - степени вершин k, l в Т, 5k < 61, k,le{1,2,..,n} . В Т выделим левую и правую цепи, начинающиеся в вершине i. Каждая цепь заканчивается первой вершиной, степень которой больше 2. Обозначим последнее ребро левой цепи (5k,61), 5k = 2, 51 >2, а последнее ребро правой цепи (8j,8m),8j = 2 ,sm >2 (рис. 2).
V
аб
Рис. 2. Последнее ребро левой цепи (а); последнее ребро правой цепи (б)
i-Дерево Т преобразуется в гамильтонов цикл полного графа Gn = (V, E) в результате выполнения следующей процедуры.
50. В i-дереве T = (V,Ei), | Ei | = n , найти последнее ребро (5k,50 или последнее ребро (8j, 8m) правой цепи. Построить последовательность E' из всех ребер (5r, 5s), в которых Sr ^ 2, 5S > 2 , следующим образом: в E' первым следует ребро (5k, 61) или (8j,8m), а остальные компоненты последовательно последовательности E' располагаются в произвольном порядке. Ei - список из n ребер i-дерева Т, E' с Ei.
51. Пока | E' |<| Ei | -1, выполнять:
удалить из E' компоненту (5r, 5s);
положить 5s =5s -1 в каждой компоненте множества E\(5r,5s), содержащей 5s;
найти ребро (Sp, 5q) , для которого 8р = 1; положить 8р =5r = 2, E'= E'u (5r,5q),
|E'|=|E'|+1;
расположить компоненту (Sr,5p) на место удаленной пары (5r, 5s);
определить цепь (p,q,...,t, w), в которой
8р = 8q = •••= 8t = 2, 8w > 2; установить r = t, s = w .
46
РИ, 2007, № 1
S2. По построенному множеству E' определить гамильтонов цикл.
На шаге S0 формируется последовательность E' ребер (5r, 5s), 5r > 2,5s > 2, которая начинается либо с последнего ребра (5k, 5j) левой цепи, либо с последнего ребра (Sj,Sm) правой цепи, Sk =5j = 2, Sj, 8m > 2. Первым удаляемым ребром в цикле S1 является одно из них. Удаляемой компоненте (8r, 5 s), Sr = 2 , 5s > 2 , сопоставляется висячая вершина р ребра (Sp, 8q) с Ej \ E'. Вершины r и p определяют ребро (§r,Sp), Sr =Sp = 2, добавляемое в E' из E - Ej. Очередная компонента, исключаемая из полученной последовательности E', находится прохождением по цепочке (p,q,...,t,w) ребер, в которой Sp = Sq =... = 81 = 2,5w > 2 . Удалению подлежит ребро (St,5w). Если Sq > 2, то цепочка является парой (p, q). Шаг S1 завершается при достижении равенства | E' |=| Ej | построением множества E' ребер, образующих гамильтонов цикл.
Теорема. Подграф полного графа Gn = (V,E), представленный i-деревом T = (V,Ej), |V|=|Ej = n|, i є {1,2,..., n }, корректно преобразуется в гамильтонов цикл за время O (n | Vi |), где | Vi | - число висячих вершин в Т.
Доказательство. Покажем, что гамильтонов цикл строится в результате выполнения на шаге S1 | V1 | операций 1 -замены с трудоемкостью каждой O (n).
При удалении последнего ребра (Sr,5s), 5r = 2, Ss > 2, левой или правой цепи разрывается единственный цикл i-дерева Т. Полученный в результате граф оказывается деревом с числом висячих вершин |V11 +1. Связав ребром висячие вершины p иг, получим компоненту (Sr,Sp), 5r = Sp = 2, увеличивающую на единицу мощность множества E', и граф, содержащий единственный цикл и | V11 -1 висячих вершин.
Построенный граф содержит дерево, стягивающее множество вершин V \ {p}, и пару ребер, инцидентных вершине р: (Sp,Sq), (5r,Sp), 5r =Sp = 2. По определению он является р-деревом графа Gn = (V,E), в котором число висячих вершин на единицу меньше, чем в i-дереве Т. Тогда одно из ребер (Sp,Sq) или (Sp,Sr) можно рассматривать как первое ребро левой цепи, а другое ребро - как первое ребро правой цепи с начальной вершиной р. Отсюда следует, что операция 1 -замены для р-дерева строит некоторое v-дерево графа Gn = (V, E), содержащее | V11 -2 висячих вершин. Таким образом, на шаге S1 выполняется точно
| V11 операций 1-замены, преобразующих i-дерево Т в гамильтонов цикл. На выполнение каждой из них требуется время, оцениваемое величиной O (n) .
Предложенную процедуру будем использовать как одну из стадий построения приближенного решения СЗК.
Обозначим Ti i-дерево минимальной стоимости в полном взвешенном графе G = (V,E), | V |= n. Для его построения найдем в полном взвешенном графе с множеством вершин V\{i} минимальное остовное дерево (МОД) и добавим к нему пару ребер с наименьшими весами, инцидентных вершине i. Стоимость d(Ti) дерева Ti, равная сумме входящих в него ребер, является оценкой снизу стоимости оптимального решения т * СЗК: d(Ti) < D(x*), i = 1,n.
Трудоемкость нахождения дерева Ti оценивается временем работы градиентного алгоритма построения МОД, например, алгоритма Прима [5]. Известно, что
МОД графа G = (V, E) можно получить за время
O(| E | log | E |) .
Сформулируем СЗК в терминах введенных понятий.
Пусть построено дерево Tv = (V,Ev), v є {1,2,..., n}, в полном взвешенном графе G = (V,E) с весами (стоимостями) ребер {i, j}, i, j = 1, n, dij ^ 0, i Ф j, dij = “ . Каждое ребро { k, l} дерева Tv представим парой (5k,5j) , где 5k,5j — степени вершин k, l в Tv > 8k <Sj, k,lє{1,2,...,n}. Требуется найти в дереве Tv все такие ребра, замена которых на ребро из G преобразует Tv в маршрут коммивояжера минимальной стоимости, представленный n парами (Sx,Sу), Sx =Sy = 2, x = 1,n, у є {1,2,...,n}, x Ф у.
Ясно, что такая формулировка не приводит к простому и быстрому способу построения оптимального решения. Преобразование дерева Tv в обход минимальной стоимости х * в силу NP-полноты рассматриваемой задачи остается в лучшем случае ограниченным перебором множества всех маршрутов коммивояжера Р. Однако с помощью конечного числа операций 1 -замены, определяемого соотношением (1), можно получить приближенное решение xv за время, соизмеримое с временем построения Tv .
Обозначим n (v) число висячих вершин в дереве Tv , v = 1,n . Если в результате нахождения дерева Tv построен маршрут коммивояжера, то он является решением СЗК, т.е. в случае n(v) = 0, v є {1,2,...,n}, получим d(Tv) = D(x*), x* = Tv.
Матрица стоимостей [dij]n , в которой не все элементы dj i *j , принимают различные значения, в общем случае порождает несколько v-деревьев минимальной стоимости, отличающихся числом висячих вершин. Очевидно, среди них предпочтительнее то v-
дерево, у которого n (v) минимально. Построение такого дерева можно выполнить с помощью модификации процедуры нахождения МОД, включающей способ сдерживания роста степеней его вершин.
РИ, 2007, № 1
47
Алгоритм построения приближенного решения Xv СЗК состоит из двух стадий.
На первой стадии строится дерево Tv . Его стоимость d(Tv) = Z dij
(і,І)єТу .
На второй стадии выполняется процедура преобразования v-дерева Т = (V,Ev), соответствующего Ту , в гамильтонов цикл полного графа Gn = (V,E), соответствующего полному взвешенному графу G. Стоимость полученного решения xv равна сумме весов ребер графа G, входящего в гамильтонов цикл графа Gn :
D(Tv) = d(Tv) - Z dij + Z dkl,
{i,j}eEy {k,l}eEy
где E~ - множество ребер, уделенных из Ev ; Ey -множество ребер графа Gn, добавленных к Ev - E“,
| Ey |=| Ey |= n(v). Так как в любом градиентном алгоритме построения МОД ребро с наименьшим весом dmin графа G включается в Tv , а в результате выполнения второй стадии оно может быть заменено на ребро с наибольшим весом dmax в G, то в худшем случае
D(Xv) = d(Tv) + n(v)(dmax - dmin) . (2)
Из (2) следует, что предложенный алгоритм обеспечивает невысокую погрешность СЗК в случае незначительного расхождения между элементами матрицы стоимостей, т.е. тогда, когда применение метода ветвей и границ связано с предельными объемами вычислительных ресурсов [1].
Можно попытаться улучшить приближенное решение СЗК, полученное изложенным способом, путем построения и преобразования каждого дерева Ti в обход Xi, i = 1, n. Искомым результатом является решение
стоимостью D(x„) = min D(xi).
1eien
Его относительная погрешность вычисляется по формуле
0 1 2 3 4
1 (89 = 2,86 = 4) (69 = 2,51 = 2) (69 = 2,81 = 2) (S9 = 2,81 = 2) (S9 = 2,81 = 2)
2 (85 = 2,86 = 4) (65 = 2,56 = 3) (85 = 2,86 = 3) (85 = 2,86 = 2) (85 = 2,86 = 2)
3 (88 = 2,86 = 4) («8 = 2, S6 = 3) (88 = 2,86 = 3) (88 = 2,86 = 2) (88 = 2,86 = 2)
4 (87 = 3,86 = 4) (87 = 3,86 = 3) (87 = 2,86 = 3) (87 = 2,82 = 2) (87 = 2,82 = 2)
5 (85 = 2,8 4 = 3) (85 = 2,84 = 3) (85 = 2,84 = 3) (85 = 2,84 = 3) (85 = 2,84 = 2)
6 (88 = 2,810 = 2) (88 = 2,810 = 2) (88 = 2,810 = 2) (88 = 2,810 = 2) (88 = 2,810 = 2)
7 (89 = 2,810 = 2) (89 = 2,810 = 2) (89 = 2,810 = 2) (89 = 2,810 = 2) (89 = 2,810 = 2)
8 (81 = 1,87 = 3) (81 = 2,87 = 3) (81 = 2,8П = 2) (81 = 2,8П = 2) (81 = 2,8П = 2)
9 (82 = 1,84 = 3) (S2 = 1,84 = 3) (82 = 1,84 = 3) (8 2 = 2,84 = 3) (S2 = 2,83 = 2)
10 (83 = 1,84 = 3) (83 = 1,84 = 3) (83 = 1,84 = 3) (83 = 1,84 = 3) (83 = 2, S4 = 2)
11 (8П = 1,87 = 3) (8П = 1,87 = 3) (8П = 2,87 = 2) (8П = 2,87 = 2) (8П = 2,87 = 2)
д= D(y) - d(TM) d(TM) ,
где d(TM) = max d(Ti).
1<i< n
Пример. Преобразуем 10-дерево T = (V,Ei0) полного графа Gn = (V,E), изображенное на рис. 3, в гамильтонов цикл. Поскольку 10-дерево Т содержит 4 висячие вершины, то 4 ребра из 11 его ребер будут заменены на ребра из E - E10 .
Рис. 3. 10-дерево T = (V,E10) полного графа G11 = (V,E)
В Т определим левую цепь (10, 9, 6) и правую цепь (10, 8, 6). Последовательность E' может начинаться с любой компоненты: (9,6) или (8, 6). Пусть в E' первым следует ребро (9, 6). На шаге S0 формируем последовательности e' и E10, элементы которых сведены в столбец 0 таблицы.
Последовательность E' состоит из всех компонент (5Г, 5S),где 5r,5s > 2 . Она начинается с пары (59, 56), 59 =2 , 56 =4, и заканчивается парой (59, 510), для которой 59=510=2.
После удаления в цикле из E' компоненты (89,&6) устанавливаем S6 = 3 для всех компонент множества Ею \ (89,86), получив в результате три компоненты с уменьшенным на единицу значением 86 : (87 = 3, §6 = 3), (85 = 2,86 = 3), (88 = 2,86 = 3). Выбираем любое из четырех ребер, инцидентное висячей вершине, например, ребро (81 = 1,87 = 3). Для соот-
48
РИ, 2007, № 1
ветствующего ему удаленного ребра (9, 6) полагаем 8j =89 = 2 . Размещаем ребро (89, Sj) на место компоненты (89,8б). В результате выполненной операции 1-замены получим граф, изображенный на рис. 4, а. Пунктирной линией обозначено удаленное ребро, а утолщенной - добавленное.
а
б
Рис. 4. Граф, полученный в результате выполнения операции 1-замены (а); результирующий граф (б)
Определяем цепь (1, 7), где 8j = 2, S7 = 3 .
Повторяем действия цикла, теперь для компоненты (Sj = 2,87 = 3) в преобразованном списке E'. После ее удаления получим пары (87 = 2,8б = 3), (8ц = 1,87 = 2). Возьмем любое ребро из трех ребер (811 = 1,87 = 2), (82 = 1,84 = 3), (§з = 1, 84=3), представляющих текущее подмножество Б; = E', например, ребро (811 = 1,87 = 2). Полагаем 8ц = 2, 81 = 2, Б' = Б' и (81,8ц). В результате получим граф, представленный на рис. 4, б.
Очередная операция 1 -замены начинается после определения цепи (11, 7, 6), конечная вершина которой имеет степень, большую 2, а остальные вершины 11, 7 - степень 2. В цепи находим удаляемое ребро (87 = 2,8б = 3).
Окончательный результат преобразования 10-дерева Т в гамильтонов цикл, представленный на рис. 5, получен после замены ребра (87,8б) на ребро (87,87) и ребра (82,84) на ребро (82,83).
Рис. 5. Результат преобразования 10-дерева Т в гамильтонов цикл
Заключение
Рассмотрен подход к повышению точности приближенных решений для класса задач типа коммивояжер а.
Научная новизна и практическая значимость результатов данного исследования состоит в том, что благодаря рассмотренному подходу открывается возможность за полиномиальное время существенно повысить точность СЗКК большой размерности для тех случаев, когда применение точных переборных методов оказывается проблематичным.
Литература: 1. Теория расписаний и вычислительные машины / Под ред. Э.Г. Кофмана. М.: Наука, 1984. 334 с. 2. Панишев А.В., Плечистый Д.Д. Модели и методы оптимизации в проблеме коммивояжера. Житомир: ЖДТУ, 2006. 306с. 3. Сигал И.Х., Иванова А.П. Введение в прикладное дискретное программирование. М.: Физматлит, 2002. 237с. 4. Гаращенко И.В., Панишев А.В., Плечистый Д. Д. Приближенный алгоритм решения симметричной задачи коммивояжера // Искусственный интеллект. 2006. № 3. С. 371-378. 5. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. МЦНМО, 200. 960 с.
Поступила в редколлегию 03.02.2007
Рецензент: д-р физ.-мат. наук, проф. Ляшенко Б.Н.
Гаращенко Ирина Владимировна, аспирантка кафедры информатики и компьютерного моделирования. Адрес: Украина, 10005, Житомир, ул. Черняховского, 103, тел. 8(0412) 37-46-17, e-mail: org_giv1@ us.ztu.edu.ua
Маций Ольга Борисовна, ассистент кафедры информатики Харьковского национального автомобильно-дорожного университета. Адрес: Украина, 61002, Харьков, ул. Петровского, 25, тел. 8 (0572) 707-37-74, e-mail: om@ khadi.kharkov.ua
Панишев Анатолий Васильевич, д-р техн. наук, профессор, зав. кафедрой информатики и компьютерного моделирования Житомирского государственного технологического университета. Адрес: Украина, 10005, Житомир, ул. Черняховского, 103, тел. 8 (0412) 37-46-17.
РИ, 2007, № 1
49