【问题标题】:TSP Where Vertices Can be Visited Multiple Times可以多次访问顶点的 TSP
【发布时间】:2017-02-11 11:33:45
【问题描述】:

我正在寻求解决一个问题,其中我有一个加权有向图,我必须从原点开始,至少访问所有顶点一次,然后以尽可能最短的路径返回原点。本质上,这将是 TSP 的经典示例,除了我 DO NOT 具有每个顶点只能访问一次的约束。在我的情况下,除了原点之外的任何顶点都可以沿路径访问任意次数,如果这会使路径更短。因此,例如在包含顶点V1, V2, V3 的图中,这样的路径将是有效的,因为它是最短路径:

ORIGIN -> V1 -> V2 -> V1 -> V3 -> V1 -> ORIGIN

因此,我有点纠结于采用什么方法来解决这个问题,因为通常用于在指数时间内解决 TSP 问题的经典动态规划算法方法并不适合。

【问题讨论】:

    标签: graph-algorithm graph-theory directed-graph traveling-salesman


    【解决方案1】:

    典型的方法是创建一个距离矩阵,给出任意两个节点之间的最短路径距离。所以d(i,j) = 从ij 的最短路径(沿着网络边缘)。这可以使用 Dijkstra 算法来完成。

    现在只需求解距离为d(i,j) 的经典 TSP。您的 TSP 并不“知道”所遵循的实际路线可能涉及多次访问一个节点。同时保证车辆停在每个节点。

    现在,至于效率:正如@Codor 指出的那样,TSP 是 NP 难的,您的变体也是如此,因此您不会找到可证明最优的多项式时间算法。但是,对于 TSP,仍然有很多很多好的算法(启发式和精确算法),其中大多数应该适合您的问题。 (一般来说,DP 不是 适合 TSP 的方式。)

    【讨论】:

      【解决方案2】:

      为了部分回答问题,问题中描述的问题不承认多项式时间算法,除非P=NP 通过以下参数。显然,所提出的问题包括欧几里得的实例。然而,欧几里得实例的最优解没有重复节点,因为可以通过使用三角不等式删除额外的节点来改进这种解。但是根据TSP上的Wikipedia article,欧几​​里得TSP还是NP-hard。这意味着该问题中的任何多项式时间算法都能够将欧几里得 TSP 求解到多项式时间的最优性,除非P=NP,否则这是不可能的。

      【讨论】:

      • 感谢您的解释。我认为这是一个很常见的问题,我将尝试用一个简单的例子来解释它:假设我们有一辆校车离开学校,将孩子送到他们家,然后在所有孩子都上完课后返回学校掉了下来。假设我们在公共汽车上有孩子 A、B、C。公共汽车可以送孩子B,然后去孩子C家,现在如果从C到A家有直接路径,但是经过B家旁边的A家路径较短,我们应该走C - > B -> A,而不是 C -> A。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多