Задача коммивояжёра
Задача коммивояжёра (англ. Travelling salesman problem, TSP) (коммивояжёр — разъездной сбытовой посредник) — одна из самых известных задач комбинаторной оптимизации, заключающаяся в отыскании самого выгодного маршрута, проходящего через указанные города хотя бы по одному разу с последующим возвратом в исходный город. В условиях задачи указываются критерий выгодности маршрута (кратчайший, самый дешёвый, совокупный критерий и т. п.) и соответствующие матрицы расстояний, стоимости и т. п. Как правило, указывается, что маршрут должен проходить через каждый город только один раз — в таком случае выбор осуществляется среди гамильтоновых циклов.
Общая постановка задачи, впрочем как и большинство её частных случаев, относится к классу NP-полных задач. Задача коммивояжёра относится к числу трансвычислительных: уже при относительно небольшом числе городов (66 и более) она не может быть решена методом перебора вариантов никакими теоретически мыслимыми компьютерами за время, меньшее нескольких миллиардов лет.
Формальное определение Представление в виде графа
Симметричная задача для четырех городов.
Для
возможности применения математического
аппарата для решения проблемы, ее следует
представить в виде математической
модели.
Проблему коммивояжёра можно представить
в виде модели на графе,
то есть, используя вершины и ребра между
ними. Таким образом, вершины графа (на
рис.: От A до D) соответствуют городам, а
ребра
между
вершинами
и
—
пути сообщения между этими городами.
Каждому ребру
можно
сопоставить критерий выгодности маршрута
(На
рис.: 20, 42, …), который можно понимать
как, например, расстояние между городами,
время или стоимость поездки. Маршрутом
(также гамильтоновым маршрутом) называется
маршрут на таком графе, в который входит
по одному разу каждая вершина графа.
Задача заключается в отыскании кратчайшего
маршрута.
В целях упрощения задачи и гарантии существования маршрута, обычно считается, что модельный граф задачи является полностью связным, то есть, что между произвольной парой вершин существует ребро. В тех случаях, когда между отдельными городами не существует сообщения, этого можно достичь путем ввода рёбер с максимальной длиной. Из-за большой длины такое ребро никогда не попадет к оптимальному маршруту, если он существует.
В зависимости от того, какой критерий выгодности маршрута сопоставляется величине ребер, различают различные варианты задачи, важнейшими из которых являются симметричная и метрическая задачи.
Асимметричная и симметричная задачи
В общем случае, асимметричная задача коммивояжера отличается тем, что она моделируется ориентированным графом. Таким образом, следует также учитывать, в каком направлении находятся ребра.
В
случае симметричной задачи все пары
ребер между одними и теми же вершинами
имеют одинаковую длину, то есть, для
ребра
одинаковы
длины
.
В симметричном случае количество
возможных маршрутов вдвое меньше
асимметричного случая. Симметричная
задача моделируется неориентированным
графом (см. рисунок).
На самом деле, задача коммивояжёра в случае реальных городов может быть как симметричной, так и асимметричной в зависимости от длительности или длины маршрутов и от направления движения.
