ПОСТАНОВКА ЗАДАЧИ
Пусть имеется п городов. Расстояния между любой парой городов (i, j) известны и составляют dij, где i=1, m; j=1, n; i?j. Если прямого маршрута сообщения между городами не существует, а также для всех i=j полагаем, что dij=?. На этом основании расстояния между городами удобно представить в виде матрицы .


Рис. 1. Неориентированный граф задачи коммивояжера
Если городам поставить в соответствие вершины графа (рис. 1), а соединяющим их дорогам дуги, то в терминах теории графов задача заключается в определении гамильтонова контура минимальной длины. Гамильтоновым контуром называется путь, проходящий через все вершины графа, у которого начальная вершина совпадает с конечной, а длина контура определяется суммой длин всех дуг, входящих в контур. Таким образом, необходимо построить кольцевой маршрут проезда всех городов минимальной длины, начиная с любого пункта и в любую сторону.
Поскольку всего городов п, то коммивояжер, выехав из заданного города, должен побывать в остальных (n-1) городах только один раз. Следовательно, всего существует (n-1)! возможных маршрутов, среди которых один или несколько - оптимальные. В большинстве случаев можно предположить, что расстояние между городами i и j является симметричным и равно расстоянию от города j до города i, т.е. . Расстояния между городами запишем в виде соответствующей матрицы и обозначим ее через D. Если в задаче n городов, то D является матрицей размером с неотрицательными элементами , которые отображают длины дуг в сети городов. При n=5 количество возможных, вариантов маршрутов равно . Расстояния между городами заданы матрицей в табл. 1.
Таблица 1
i j |
1 |
2 |
3 |
4 |
5 |
1 |
? |
90 |
80 |
40 |
100 |
2 |
60 |
? |
40 |
50 |
70 |
3 |
50 |
30 |
? |
60 |
20 |
4 |
10 |
70 |
20 |
? |
50 |
5 |
20 |
40 |
50 |
20 |
? |
Маршрут можно представить в виде замкнутого контура, представляющего собой кольцевой маршрут, например, для графа, изображенного на рис. 1. Возможный вариант можно записать в виде совокупности соответствующих пар дуг:
Длина маршрута равна сумме соответствующих длин дуг матрицы расстояний, тогда целевую функцию можно записать так:

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