Я ищу решение проблемы, когда у меня есть взвешенный ориентированный граф, и я должен начать с начала координат, посетить все вершины хотя бы один раз и вернуться в начало координат по кратчайшему пути. По сути, это будет классический пример TSP, за исключением того, что у меня НЕ есть ограничение, что каждая вершина может быть посещена только один раз. В моем случае любую вершину, за исключением начала координат, можно посещать любое количество раз по пути, если это делает путь короче. Так, например, в графе, содержащем вершины V1, V2, V3
, такой путь будет допустим, учитывая, что это кратчайший путь:
ORIGIN -> V1 -> V2 -> V1 -> V3 -> V1 -> ORIGIN
В результате я немного застрял в том, какой подход использовать для решения этой проблемы, поскольку классический подход алгоритма динамического программирования, который обычно используется для решения задач TSP в экспоненциальном времени, не подходит.