为什么在图中找到最长的路径是NP难的

时间:2018-11-20 18:42:55

标签: algorithm graph-algorithm

link提到:

  

加权图中两个给定顶点s和t之间的最长路径   G与从G通过以下公式得出的图-G中的最短路径相同   改变每一个分量到它的否定。因此,如果路径最短   可以在-G中找到,然后最长的路径也可以在G中找到。

那么,如果这种转换可以将最长路径简化为最短路径问题,为什么为什么要找到最长路径呢?

转换后,我们遇到以下情况:

  • -G具有负周期,在这种情况下,无法找到-G中的最短路径
  • -G没有负周期,在这种情况下,Floy-Warshall或Bellman-Ford算法可以在多项式时间内找到-G中的最短路径

问题:

  1. 说没有负周期是否正确,找到最长路径的问题不是NP难的?

  2. 在存在负周期的情况下是否正确地说,节点之间仍然有最长的simple path,难于找到NP?

  3. 如果是这样,那么说在图中找到最长的简单路径是否具有NP难度是否更准确?

  4. 如果是这样,是否由于-G变换而说在图中找到最短的简单路径也是NP困难的?

    < / li>

修改

此链接更详细地解释了关于最长路径问题的困惑: https://hackernoon.com/shortest-and-longest-path-algorithms-job-interview-cheatsheet-2adc8e18869

2 个答案:

答案 0 :(得分:2)

这里的困惑是最长路径问题通常要求最长的简单路径,即最长的路径,没有重复的顶点。因此,可以将其简化为哈密顿路径问题,该问题被称为NP难题。

另一方面,

Bellman-Ford和类似的算法计算图形中的最短路径(注意:没有简单),即可以重复顶点。

您的四个问题:

  1. 不。如果-G中存在负循环,则G中根本没有最长的路径,因为您可以永远继续绕着循环行走。最长的simple路径可能仍然存在,但是无论是否存在负循环,问题都可以归结为哈密顿路径,因此仍然是NP问题。
  2. 的确! (如果图形是无向的。)

答案 1 :(得分:0)

  • 首先,最长路径问题通常是 NP-Hard(实际上是 NP-Complete)问题,甚至 当没有负边缘时。我试图从 基础知识,here;也为了证明 NP 完全,你可能想 检查这个one
  • 其次,对于各种类别的Graph,科学家们提出了 用多项式时间解决这个问题。 DAG 和树是两个这样的 种类。
  • 第三,对于 DAG,而一种选择是找到最短距离 在转换图中,-G(这在 Sedgewick 书中提到, 第 4 版),还有另一种替代方法,参见 here。两个都 在 theta(E+V) 时间运行。
  • 最后,对于你的问题 1 到 3 的答案,我会坚持 Berthur's answer。但是对于您的问题 4,请注意我们不做 像 -G 这样的变换,对于任意图 G。如果我们这样做,那么 它是一个 DAG。事实上,我们经常通过引用来证明最长路径问题作为NPC 哈密​​顿路径 - 与权重无关,更不用说负数了 权重。