УДК 658.52.011.56
ОБ ИСПОЛЬЗОВАНИИ АЛГОРИТМА ЛИТЛА ДЛЯ РЕШЕНИЯ ЗАДАЧИ О КОММИВОЯЖЕРЕ ПРИ РАЗРАБОТКЕ ПРИГОРОДНЫХ МАРШРУТОВ
С.А. Канцедал, профессор, д.т.н., Западнодонбасский частный институт экономики и управления, г. Павлоград, М.В. Костикова, доцент, к.т.н.,
И.В. Скрипина, ст. преподаватель, ХНАДУ
Аннотация. Описывается алгоритм Литла, предложенный для точного решения задачи о коммивояжере. Представлены характеристики времени решения задач о коммивояжере алгоритмом Литла и его модификацией для случаев с симметричной и несимметричной матрицей расстояний. Даны границы размеров задач, для которых целесообразно использование алгоритма при составлении маршрутной сети.
Ключевые слова: коммивояжер, расстояние, алгоритм, матрица, границы, эксперимент, маршрутная сеть.
ПРО ВИКОРИСТАННЯ АЛГОРИТМУ ЛІТЛА ДЛЯ РОЗВЕЯЗАННЯ ЗАДАЧІ ПРО КОМІВОЯЖЕРА ПРИ РОЗРОБЦІ ПРИМІСЬКИХ МАРШРУТІВ
С.А. Канцедал, професор, д.т.н., Західнодонбаський приватний інститут економіки і управління, м. Павлоград, М.В. Костікова, доцент, к.т.н.,
І.В. Скрипіна, ст. викладач, ХНАДУ
Анотація. Описується алгоритм Літла, запропонований для точного розв^кзання задачі про комівояжера. Представлено характеристики часу розе Нзання задач про комівояжера алгоритмом Літла і його модифікацією для випадків із симетричною і несиметричною матрицею відстаней. Надано межі розмірів задач, для яких є доцільним використання алгоритму при складанні маршрутної мережі
Ключові слова: комівояжер, відстань, алгоритм, матриця, межі, експеримент, маршрутна мережа.
ON THE USE OF LYTLEES ALGORITHM FOR SOLVING TRAVELING SALESMAN PROBLEM AT DEVELOPING SUBURBAN ROUTE
S. Kantsedal, Professor, Doctor of Technical Science, West Donbass Institution of Economics and Management, Pavlograd, M. Kostikova, Associate Professor, Candidate of Technical Science, I. Skrypina, senior teacher, KhNAHU
Abstract. Lytle H algorithm is described as proposed for an accurate solution of the salesman Problem. Statistical characteristics of solution duration with lytle H algorithm of some problems and of their modifications are specified. On the basis of the results obtained the limits for the algorithm practical specification in the preparation of the route network are given.
Key words: salesman, distance, algorithm, matrix, boundaries, experiment, route network.
Введение претерпел традиционные для большинства
сфер отечественной экономики этапы □ от Рынок услуг автоперевозчиков на пригород- хаоса до упорядочения. Процветающая в
ных и районных маршрутах в своем развитии действующем СССР система крупных авто-
транспортных предприятий (АТП) в новых экономических условиях себя не оправдала. Большинство из этих АТП работали убыточно либо вовсе прекратили свою деятельность. На рынке начали обосновываться частные предприниматели, которые более адекватно реагировали на изменение ситуации. По мере того, как у частного бизнеса появлялось больше средств, менялся и рынок, как и положено во всем цивилизованном мире, □ в сторону укрупнения. Сегодня на транспортном рынке работают серьезные инвестиции, появились предприятия, имеющие в своем парке от 20 до 100 машин. Либерализация экономики и переход к свободному рынку транспортных услуг коренным образом изменили механизм взаимоотношений всех участников перевозочного процесса. В настоящее время госадминистрации различных областей начинают работу по составлению единых маршрутных сетей области, обслуживать которые перевозчики будут только через открытые конкурсы.
Для успешного проведения этих работ, конечно, необходимо привлекать современные научные разработки и высокопроизводительные компьютеры. Одной из задач, решение которой позволит оптимизировать разработку таких сетей, является задача о коммивояжере.
Анализ публикаций
Формулировку задачи коммивояжера как задачи целочисленного линейного программирования можно найти в [1, 2].
Для решения этой задачи разработаны точные, приближенные и эвристические алгоритмы. Точные алгоритмы представлены в рамках схемы ветвей и границ, а также метода динамического программирования [1, 3, 4]. Эти алгоритмы носят экспоненциальный характер, т.е. время, затрачиваемое ими на решение различных задач при увеличении количества городов, растет экспоненциально. При этом алгоритм, реализующий метод динамического программирования, как по количеству выполняемых операций, так и по требуемой для хранения данных памяти ЭВМ, уступает методу ветвей и границ [4].
Впервые метод ветвей и границ как метод оптимизации был продемонстрирован группой американских математиков, возглавляе-
мой Литлом, именно на задаче о коммивояжере [5]. Разработанный ими алгоритм позволял решать задачи с количеством городов до 30 и несимметричной матрицей C (матрица расстояний между городами) не более чем за 8 минут работы центрального процессора. Задачи с симметричной матрицей решались существенно дольше. Было также установлено, что время счета растет экспоненциально с увеличением количества городов. Причем добавление 10 городов увеличивает время примерно на порядок.
С нашей точки зрения, статистические исследования алгоритма Литла недостаточны для того, чтобы сделать правдоподобные заключения о его рабочих характеристиках. Кроме того, он допускает ряд модификаций, которые могут улучшить эти характеристики.
Цель и постановка задачи
Задача о коммивояжере формулируется следующим образом. Имеется п городов 1, 2, ..., i,..., п и расстояний между ними, представленных квадратной матрицей C = |У , i = 1, 2, ..., п , у = 1, 2, ..., п . Ком-
II ■'\\nxn
мивояжер выезжает из некоторого базового города, в качестве которого путем перенумерации всегда можно принять город п, объезжает все остальные города, побывав в каждом по одному разу, и возвращается в исходный город. Требуется найти такой порядок объезда городов, который бы минимизировал общую стоимость объезда.
Различают несколько разновидностей задачи, обусловленных свойствами элементов матрицы С . Если расстояние из города i в город у и наоборот □ из у в i □ одинаково V/, у, задачу называют задачей с симметричной матрицей расстояний. В противном случае, т.е. когда суу Ф с^ , / = 1, 2, ..., п ,
у = 1, 2, ., п , / Ф у , задачу характеризует
несимметричная матрица С . Когда для любой тройки городов /, у, к справедливо условие с у + с ук > ск , говорят, что задача удовлетворяет условию треугольника. В противном случае это условие ей не свойственно. Самая общая постановка задачи та, для которой матрица расстояний несимметричная и для ее элементов не выполняется условие треугольника.
Известно несколько математических формулировок задачи: сетевая, комбинаторная, целочисленного линейного программирования. Наиболее плодотворными из них для построения и обоснования решающих алгоритмов являются первые две.
Если каждому городу 1, 2, ..., п поставить в соответствие вершины у1, у2 , ..., \п и каждую пару вершин соединить взвешенными ребрами, отражающими стоимости проезда из города в город в ту и другую сторону, получим мультиграф, в котором требуется найти покрывающий (Гамильтонов) цикл, наименьшей длины. Для задачи с симметричной матрицей такой цикл следует искать в обычном графе.
Комбинаторная формулировка определяется тем, что любой Гамильтонов цикл □ это замкнутый путь в мультиграфе, включающий все вершины 1, 2, ..., п . Тогда, поскольку одна (базовая) вершина фиксирована, любой путь □ это перестановка л на множестве чисел 1, 2, ..., п -1, замкнутая на первоначальную вершину. Следовательно, среди множества перестановок (п -1)! требуется найти такую циклическую перестановку л * = (/1, / 2, ., /п-1), для которой суммарная стоимость с/ / + с/ / + ... + с/ / + с/ / бу-
/1/2 /2/3 /п-2/п-1 /п-1/1
дет минимальной.
Цель настоящей работы □ обосновать модификации алгоритма Литла и на основании эксперимента определить в целом границы практического применения рассматриваемого алгоритма. Для достижения указанной цели решались следующие задачи: а) конструирование модифицированного алгоритма Литла; б) программная реализация разработанного алгоритма; в) проведение экспериментальных исследований алгоритма.
Алгоритм и его модификации
По существу метод ветвей и границ в оптимизационной задаче комбинаторного типа сокращает полный перебор решений, позволяя получить для задач разумной размерности точное решение в приемлемые сроки. Степень сокращения перебора, вообще говоря, не определена и сильно зависит от многих факторов. Однако метод содержит инструменты, позволяющие во многих случаях оказывать воздействие на эту интенсивность
и, таким образом, добиваться требуемого решения.
Идея метода состоит в том, что исходное множество решений М по некоторому правилу разбивается на конечное число непере-секающихся подмножеств М1, таких, что и М1 = М , М/ п Му = 0 , / Ф у . Далее, по
определенному признаку, выбирается одно из подмножеств М1 и, в свою очередь, по принятому правилу разбивается на конечное число непересекающихся подмножеств Мк, таких, что и Мк = М/; Мк п Мг =0 , к ФI. Процесс разбиения подмножеств продолжается до тех пор, пока не получают подмножество, содержащее один элемент л. Для него вычисляется значение оптимизируемой функции ^(л), часто называемое рекордом.
Процедуру разбиения исходного множества на подмножества удобно представлять как построение корневого ориентированного г -ярусного дерева, в котором вершины □ это множества, а дуги ориентированы непосредственно от порождающих множеств к порождаемым. В такой интерпретации очередное разбиение множества представляется как разветвление соответствующей ветви дерева, в связи с чем процедуру разбиения называют ветвлением.
Процесс ветвления сопровождается вычислением для исходного множества М и каждого из порождаемых подмножеств нижних (верхних) границ оптимизируемой функции на этих подмножествах □ оценок точных значений функции. Именно эти границы являются инструментом метода, сокращающим полный перебор. Однако это достигается только в том случае, когда нижние границы функции от предка к потомку не убывают, а верхние □ не возрастают. При этом в конечной вершине дерева (листе) границы трансформируются в значение оптимизирующей функции, соответствующее маршруту ветвления. Действительно, если в случае минимизации функции ^(л) найдено некоторое
решение задачи ¥г (л) и для очередного подмножества Мк вычислена нижняя граница /(Мк) > ¥г (л), то, в силу /(Мк+1) > /(Мк), подмножество Мк не будет продуцировать решений ^(л), меньших известного решения ¥г (л). Вследствие этого все решения, порождаемые последователь-
ным разбиением Мк, могут быть отброшены. В дереве поиска это равнозначно отсечению ветвей, выходящих из вершины, отображаемой множеством Мк . Аналогичным
образом дело обстоит и при максимизации функции, только отсечение осуществляют тогда, когда /(Мк) < ¥г (л).
Степень отсечения ветвей, а равно и сокращение поиска, существенно зависит от близости оценок к точным значениям функции на подмножествах. Однако, как показывает опыт вычислений, получение качественных оценок всегда сопряжено с ростом его объема. В связи с этим общее сокращение времени решения задачи может быть не достигнуто. Поэтому обычно ищут надлежащий компромисс между сложностью решения оценочных задач и интенсивностью отсечения. Если он достигается, то, как правило, экспериментальным путем.
Во многих случаях эффект отсечения становится весьма ощутимым, если в задаче минимизации ¥ (л) используется верхняя граница функции ¥ (л), а в задаче максимизации □ нижняя граница функции ¥ (л). Такие границы с небольшими затратами времени могут быть вычислены до применения метода, а в процессе его реализации уже на начальной стадии разбиения множеств и вычисления оценок применяться для отсечения ветвей в дереве поиска.
Практика решения различных задач методом ветвей и границ показывает, что и способ ветвления, и его стратегия (правило выбора очередного множества для разбиения), и вычисление границ ¥ (л) на подмножествах специфичны для каждой задачи. Вместе с тем на основании этой же практики выработаны рекомендации, которых, по возможности, следует придерживаться при разработке алгоритма. Схема ветвления должна порождать меньше вершин на верхних ярусах дерева решений. Стратегия □ способствовать получению меньшего (большего) рекорда за первый проход дерева от корня к листу. Решение оценочных задач □ не слишком затратным способом вычислять нижние (верхние) границы, близкие к точным границам оптимизируемой функции на подмножествах.
В алгоритме Литла используется схема ветвления, в результате применения которой за
один проход от корня к листу строится бинарное дерево решений, содержащее n - 2 яруса. Корень дерева отображает все множество Гамильтоновых циклов задачи. Ветви, выходящие из корня и остальных вершин, определяются выбором одного конкретного ребра, указывающего направление переезда из города в город. Таким образом, каждое множество разделяется на два подмножества: содержащее все Гамильтоновы циклы с данным переездом из города в город и циклы, не содержащие таких переездов.
Вычисление нижних границ основано на том факте, что в любой Гамильтонов цикл входят только по одному разу элементы (ребра с соответствующей стоимостью) из каждой строки и столбца матрицы C . Например, c12, c23, c34 , c41 для матрицы 4 х 4. Поэтому если из некоторой строки или столбца матрицы C вычесть константу h, что называется приведением матрицы, стоимость всех объездов (в том числе и оптимальных) уменьшится ровно на эту величину. Иными словами, в результате этой операции изменение состава ребер оптимального маршрута не произойдет, а стоимость его будет представляться величиной F(л*) = h + F (л*), где F (л *) □ стоимость оптимального маршрута в приведенной матрице C .
Если в качестве константы h в некоторой строке матрицы C выбрать минимальный элемент, то эту константу можно считать нижней границей g = h функции F(л). Однако такая граница слишком груба. Более точная граница в корне дерева получается последовательным вычитанием минимальных элементов из строк и столбцов матрицы C с дальнейшим суммированием этих отри-
n П
цательных элементов, т.е. g = II min Cj .
j=1 i=1
Такая процедура называется полным приведением матрицы C .
Вычисление нижних границ функции F(л) на подмножествах циклов, содержащих выбранное ребро (i, j) и не содержащих его, одинаково в том отношении, что к текущей нижней границе gS функции F(л) на подмножестве, которое разделяется, добавляется некоторое число h, и различно в том смысле, что эти числа разные и получаются различными путями. В первом случае в приведен-
ной матрице, соответствующей разбиваемому множеству, вычеркивается i -я строка и j -й столбец, ребро (i, j) добавляется к списку выбранных ребер, устанавливается замкнутый цикл с началом p и концом q и блокируется его образование в матрице C введением элемента cqp = да. Затем осуществляется полное приведение видоизмененной матрицы, находится добавка h и вычисляется новая нижняя граница g = gS + h на подмножествах циклов, содержащих ребро (i, j). Вторая добавка h к gS получается в результате выполнения операции ветвления, которая определяет ребро (i, j). Для этого в каждой строке матрицы С, соответствующей разделяемому множеству, находится минимальный элемент, не равный нулю, фиксируется соответствующий столбец, находится в нем минимальный элемент, также не равный нулю, после чего суммируются эти элементы. Далее среди полученных сумм находится наибольшая h, которая определяет ребро (i, j) и прибавляется к текущей границе. В результате получаем g = gS + h .
Стратегия ветвления, т.е. выбор очередного множества для разбиения, реализуется так: из всех висячих вершин дерева поиска, отображающих подмножества циклов, выбирается та вершина, для которой нижняя граница минимальна.
Исходя из изложенного, алгоритм Литла может быть представлен следующим образом.
Шаг 1. Положить рекорд R = да .
Шаг 2. Выполнить первое приведение мат-
nn
рицы C и найти gS = II min cij .
j=1 i=1
Шаг 3. Выполнить ветвление, т.е. определить максимальную добавку h и ребро (i, j).
Шаг 4. Вычислить нижнюю границу
g = gS + h для множества циклов, не содер-
жащих ребро (i, j); запомнить эту границу и ребро (i, j).
Шаг 5. В текущей матрице C вычеркнуть
строку i, столбец j, установить подцикл (p, q) и блокировать его образование, положив cqp = да ; привести матрицу C и найти добавку h.
Шаг 6. Вычислить нижнюю границу
W = gS + h для множества циклов, содержащих ребро (i, j).
Шаг 7. Если 2 > п - 2, перейти к шагу 10. Шаг 8. Если Ж > Я , перейти к шагу 10.
Шаг 9. Положить Я = Ж, добавить два ребра к списку ребер, запомнить этот список как лучший текущий цикл.
Шаг 10. Выбрать висячую вершину дерева поиска с наименьшей нижней границей g . Шаг 11. Если g > Я , остановиться.
Шаг 12. Получить матрицу С для ветвления в выбранной висячей вершине и вернуться к шагу 3.
В описанный алгоритм внесены изменения: добавлено использование верхней границы, применяются другая стратегия ветвления и другой способ получения матрицы С для ветвления в выбранной висячей вершине. В качестве верхней границы Я используется стоимость объезда, полученная модифицированным эвристическим алгоритмом СЪхать в ближайший город □ [4].
Что касается способа получения матрицы С для ветвления в выбранной висячей вершине дерева поиска, то в целях сокращения объемов вычислений, особенно на нижних ярусах дерева, он заменен запоминанием матриц С для вершин ветвления. Для ветвления выбирается вершина, определяющая все циклы, включающие выбранное ребро (/, у').
Результаты эксперимента
Экспериментальные исследования проводились для того, чтобы определить временные характеристики алгоритма и, таким образом, установить предельные границы его практического применения. С этой целью были составлены три программы полного перебора (генерации всех перестановок чисел 1, 2, ..., п с вычислением стоимости объезда) модифицированного эвристического алгоритма СЪхать в ближайший город □ и собственно алгоритма метода ветвей и границ. Программа прямого перебора использовалась для тестирования программы метода ветвей и границ.
Непосредственные задачи эксперимента состояли в следующем:
1) для ряда серий задач размером п = 10, 12, 15, 17, 20, 22, 25, 27, 30 получить наименьшие, средние и наибольшие времена счета, а также другие статистические харак-
теристики с использованием верхней границы Я и без нее;
2) по статистическим данным построить эмпирические зависимости времен решения задачи как функции ее размера;
3) оценить погрешности эвристического алгоритма.
Каждая серия состояла из 100 задач со случайными временами переезда, равномерно распределенными на интервале (0, 100). Генерировались как симметричные, так и несимметричные матрицы С . Погрешности эвристического алгоритма определялись по выражению А = (£г - )/5у, где 5 □ мини-
мальная, средняя или максимальная стоимости объезда, найденные эвристическим алгоритмом, а □ те же стоимости, найденные
методом ветвей и границ. Статистические данные обрабатывались средствами пакета БТАИБИСЛ 6 фирмы StatSoft.
Данные расчетов свидетельствуют, прежде всего, о том, что использование верхней границы Я как для задач с симметричной матрицей расстояний С, так и с несимметричной, не улучшает временные характеристики алгоритма Литла. Наоборот, оно в незначительной степени их ухудшает. Объяснить этот результат можно влиянием двух факторов. Во-первых, модифицированный алгоритм СЪхать в ближайший город» используемый для вычисления верхней границы Я, дает ее значения, весьма далекие от оптимальных решений, и тем самым, не обеспечивает эффективного отсечения ветвей в дереве поиска. Во-вторых, сложность алгоритма 0(п3), и это требует определенных затрат времени на его реализацию, которые не покрываются ожидаемым сокращением времени за счет эффективности отсечения.
Средние времена счета приближены экспоненциальной зависимостью t = ехр(а + Ь ■ п), в результате чего получены эмпирические формулы зависимости времени счета t от размера задачи п:
а) для задач с симметричной матрицей С : t = ехр(-10,46 + 0,338 ■ п), без использования Я; t = ехр(-10,47 + 0,339 ■ п), с использованием Я;
б) для задач с несимметричной матрицей С : t = ехр(-10,39 + 0,251 ■ п), без использования Я ; t = ехр(-8,67 + 0,183 ■ п), с использованием Я.
Используя эти зависимости, методом экстраполяции получаем, что задачу с 50 городами и симметричной матрицей расстояний С рассматриваемым алгоритмом в среднем можно решать за 636-649 секунд, задачу с несимметричной матрицей С □ за 8,7 □ 1,7 секунд.
Минимальные и максимальные времена счета tm, tmx существенно отличаются от среднего времени tS . Например, для задач с 30 городами и симметричной матрицей расстояний С максимальное время больше среднего примерно в 60 раз, для задач с несимметричной матрицей С □ примерно в 50 раз. Это свидетельствует о достаточно высоком размахе колебаний времени решения задач рассматриваемым алгоритмом. В то же время средние характеристики алгоритма статистически достаточно устойчивы, что подтверждается низким стандартным отклонением БК0 и узким 95-процентным доверительным интервалом среднего значения времени счета.
Говоря о качестве модифицированного алгоритма СЪхать в ближайший города следует сказать, что этот алгоритм мало пригоден для практических применений. Средние погрешности алгоритма, хотя и растут линейно (эмпирические зависимости приведены ниже), достаточно высоки, и, что характерно, для задач с несимметричной матрицей расстояний С они выше, чем для симметричной матрицы С: А5 =-1,85 +1,17 ■ п, матрица С — симметричная; А 5 = 6,49 +1,46 ■ п , матрица С □ несимметричная.
Методом экстраполяции получаем, что для задач с 50 городами эвристический алгоритм по отношению к оптимальному решению будет давать для симметричной матрицы С и несимметричной матрицы С средние погрешности соответственно 56,6 % и 80,3 %.
Выводы
Таким образом, в целом экспериментальные исследования алгоритма Литла показали, что его целесообразно использовать в массовом
порядке для решения задач размерности до 50 городов преимущественно с несимметричной матрицей расстояний С.
Научная новизна разработки состоит в конструировании и экспериментальном исследовании алгоритма Литла и его модификации, касающейся введения верхней границы минимизируемой функции, предназначаемой для повышения быстродействия алгоритма.
Практическая значимость исследований состоит в том, что на основании статистической обработки полученных экспериментальных данных даются правдоподобные заключения о рабочих характеристиках алгоритма, что позволило достаточно точно определить границы практического применения алгоритма при составлении маршрутной сети.
Литература
1. Корбут A.A. Дискретное программирование / A.A. Корбут, Ю.Ю. Финкель-штейн. □ М.: Наука, 1969. □ 368 с.
2. Пападимитриу X. Комбинаторная оптими-
зация. Алгоритмы и сложность / X. Пападимитриу, К. Стайглиц. □ М.: Мир, 1985. □ 510 с.
3. Гудман С. Введение в анализ и разработку
алгоритмов / С. Гудман, С. Хидетниеши. □ М.: Мир, 1981. □ 366 с.
4. Конвей Р.В. Теория расписаний / Р.В. Конвей, В.П. Максвелл, Л.В. Миллер. □ М.: Наука, 1975. □ 360 с.
5. Литл Дж. Алгоритм для решения задачи о
коммивояжере / Дж. Литл, К. Мурти, Д. Суини, К. Кэрел. // Экономика и математические методы. □ 1965. □ Вып. 1, № 1. □ С. 94 □ 107.
Рецензент: П.Ф. Горбачев, профессор, д.т.н., ХНАДУ.
Статья поступила в редакцию 21 марта 2012 г.