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

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

728
84
Поделиться
Ключевые слова
ЗАДАЧА КОММИВОЯЖЕРА / АЛГОРИТМ РАЗРЕЗАНИЯ МАРШРУТА / ДИХОТОМИЧЕСКОЕ РАЗДЕЛЕНИЕ

Аннотация научной статьи по математике, автор научной работы — Костюк Юрий Леонидович, Пожидаев Михаил Сергеевич

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

Похожие темы научных работ по математике , автор научной работы — Костюк Юрий Леонидович, Пожидаев Михаил Сергеевич,

APPROXIMATE ALGORITHMS FOR SOLUTION THE BALANCED PROBLEM OF K TRAVEL SALESMAN

Considering building k looped tours task on a set of n+1 towns with the minimal total length and with the same count of towns for each result tour (to within 1 town). One town called "base" should be included into each result tour and all other towns should be included into the only one tour of a result set. Offered and experimentally researched the several approximate algorithms for this task solution.

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

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

ВЕСТНИК ТОМСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА

2008 Управление, вычислительная техника и информатика № 1(2)

УДК 519.682.1

Ю.Л. Костюк, М.С. Пожидаев ПРИБЛИЖЕННЫЕ АЛГОРИТМЫ РЕШЕНИЯ СБАЛАНСИРОВАННОЙ ЗАДАЧИ к КОММИВОЯЖЕРОВ

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

Ключевые слова: задача коммивояжера, алгоритм разрезания маршрута, дихотомическое разделение.

Задача коммивояжера (ЗК) имеет множество модификаций, в частности для к коммивояжеров [1], когда на множестве из п + 1 города строится к замкнутых маршрутов по следующим правилам:

1) один из городов, называемый базой, входит во все маршруты;

2) каждый из городов (исключая базу) входит ровно в один из маршрутов;

3) суммарная длина всех маршрутов минимальна.

Для многих практических приложений необходимым является дополнительное условие сбалансированности маршрутов, в частности, по числу городов, входящих в маршруты. Такая задача, являясь обобщением ЗК, также является ЫР-трудной, поэтому актуальными являются приближенные алгоритмы ее решения. Известен приближенный алгоритм решения несбалансированной задачи, который для метрических расстояний имеет точность 2 по сравнению с оптимальным алгоритмом [1]. Однако для сбалансированного случая приближенных алгоритмов с гарантированной точностью не известно.

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

Алгоритм разрезания общего маршрута

Для упрощения описания алгоритма будем считать, что п кратно к, т.е.

п = к т, (1)

где т - число городов (не считая базу) в каждом из к маршрутов.

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

Если это не так, то в алгоритм потребуется внести дополнительные проверки и действия, не имеющие принципиального значения. Алгоритм содержит следующие этапы:

1) вычисление общего маршрута коммивояжера по п городам (кроме базы);

2) разрезание общего маршрута на к кусков по т городам в каждом с минимизацией суммарной длины кусков маршрута;

3) вычисление к замкнутых маршрутов по базе и городам, вошедшим в каждый из кусков маршрута.

На 1-м этапе можно использовать подходящий приближенный алгоритм, например алгоритм дерева с трудоемкостью 0(п2) и точностью 2, алгоритм Кристо-фидеса с трудоемкостью 0(п3) и точностью 1,5, алгоритм Лина - Кернигана с трудоемкостью, близкой к 0(п3), и на практике одного из лучших по качеству решения [2].

На 2-м этапе рассматриваются звенья общего маршрута. Пусть нумерация городов в маршруте: яь Я2, ■■■, Я„. Обозначим звенья в маршруте: (#ь Я2), (я2, яз),-, (Яп - 1, Яп). Из них выбирается группа звеньев (я,-, я,- + 1), (я,-

+ m, § г + т + l), (& + 2m,

Я г + 2т + О,--- с максимальной суммарной длиной при изменении г от 1 до т. При этом длина оставшихся кусков маршрута будет минимальной. Иной способ оценки длины совокупности маршрутов - вычисление суммарной длины минимальных остовов, построенных на городах, вошедших в выделенные куски маршрута.

На 3-м этапе последовательно вычисляются к маршрутов коммивояжера. Первый из них строится на множестве городов, в которое входит база и города я, + 1, Я,- + 2, ..., я, + т, второй маршрут - на множестве городов, в которое входит база и города я, + т + 1, я, + т + 2, ..., я, + 2т, и т.д. Для этих маршрутов также можно использовать подходящий приближенный алгоритм.

Трудоемкость алгоритма определяется в основном трудоемкостью 1-го этапа, так как 2-й этап можно выполнить за время О(п), а трудоемкость 3-го этапа не менее, чем в к раз меньше трудоемкости 1-го этапа, если на всех этапах используется один и тот же приближенный алгоритм решения ЗК.

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

Метод последовательного дихотомического разделения городов на группы

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

Процесс разделения выполняется в несколько этапов, причем на каждом этапе очередная группа (если в ней больше чем т городов) делится на две более мелкие группы с числом городов в каждой, кратной т. Пусть в очередной группе па городов, причем па = ка т. Эта группа делится на две новые группы из п1 = т\ка /2] и

п2 = т _ка /2\ городов соответственно. Процесс разделения заканчивается, когда

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

все группы будут содержать ровно по т городов.

Рассмотрим этап деления группы из па городов на две более мелкие группы с числом городов п1 и п2 соответственно (при этом п1 > п2):

1) среди городов отыскивается два я, и с максимальным расстоянием между

ними, я, включается в 1-ю, - во 2-ю новую группу;

2) (п1 - п2) раз повторяется следующее действие: среди оставшихся в исходной группе городов выбирается город, ближайший к какому-либо из городов 1-й группы, и включается в 1-ю группу;

3) (п2 - 1) раз повторяются следующие действия:

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

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

Выбор города, ближайшего к какому-либо из городов 1-й (или 2-й) группы можно выполнить двумя различными способами:

1) по минимальному расстоянию;

2) по разности минимальных расстояний.

Выбор по минимальному расстоянию можно реализовать аналогично тому, как реализован выбор в алгоритме Прима нахождения минимального остова или в алгоритме ближайшего города приближенного решения ЗК [3]. Для этого на каждом шаге выбора необходимо поддерживать в актуальном состоянии массивы £1 и £2 из па элементов:

1) если город включен в 1-ю формируемую группу, то £1, = -1, £2, = -1, а если во 2-ю - £1, = -2, £2, = -2;

2) если город не включен ни в 1-ю, ни во 2-ю формируемую группу, то £1, равно номеру того города, включенного в 1-ю формируемую группу, расстояние р(г, £1,) до которого от города г минимально, а £2, равно номеру того города, включенного во 2-ю формируемую группу, расстояние р(г, £2,) до которого от города г минимально.

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

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

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

Трудоемкость метода при разделении городов на к групп в обоих случаях имеет порядок 0(п2), она выводится из рекуррентного соотношения Г(п) = 2 Г(п/2) + п2.

Обменная оптимизация при дихотомическом разделении

Для улучшения качества получаемых маршрутов после очередного шага разделения городов на две группы можно применить следующую локальную оптимизацию. Будем рассматривать пару городов: город г из 1-й группы и город у из 2-й группы. Обмен этими двумя городами между 1-й и 2-й группами производится, если это приведет к уменьшению длины маршрутов. Для выполнения такой проверки можно выполнить пробное построение двух таких маршрутов или построить два минимальных остова по двум группам городов. Как известно, минимальный остов дает оценку снизу длины маршрута, которую можно использовать для вынесения решения о целесообразности обмена. Такую обменную оптимизацию имеет смысл применять после всех шагов разделения городов на две группы.

Оценим трудоемкость этой процедуры. Пусть в 1-й группе п1, а во 2-й группе -п2 городов. Тогда попытку обмена придется выполнить п1-п2 раз. Если трудоем-

кость каждой попытки имеет порядок 0(п12 + п22), то общая трудоемкость при всех разделениях на к групп будет порядка О(п4). Для уменьшения трудоемкости можно, практически не ухудшая результат, на возможность обмена проверять не все города, попавшие в 1-ю и 2-ю группы, а только часть из них (например 1/л/й часть), причем именно те города, которые были отнесены к соответствующим группам в самую последнюю очередь. При этом общая трудоемкость будет порядка О(п3).

Алгоритм разделения городов по углу

Рассмотрим еще один алгоритм разделения п городов на к групп по т городов в каждой для случая, когда города - суть точки плоскости ХОТ, а расстояния между ними - евклидовы. Пусть база находится в центре координат (хб = 0, у = 0), а координаты всех остальных городов (х,, у) одновременно не равны нулю. Перейдем для п городов к полярной системе координат (г, а,) и упорядочим все города (кроме базы) по углу {а,}, 0 < а, < 2п, причем города с одинаковым углом упорядочим по радиусу {г,}. В результате получим некоторый маршрут коммивояжера по п городам.

Далее действуем в точности так же, как в алгоритме разрезания общего маршрута:

1) разрезаем полученный маршрут на к кусков по т городов в каждом с минимизацией суммарной длины кусков маршрута;

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

В этом алгоритме трудоемкость определяется вычислением к замкнутых маршрутов на последнем этапе, так как трудоемкость перехода к полярной системе координат О(п), трудоемкость упорядочения - О(п-1о§ п), трудоемкость разрезания - О(п). Последний этап также можно выполнить с трудоемкостью О(п-1о§ п), если перед построением очередного маршрута по группе городов вычислить триангуляцию по точкам (городам, вошедшим в группу, включая базу), по триангуляции построить минимальный остов, а по остову - маршрут алгоритмом дерева [4].

