Открыть сервис

Задача коммивояжёра

Задача коммивояжёра (англ. travelling salesman problem, TSP) — это классическая задача комбинаторной оптимизации, заключающаяся в поиске самого короткого замкнутого маршрута, проходящего через заданный набор городов (точек) ровно по одному разу и возвращающегося в исходный город. Относится к классу NP-трудных задач, что означает отсутствие известного эффективного (полиномиального) алгоритма для её точного решения в общем случае при большом числе городов. Формально задачу можно определить на полном взвешенном графе, где вершины — города, рёбра — пути между ними, а веса рёбер — расстояния или стоимость проезда. Цель — найти гамильтонов цикл минимального суммарного веса.

История

Первые упоминания задачи, сходной с задачей коммивояжёра, встречаются в математических трактатах XIX века. В 1832 году в немецком «Справочнике для коммивояжёров» описывались практические советы по построению маршрутов, однако формальная математическая постановка была предложена позднее. В 1930-х годах задача активно изучалась в Вене и Принстоне, в частности Карлом Менгером, который сформулировал её как поиск кратчайшего маршрута, проходящего через все заданные точки. В 1954 году Джордж Данциг, Рэй Фалкерсон и Селмер Джонсон впервые решили задачу для 49 городов (столиц штатов США) с помощью метода отсечений, что стало важным этапом в развитии методов целочисленного линейного программирования. С тех пор TSP остаётся одной из самых изучаемых задач в области оптимизации и теории алгоритмов.

Формальная постановка

Пусть задано множество городов \( V = \{v_1, v_2, \dots, v_n\} \) и матрица расстояний \( C = (c_{ij}) \), где \( c_{ij} \) — расстояние (или стоимость) между городами \( v_i \) и \( v_j \). Матрица может быть симметричной (если расстояния одинаковы в обоих направлениях) или асимметричной (например, при учёте одностороннего движения). Задача заключается в нахождении перестановки \( \pi \) городов, такой что суммарное расстояние \[ \sum_{i=1}^{n-1} c_{\pi(i), \pi(i+1)} + c_{\pi(n), \pi(1)} \] минимально.

Варианты задачи

Сложность и NP-трудность

Задача коммивояжёра является NP-трудной, что доказано сведением к ней задачи о гамильтоновом цикле. Это означает, что если бы существовал полиномиальный алгоритм для точного решения TSP, то все задачи класса NP решались бы за полиномиальное время, что маловероятно (гипотеза P ≠ NP). Для \( n \) городов число возможных маршрутов равно \( (n-1)!/2 \) для симметричной задачи, что делает полный перебор практически невозможным при \( n > 20 \). Например, для 50 городов число маршрутов превышает \( 3 \times 10^{62} \).

Методы решения

Точные алгоритмы

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

Приближённые алгоритмы

Для метрической TSP существуют алгоритмы с гарантированной точностью:

Метаэвристики

Для больших размерностей (сотни и тысячи городов) применяют:

Применение

Задача коммивояжёра имеет широкое практическое применение в различных областях:

Рекорды и известные примеры

Критика и ограничения

Несмотря на обилие алгоритмов, точное решение TSP для больших размеров (более 1000 городов) остаётся вычислительно дорогим и часто непрактичным. Приближённые методы не гарантируют оптимальности, а их точность сильно зависит от структуры данных. Кроме того, в реальных задачах часто присутствуют дополнительные ограничения (временные окна, пропускная способность дорог, динамические изменения), которые превращают TSP в более сложные варианты (например, задача коммивояжёра с временными окнами — TSPTW). Критики отмечают, что классическая постановка редко встречается в чистом виде на практике, и её популярность во многом обусловлена математической красотой и фундаментальностью.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →