颠倒弗洛伊德 - 沃尔霍尔

时间:2016-10-28 08:57:58

标签: algorithm graph-algorithm floyd-warshall

我有一个简单的问题。我知道这是NP的问题。如果你收到正确的反转算法Floyd-Warshall每对节点之间的最长路径?

1 个答案:

答案 0 :(得分:1)

这不起作用。问题是最长路径问题的结构根本不同。

或许不是很明显,但Floyd-Warshall使用最短路径问题的最优子结构属性。也就是说,从A到B到C的最短路径是从A到C的最短路径和从C到B的最短路径。

最长路径问题没有该属性,您可以在3节点示例中看到这一点:

    A
   / \
  B---C

从A到B的最长路径(回想一下LPP要求简单的路径,因此它在存在周期时仍然定义良好)显然是A,C,B (或者更一般地说,任何地方的最长路径长度为2),但是从A到C和B到C的最长路径都包括A ,因此这些部分甚至可以组合形成有效的路径。这是一个普遍的问题 - 如果你试图从两个子路径中构建一个完整的最长路径,子路径必须知道"关于彼此,所以他们不会重复节点。

当然你也可以很容易地证明LPP是NP难的(从汉密尔顿路径问题中减少),这并不能证明它不能在多项式时间内解决,但如果看起来你已经完成了所以你应该对结果持怀疑态度。毕竟我们不太可能在一个备用的下午随便解决P?= NP问题,特别是不明显的方式。