在负循环的情况下找到最短路径


13

给定有向循环图,其中每个边的权重可能为负,则“最短路径”的概念只有在没有负循环的情况下才有意义,在这种情况下,您可以应用Bellman-Ford算法。

但是,我感兴趣的是找到两个不涉及循环的顶点之间的最短路径(即,在您可能不会两次访问同一顶点的约束下)。这个问题研究得很好吗?可以采用Bellman-Ford算法的变体吗?如果没有,是否还有其他解决方案?

我也对等效的全对问题感兴趣,否则我可能会应用Floyd–Warshall。

Answers:


23

没有重复顶点的路径称为简单路径,因此您正在寻找带有负循环的图形中最短的简单路径。

这可以从最长路径问题中减少。如果有一个快速的问题求解器,则给定一个仅具有正边缘权重的图形,否定所有边缘权重并运行您的求解器将在原始图形中给出最长的路径。

因此,您的问题是NP-Hard。


1
这是一个很好的答案。我曾问过几个没有任何解决方案的IRL,当我向他们解释时,他们的反应与我的相同-“当然,我现在感到如​​此愚蠢”。
jleahy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.