Научная статья на тему 'ПРИБЛИЖёННОЕ РЕШЕНИЕ ЗАДАЧИ КОММИВОЯ ЖЕРА МЕТОДОМ РЕКУРСИВНОГО ПОСТРОЕНИЯ ВСПОМОГАТЕЛЬНОЙ КРИВОЙ'

ПРИБЛИЖёННОЕ РЕШЕНИЕ ЗАДАЧИ КОММИВОЯ ЖЕРА МЕТОДОМ РЕКУРСИВНОГО ПОСТРОЕНИЯ ВСПОМОГАТЕЛЬНОЙ КРИВОЙ Текст научной статьи по специальности «Математика»

CC BY
901
156
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
ЗАДАЧА КОММИВОЯЖЁРА / ПРИБЛИЖЕННОЕ РЕШЕНИЕ

Аннотация научной статьи по математике, автор научной работы — Дулькейт Владимир Игоревич, Файзуллин Рашит Тагирович

Предлагается эвристический алгоритм решения «задачи коммивояжёра», дающий приближённое решение

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Approximate solution of the traveling salesman problem

A heuristic algorithm for the approximate solution of traveling salesman problem is proposed in the article.

Текст научной работы на тему «ПРИБЛИЖёННОЕ РЕШЕНИЕ ЗАДАЧИ КОММИВОЯ ЖЕРА МЕТОДОМ РЕКУРСИВНОГО ПОСТРОЕНИЯ ВСПОМОГАТЕЛЬНОЙ КРИВОЙ»

ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА

2009

№1(3)

УДК 519.7

ПРИБЛИЖЕННОЕ РЕШЕНИЕ ЗАДАЧИ КОММИВОЯЖЕРА МЕТОДОМ РЕКУРСИВНОГО ПОСТРОЕНИЯ ВСПОМОГАТЕЛЬНОЙ КРИВОЙ

В. И. Дулькейт, Р. Т. Файзуллин Омский государственный технический университет, г. Омск E-mail: vidulkeyt@mail.ru

Предлагается эвристический алгоритм решения «задачи коммивояжёра», дающий приближённое решение.

Ключевые слова: задача коммивояжёра, приближенное решение.

Введение

Задача коммивояжера является важной и трудно решаемой [1]. Она возникает в обширном классе приложений, включая распознавание траекторий и образов, построение оптимальных схем движения и др. Наиболее распространённый частный случай (он же считается наиболее простейшим) — задача коммивояжера с евклидовой метрикой. В этой постановке её можно сформулировать следующим образом: пусть на плоскости задано множество точек (отметок) Ак (к = 0,...,п — 1), требуется найти перестановку отметок Бг, такую, что достигает минимума сумма:

где ¿(А, Б) — евклидово расстояние между точками А и Б.

В терминах теории графов [2] задача может быть сформулирована так: имеется полный взвешенный граф, в котором вес каждого ребра равен евклидовому расстоянию между соответствующими вершинами. Задача состоит в нахождении гамильтонова цикла, для которого сумма весов его рёбер минимальна.

Задача коммивояжера является МР-полной [1], поэтому алгоритмы решения этой задачи делятся на две группы: точные и приближенные. Все точные алгоритмы фактически представляют собой оптимизированный полный перебор вариантов. В некоторых случаях эти алгоритмы достаточно быстро находят решения, но в общем случае приходится перебирать все п! циклов.

Из приближенных алгоритмов наиболее известен алгоритм «иди к ближайшему соседу» (ИБ). Идея этого алгоритма проста: начиная обход с произвольной вершины, на каждом шаге выбирается ближайшая из не пройденных ещё вершин. Этот алгоритм легко формализуем, для него показана сходимость по вероятности к оптимальному решению с ростом числа точек. Кроме того, существует верхняя оценка отношения результата алгоритма ИБ к точному решению [1].

к=0

1. Обзор существующих решений

В работе [3] рассматривается приближённый алгоритм, основанный на построении достаточно гладкой кривой, аппроксимирующей путь, во вспомогательном пространстве высокой размерности.

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

2. Приближённый алгоритм решения задачи коммивояжера

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

Воспользуемся подходом, описанным в работе [3]. Будем рассматривать функционал от 2п переменных:

п— 1 _________________________________

J(х0, . . . , Хп— 1, у0, . . . , Уп— 1) — У У /(x(k+1) modn xk)2 + (y(k+1) modn yk)2.

k=0

Задача коммивояжера сводится к задаче минимизации значения этого функционала на фиксированных парах координат.

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

a A)(X)—(:

где A - ленточная матрица с элементами:

1

A

к к

\J(х(к-1) modn хк)2 + (у(к-1) modn Ук)2

1

J (х(к+1) mod n - Xk)2 + (y(k+1) modn - Ук)2 ’

-1

Ак к±1 — —, —.

"у (х(к±1) modn хк)2 + (у(к±1) modn ук)2

Выражение (1) есть аппроксимация оператора краевой задачи на неравномерной сетке:

-?”(«)— 00’ 'X (0)— X'(2n),f' (0) — Y (2п), (2)

где X(t) и Y(t) суть некоторые гладкие периодические функции, которые в узлах сетки аппроксимации принимают значения координат отметок в порядке их следования по искомому пути.

Будем искать X(t) и Y(t) в виде

N

X (t) — Z ак Ук (t), к=0

N

Y(t) — z вк Ук (t),

к=0

где у к (¿) образуют семейство ортонормированных собственных функций оператора левой части (2), которым соответствуют собственные числа Лк.

Тогда условие (2) запишется в виде

Е акЛкУк(¿) = 0,

к=0 (4)

Е вк Лк Ук (^ = о. к=0

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

Итак, требуется найти функции X(¿) и у (¿) в виде (3), такие, что

1) в узлах сетки аппроксимации они принимают значения координат отметок, причём порядок, в котором отметки будут пройдены, заранее не известен;

2) коэффициенты из (3) должны доставлять минимум (среди всех возможных наборов коэффициентов, обладающих первым свойством) левой части выражения (4).

Пусть у к (¿) = егкь, тогда Лк = 1/к2, и для нахождения X (¿) и у (¿) можно использовать алгоритм быстрого преобразования Фурье (БПФ). При этом минимальная скорость убывания коэффициентов в левой части (4) будет порядка 1/к2.

На основе приведённых рассуждений можно построить рекурсивный алгоритм решения поставленной задачи.

Предположим, что на текущий момент вычислены к коэффициентов и известен некоторый порядок обхода отметок. На очередной итерации требуется скорректировать этот порядок, уточнить коэффициенты с учётом нового порядка обхода и вычислить (к + 1)-е коэффициенты (3).

Назовём параметризованную кривую, координаты точек которой суть значения функций X(¿) и у (¿), вспомогательной кривой (ВК). Опустим из отметок перпендикуляры к ВК и для каждой отметки выберем кратчайший перпендикуляр. Основания полученных перпендикуляров назовём отметочными точками (ОТ). Они однозначно сопоставляются отметкам, а значит, порядок их следования по ВК задаёт новый порядок обхода отметок. Этим обеспечивается выполнение первого условия.

Рассмотрим разности между координатами отметок и координатами ОТ. По ним с помощью метода линейной интерполяции можно построить функции АХ (¿) и АУ(¿), которые характеризуют, насколько значения функций X(¿) и у (¿) отличаются от координат отметок в узлах сетки аппроксимации. Выполним процедуру БПФ для функций АХ(¿) и АУ (¿) и отбросим коэффициенты с номерами, превосходящими к + 1. Тем самым будут получены уточнения для уже вычисленных коэффициентов и (к + 1)-е коэффициенты.

Заметим, что, зная текущую ВК (т.е. часть младших коэффициентов), можно определить порядок следования отметок и построить соответствующий путь. Тем самым будут определены старшие коэффициенты (3). Чем ближе известный порядок отметок к оптимальному решению, тем меньший вклад в левую часть (4) будут привносить старшие коэффициенты. Следовательно, критерием успешности текущей ВК будет длина цикла, построенного по порядку следования ОТ. Этот параметр легко отсле-

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

Основная проблема в предложенном алгоритме заключается в нахождении первоначального порядка отметок и нескольких младших коэффициентов. Можно предложить следующий эвристический метод решения этой проблемы: построить эллипс такой, что сумма квадратов расстояний от отметок до эллипса будет минимальной, и принять построенный эллипс за ВК. Тем самым будут определены первые два коэффициента из (3).

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

Приведём вкратце метод решения первой задачи [4]. Будем искать прямую в виде ax + by +1 = 0. Устремим к минимуму сумму квадратов расстояний от отметок до искомой прямой:

П— 1

Y (axk + byfc + 1)2 S(а, b) = —---- ——-----------> min.

а2 + b2

Введём следующие обозначения:

n— 1

n— 1

n1

n1

k=0

k=0

k=0

k=0

Приравниваем к нулю частные производные:

n1

A = J2Xkyk, X = Y1Xk, Y = Syk, X2 = Y1x2, y2 = Y1 у2

k=0

dS _ 2(b(b2 - a2)A + ab2(X2 - Y2) - 2abY + (b2 - a2)X - an) 5a a2 + b2

öS _ 2(a(a2 - b2)A + ba2(Y> - X2) - 2abX + (a2 - b2)Y - bn) 5b a2 + b2

0;

0.

0.

(5)

(6)

Учитывая конечность а и Ь, из (5) и (6) получаем

5$ ,5$ 2(аХ + + п)

“5^ + Ж = а2 + 62

Переносом начала системы координат можно добиться, чтобы X = 0, и тогда

Yn

a = - Xb - X-

Подставив (7) в (5), получаем уравнение для b:

+

+

A' ■ -(X

nY n2A

X

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

^- -XT b-

- X (X2 - Y2)

b3+

2Y2 Y

- +X 1 - X

2nYA n (X2 - Y2)

X2 X

b2+

0

В общем случае это уравнение имеет три корня, один из которых есть 6 = 0. Окончательный выбор корня можно сделать, вычислив для каждой пары а и 6 значение

Для нахождения полуосей эллипса р и д можно применить метод наискорейшего (градиентного) спуска [5]. Соответствующий итеративный процесс может быть таким:

где ро, д0, а, А и М — некие параметры алгоритма, а ¿(р, д) — сумма квадратов расстояний от отметок до эллипса с полуосями р и д.

Подводя итог сказанному выше, приведём алгоритм приближённого решения задачи коммивояжёра — Алгоритм 1.

Алгоритм 1. Приближённое решение задачи коммивояжёра

Вход: координаты отметок.

Выход: искомая перестановка отметок.

1: Построить начальную ВК на основе эллипса.

2: Цикл

3: Выполнить обратное БПФ для набора коэффициентов ВК, получив тем самым

координаты точек ВК.

4: Найти ОТ для текущей ВК. В простейшем случае это можно сделать, последо-

вательно просмотрев массив отметок и массив точек ВК, выбирая в качестве ОТ самую близкую к текущей отметке точку ВК.

5: Порядок следования отметочных точек задаёт некоторую перестановку отметок,

которая определяет гамильтонов цикл. Вычислить длину этого цикла.

6: Если длина цикла окажется минимальной из всех предыдущих, то

7: Запомнить соответствующую перестановку.

8: По динамике изменения длины цикла можно определить, когда завершить ите-

ративный процесс (например, при монотонном увеличении длины цикла на протяжении последних нескольких итераций).

9: Заполнить временные массивы (ВМ), число элементов в которых равно числу

точек ВК. ВМ заполняются следующим образом: в отметочных точках берётся разность между координатами отметки и соответствующих ОТ, остальные элементы ВМ получаем, проведя процедуру линейной интерполяции. Фактически в ВМ хранятся значения функций АХ (¿) и АУ (¿) в узлах некоторой сетки.

10: Применить прямое БПФ к ВМ, тем самым получим коэффициенты разложения

функций АХ(¿) и АУ(¿). Далее, коэффициенты с номерами больше I+2, где I - номер итерации и итерации нумеруются с единицы, положить равными нулю. 11: Сложить коэффициенты, полученные на предыдущем шаге, с коэффициентами

ВК, получив новый набор коэффициентов ВК.

12: Вернуть перестановку, соответствующую циклу минимальной длины (данная перестановка была получена на шаге 7 одной из итераций).

рі+1 — рі — а

Яі+1 — Яі — а

