Хотя я думаю, что @templatetypedef верен, и это действительно является примером проблемы Гамильтониана, вы, вероятно, получите лучшие результаты, если поиск в Google будет для задачи коммивояжера - он достаточно близок, чтобы большинство (все?) Эвристик TSP работалии для вас (единственное отличие состоит в том, что TSP обычно описывается как добавление пути от конца к началу, поэтому он образует «кольцо», а не просто линию).TSP также обычно предполагает полный граф (то есть каждый узел соединяется с любым другим);если ваш график неполон, вы все равно можете использовать обычные алгоритмы, добавив бесконечную связь между любыми неподключенными узлами.
Жадный подход, который вы дали, обычно известен как эвристика "ближайшего соседа".,Это первый подход, который встречается почти со всеми.Его неоптимальные решения известны уже более века.К сожалению, все, что выполняется в разумные сроки, также будет иметь, по крайней мере, возможность получения неоптимальных решений (по крайней мере, при отсутствии ограничений на проблему).A *, вероятно, является наиболее распространенным алгоритмом для получения разумных (только слегка неоптимальных) результатов за разумное время.