【发布时间】:2014-06-25 00:03:24
【问题描述】:
我读过在图中查找Hamiltonian path 是否存在的问题是NP-Complete,并且由于Dijkstra's Shortest Path Algorithm 在多项式时间内运行,因此无法对其进行修改以找到最短的哈密顿路径。 (这个逻辑有效吗?)
但是,如果给定无向图上的两个节点(比如 A 和 Z)(所有边的成本都非负),并且给定的节点(A和 Z) 作为终点。鉴于这些规范,现在是否可以修改 Dijkstra 的算法以找到以 A 和 Z 作为端点的最短哈密顿路径? (多项式时间)
注意:我只关心从两个节点中找到最短的哈密顿路径。例如,如果有一个包含 26 个节点(标记为 A 到 Z)的图,那么通过所有点但从 A 开始并在 Z 结束的最短路径是什么。(我不关心找到其他不同的哈密顿路径端点,只有 A 和 Z)
附加问题:如果答案是“否”,但有另一种算法可以用来解决这个问题,它是什么算法,它的时间复杂度是多少?
(注意:这个问题有“hamiltonian-cycle”作为标签,即使我正在寻找一个 Hamiltonian PATH,因为我没有足够的代表来制作标签“hamiltonian-path”。但是,让我们说A和Z正好由一条边连接,那么通过找到最短哈密顿圈,然后去掉连接A和Z的边,可以找到最短哈密顿路径)
【问题讨论】:
-
你可以用任何东西解决任何问题;只是在这种情况下你不能有polynomial time reduction
-
在你的第一句话中:如果“P 和 NP 是否重合?”可以回答“是”,那么你的逻辑是有效的。
-
当某些特殊条件适用于问题时,可以在多项式时间内解决许多 NP 问题。这是因为有时,NP 问题是其最通用应用领域的 NP 问题。但是当你开始提出假设时,可能会有简化。您的问题中有多个“给定”,因此您有机会。
-
这个问题似乎是题外话,因为它是关于图论的。这是一个有趣的问题,但我认为它更适合math.stackexchange.com
标签: algorithm graph-theory dijkstra np-complete hamiltonian-cycle