Вычислительный эксперимент

Для взаимного сравнения предложенных алгоритмов был проведен следующий вычислительный эксперимент:

1) п городов генерировались, как точки на плоскости ХОТ в единичном квадрате с независимыми равномерно распределенными координатами;

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

2) база помещалась в центр квадрата;

3) оценка качества полученного решения вычислялась как отношение общей длины всех к маршрутов к нижней оценке общего маршрута по всем городам, включая базу;

4) количество реализаций подбиралось таким образом, чтобы среднеквадратичное отклонение оценки не превышало нескольких единиц в последней значащей цифре оценки.

В качестве нижней оценки использовалась сумма длин ребер минимального остова, в котором самое длинное ребро учтено дважды. Для вычисления ЗК на промежуточных шагах алгоритмов использовалась одна и та же последователь-

ность алгоритмов: а) алгоритм дерева, строящий маршрут по минимальному остову; б) 5-кратное повторение алгоритма 2-ор1 на полученном маршруте [4]; в) локальная оптимизация с окном из 9 вершин [4].

На рис. 1 изображен пример построения маршрутов для числа городов п = 64 и числа коммивояжеров к = 4 следующими алгоритмами:

а) алгоритмом разрезания общего маршрута;

б) алгоритмом дихотомического разделения с выбором по минимальному расстоянию;

в) алгоритмом дихотомического разделения с выбором по разности минимальных расстояний;

г) алгоритмом разделения городов по углам.

Рис. 1. Пример построения 4-х маршрутов по базе и 64 городам

В табл. 1 - 4 приведены оценки качества работы этих алгоритмов по результатам вычислительного эксперимента для числа городов п от 32 до 1024 и числе коммивояжеров к от 2 до 64.

Таблица 1 Разрезание общего маршрута

Число городов п Число коммивояжеров k

2 4 8 16 32 64

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

32 1,59 1,98

64 1,51 1,80 2,35

128 1,43 1,63 2,01 2,78

256 1,38 1,55 1,84 2,37 3,49

512 1,33 1,44 1,64 2,02 2,80 4,42

1024 1,32 1,38 1,51 1,79 2,34 3,46

Таблица 2

Дихотомическое разделение по минимуму

Число городов п Число коммивояжеров k

2 4 8 16 32 64

32 1,45 1,82

64 1,40 1,67 2,19

128 1,35 1,55 1,93 2,70

256 1,31 1,47 1,77 2,34 3,52

512 1,29 1,43 1,67 2,08 2,91 4,55

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

1024 1,30 1,39 1,58 1,91 2,52 3,68

Таблица 3 Дихотомическое разделение по разности

Число городов п Число коммивояжеров k

2 4 8 16 32 64

32 1,31 1,60

64 1,29 1,47 1,94

128 1,28 1,38 1,70 2,44

256 1,26 1,33 1,55 2,06 3,14

512 1,25 1,29 1,44 1,79 2,54 4,11

1024 1,25 1,27 1,37 1,62 2,13 3,22

Таблица 4

Разделение по углам

Число городов п Число коммивояжеров k

2 4 8 16 32 64

32 1,31 1,56

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

64 1,26 1,41 1,92

128 1,28 1,34 1,65 2,50

256 1,27 1,29 1,48 2,00 3,38

512 1,25 1,28 1,37 1,66 2,59 4,68

1024 1,24 1,26 1,32 1,48 2,02 3,51

Выводы

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

1. По качеству решения алгоритмы расположились в следующем порядке (от худшего к лучшему): «разрезание общего маршрута», «дихотомическое разделение по минимуму», «разделение по разности». Алгоритм «разделение по углам» превзошел все остальные при k = 16 и менее, но уступил другим при больших k.

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

3. При решении задачи в общем метрическом случае расстояний наиболее перспективным, по-видимому, представляется использование алгоритма «разделение по разности», который можно реализовать с трудоемкостью O(n2).

4. При решении задачи для точек плоскости перспективным для больших размерностей представляется использование алгоритма «разделение по углам», особенно учитывая его трудоемкость O(n-log n).

ЛИТЕРАТУРА

1. Меламед И.И., Сергеев С.И., Сигал И.Х. Задача коммивояжера. Вопросы теории // Автоматика и телемеханика. 1989. № 9. С. 3 - 33.

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

1982.

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

3. Рейнголд Э. , Нивергельд Ю., Део Н. Комбинаторные алгоритмы. Теория и практика.

М.: Мир, 1980.

4. Johnson D S., McGeoch L.A. The Traveling Salesman Problem: A Case Study in Local Optimization // Local Search in Combinatorial Optimization / Aarts E.H.L., Lenstra J.K. (eds.).

N.Y.: John Willey & Sons, 1995.

Статья представлена кафедрой теоретических основ информатики факультета информатики Томского государственного университета, поступила в научную редакцию 29 июня 2007 года.