旅行推销员和寻找最短路径有什么区别?

时间:2011-10-14 05:28:47

标签: algorithm

我能想到的唯一区别就是the Travelling Salesman Problem (TSP)我需要找到一个 图中所有顶点的最小排列和最短路径问题中,没有必要考虑我们可以搜索状态空间的所有顶点,以获得最小路径长度路由,任何人都可以建议更多的差异。

4 个答案:

答案 0 :(得分:38)

你已经发现了本质的区别:TSP是找到一个包含图中每个节点的排列的路径,而在最短路径问题中,任何给定的最短路径都可能,通常会在图表中包含正确的节点子集。

其他差异包括:

  • TSP解决方案要求其答案为循环。
  • TSP解决方案必须在其路径中重复一个节点,而最短路径则不会(除非有人寻找从节点到自身的最短路径)。
  • TSP是NP完全问题,最短路径是已知的多项式时间。

如果您正在寻找对差异的准确陈述,我会说您只需要用更技术性和更精确的术语“简单循环访问图中的每个节点”来替换您对“permuation”的想法,或者更好, “汉密尔顿循环”:

  

TSP要求人们找到简单周期,覆盖图中具有最小权重的每个节点(或者,具有最小权重的Hamilton周期)。最短路径问题需要找到具有最小权重的两个给定节点之间的路径。最短路径不一定是哈密顿量,也不需要是循环。

答案 1 :(得分:8)

使用最短路径问题,您可以考虑两个节点之间的路径。使用TSP,您可以考虑所有节点之间的路径。这使得后者更加困难。

考虑节点A和B之间的两条路径。一条在D上,另一条在C上。让C上的一条路径变长。在最短路径问题中,此路径可立即被丢弃。在TSP中,完全有可能这条路径是整个解决方案的一部分,因为您必须访问C并稍后访问它可能会更加昂贵。

因此,您无法在类似但较小的子问题中分解TSP。

答案 2 :(得分:1)

在TSP中,您既需要访问所有节点,也需要返回起点。这极大地使问题复杂化。

答案 3 :(得分:1)

最短路径只是源和目标。我们需要找到它们之间的最短路径,显然输出必须是多项式时间的树。

寻找最短路径: -

  • 无向图: Dijkstra的列表O(V ^ 2)算法

  • 任意权重的定向图,没有负循环: Bellman-Ford算法时间复杂度O(VE

  • Floyd-Warshall的算法 用于查找所有对之间的最短路径

TSP(旅行商问题)并不像我们从源头覆盖每个节点,最后我们以最低成本到达源。最终必须有周期。 TSP是NP完全问题

<强>价:

https://en.wikipedia.org/wiki/Shortest_path_problem

https://en.wikipedia.org/wiki/Travelling_salesman_problem

http://www.geeksforgeeks.org/travelling-salesman-problem-set-1/

http://www.geeksforgeeks.org/greedy-algorithms-set-6-dijkstras-shortest-path-algorithm/

https://www.hackerearth.com/practice/algorithms/graphs/shortest-path-algorithms/tutorial/