【问题标题】:Hamiltonian Path vs Shortest Path哈密​​顿路径与最短路径
【发布时间】:2013-02-04 14:55:19
【问题描述】:

在研究了这两个问题之后,我无法得出它们之间的区别。

哈密顿路径

哈密顿路径是图的两个顶点之间的路径,每个顶点只访问一次。给定一个图G 和两个不同的节点SE,在G 中是否存在从SE 的哈密顿路径?

我发现这个问题是 NP-Complete

最短路径

在图论中,最短路径问题是在图中找到两个顶点(或节点)之间的路径,使得其组成边的权重之和最小化的问题。 这个问题是P

它们之间的实际区别是什么?以及它们的复杂度是如何计算的?

【问题讨论】:

  • 对于汉密尔顿路径,如果不是“只访问每个顶点一次”而是说“访问图中的每个顶点,但只访问一次”,也许会更清楚。

标签: algorithm complexity-theory


【解决方案1】:

哈密顿路径问题实际上是在图中寻找最长的简单路径。不难看出,这两个问题基本上是等价的(最长简单路径和哈密顿路径)。这个问题确实是一个经典的 NP-Complete 问题。
它是 NP 完全的,因为从另一个(已经证明的)NP-Hard 问题到这个问题存在多项式归约,因此(从多项式归约的传递性)这个问题也是 NP-Hard。因为它也是NP,所以它是NP-Complete。

另一方面,最短路径是不同的,它问从A点到B点的最短路是什么,它在P中,因为有一个多项式时间算法可以解决它(Dijkstra's algorithmBellman-FordBFS 用于非加权图)。


关于"And how is there complexity calculated?" 我假设您的意思是我们如何确定它们的复杂性类 - 在这种情况下,最短路径在 P 中,因为我们有一个确定性多项式时间算法来解决它(上面提到的一些),而哈密顿路径的复杂性类是 NP-Complete,因为它既是 NP-Hard(另一个已证明的 NP-Hard 问题存在多项式约简),又是 NP(我们可以在非确定性图灵的多项式时间内轻松解决它机器)。
请注意,我们不知道哈密顿路径是否在 P 中,因为我们不知道 P=NP

【讨论】:

  • 首先感谢您的回答。只是为了确保我理解所有内容,主要区别在于:Hamiltonian 路径问题(或最长路径问题):访问图中的每个节点并且只访问一次很重要。 最短路径问题:它不限制我们访问一个节点的次数,也不要求访问每个节点。
  • @cgval:确切地说,准确地说,除非图中存在负循环(然后术语“最短路径”有问题),每个顶点最多访问一次(因为否则我们可以通过修剪一个循环来缩短路径),但不访问节点也可以。
【解决方案2】:

任意节点之间的最长路径和最短路径的区别在于,最短路径问题有一个最优子结构,因此可以用动态规划求解;最长路径问题没有最优子结构,无法使用动态规划求解。如果可以从其子问题的最优解构造最优解,则称该问题具有最优子结构。 example

如上图所示。从 q 到 t 的最短路径包括从 q 到 r 的最短路径。但是q到t的最长路径是q-r-t,q到r的最长路径是q-s-t-r,不包含在q-r-t中。这是因为最长路径的子问题不是相互独立的。从 q 到 r 的最长路径是 q-s-r-t。从 r 到 t 的最长路径是 r-q-s-t。这两个问题有重叠,所以它们不是独立的,所以这个问题没有最优子结构,所以不能用动态规划和贪心算法来解决。

【讨论】:

  • 我忘了提到哈密顿路径可以简化为最长路径问题,如果你谷歌“最长路径问题”,维基页面会出来,它在解释上做得很好。
  • 为什么我比较最长路径和最短路径,而不是哈密顿路径和最短路径。
猜你喜欢
  • 1970-01-01
  • 2020-10-03
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 2011-03-17
  • 2023-03-08
  • 2014-12-20
相关资源
最近更新 更多