我能想到的唯一区别就是the Travelling Salesman Problem (TSP)我需要找到一个 图中所有顶点的最小排列和最短路径问题中,没有必要考虑我们可以搜索状态空间的所有顶点,以获得最小路径长度路由,任何人都可以建议更多的差异。
答案 0 :(得分:38)
你已经发现了本质的区别:TSP是找到一个包含图中每个节点的排列的路径,而在最短路径问题中,任何给定的最短路径都可能,通常会在图表中包含正确的节点子集。
其他差异包括:
如果您正在寻找对差异的准确陈述,我会说您只需要用更技术性和更精确的术语“简单循环访问图中的每个节点”来替换您对“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/