Ь(рі + Д,9і) - ¿(рі,9і)

А

¿(Рі,9і + А) - ¿(Рі,9і)

А

і — 0,..., М,

На каждой итерации данный алгоритм отбрасывает на один коэффициент меньше, чем на предыдущей. За счёт такого приёма удаётся адаптивно менять «направление

изменения формы» ВК. Поясним данный факт на примере. Допустим, перед началом итеративного процесса имеется некоторый эллипс, построенный на первом шаге. Далее, если сразу вычислить все коэффициенты, то полученная кривая будет просто представлять собой эллипс, по контуру которого «пустили» некоторую функцию. Причём там, где эта функция положительна, соответствующие точки кривой «выдвигаются наружу» по нормали к эллипсу, а там, где функция отрицательна, — «задвигаются внутрь» по той же нормали. Таким образом, видно, что «направление изменения формы» ограничено нормалями к исходному эллипсу. В то же время если использовать описанную процедуру, то форма кривой будет существенно меняться, поскольку «направление изменения формы» зависит от ВК предыдущей итерации и постоянно уточняется.

Для оценки сложности приведённого алгоритма предположим, что п — количество отметок, т — количество точек ВК, а к — количество новых коэффициентов, полученных на очередной итерации, т. е. на /-й итерации отбрасываются коэффициенты с номером больше чем к/ + 2.

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

где первое слагаемое есть оценка сложности прямого и обратного БПФ, второе — оценка сложности поиска отметочных точек, третье — трудоёмкость всех операций с отметками и отметочными точками (построение цикла, вычисление его длины и т.д.), четвёртое — трудоёмкость всех операций над точками и коэффициентами ВК (заполнение ВМ, отбрасывание коэффициентов). Если пренебречь трудоемкостью первого шага (он выполняется один раз) и отбросить наименее значимые величины, получим следующую оценку сложности всего алгоритма:

Вычислительные эксперименты показали, что для минимальной длины цикла значение т должно быть одной из ближайших к п степеней двойки. Поэтому с увеличением количества отметок второе слагаемое будет превалировать над первым. Следовательно, в Алгоритме 1 процедура поиска отметочных точек — наиболее «узкое» место в плане быстродействия.

Для ускорения работы алгоритма можно на каждой итерации отбрасывать на несколько коэффициентов меньше, чем на предыдущей, т. е. на I-й итерации отбрасывать коэффициенты с номером больше к1 + 2, где к — некоторый параметр алгоритма.

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

В таблице приведены следующие данные: точное решение [6], результаты работы Алгоритма 1 при к — 1, результаты работы алгоритма, описанного в работе [3], и результат алгоритма «иди в ближайший».

3. Оценка эффективности и трудоёмкости

20 (п 1о§2 т) + О (пт) + О (п) + О (т),

Сравнение результатов различных алгоритмов с известными точными решениями

Пример и число отметок Точное решение Результат предложенного алгоритма Результат алгоритма из работы [3] Результат алгоритма ИБ

БегНп52 7542 7993 8731 8980

А280 2586 2929 3129 3169

Б1ег127 118282 121680 138887 129397

СЬ130 6110 6484 7088 7467

А1577 22249 26288 30963 29091

еИ101 629 679 734 832

кгоА100 21282 22010 22498 26762

8170 675 697 746 795

рг76 108159 115613 119489 153380

кгоС100 20749 21354 22314 25810

еИ51 426 448 469 512

аб57 48912 54756 64909 61261

СЬ150 6528 6877 7746 8141

Ьт105 14379 15279 16629 20213

Рг1002 259045 297194 373187 322323

ЛИТЕРАТУРА

1. Гэри М, Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982.

2. Оре О. Теория графов. М.: Наука, 1980.

3. Файзулин Р. Т., Файзулин Р. Р. Гладкие приближения в задаче коммивояжёра // Таврический вестник информатики и математики. 2004. №27.

4. Скарборо Д. Численные методы математического анализа. М.: ГТТИ, 1934.

5. Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. М.: Лаборатория Базовых Знаний, 2002.

6. www.iwr.uni-eidelberg.de/groups/comopt/software/TSPLIB95/tsp/

i Надоели баннеры? Вы всегда можете отключить рекламу.