Это проблема NP-Hard , известная как Задача коммивояжера . По мере того, как количество городов для посещения растет, количество возможных путей растет в геометрической прогрессии.
Например, когда расстояние между городами удовлетворяет неравенству треугольника (например, обычное евклидово расстояние), вы можете использовать алгоритм branch и bound , чтобы получить решение, котороев лучшем случае постоянная величина, кратная худшему, чем оптимальное решение.
Для эвристических подходов алгоритмы поиска пучка, такие как генетические алгоритмы, могут использоваться для поиска приближенных решений.