【发布时间】:2015-04-26 13:09:17
【问题描述】:
如何修改 Floyd-Warshall 算法以找到保持 O(V^3) 时间复杂度的有向图的任何负成本循环的最短路径?
【问题讨论】:
标签: algorithm graph-algorithm shortest-path floyd-warshall
如何修改 Floyd-Warshall 算法以找到保持 O(V^3) 时间复杂度的有向图的任何负成本循环的最短路径?
【问题讨论】:
标签: algorithm graph-algorithm shortest-path floyd-warshall
对于每条路径,在负循环图中没有最短路径 - 可以通过再遍历循环一次来找到更短的路径。
如果您指的是最短简单路径(每个顶点最多可以访问一次)- 除非P=NP,否则无法完成,而且很可能不是。
假设您有一个有效的最短简单路径算法A。
给定Longest Path Problem 的一个实例和一个图形G=(V,E,w),创建一个新图形G'=(V,E,w'),其中w'(u,v) = -1*w(u,v)。现在在G' 上调用A,你得到了G' 上最短的简单路径——这是G 上最长的路径。
但是,由于最长路径是 NP-Hard - 除非 P=NP,否则这样的解决方案是不可能的。
tl;博士:
O(V^3) 时间的负循环图中找到最短的简单路径(除非 P=NP,即使这样也不一定是 O(V^3))。【讨论】: