问题描述
Dijkstra不能用于最长路径,因为它使用的属性是当前最短路径肯定会比其他路径之一短。当然,假设没有负边缘权重,这是正确的。这个概念也是为什么最长路径在Dijkstra上不起作用的原因,因为当前的最长路径不能保证以后不会再有更长的路径使用更大的值。
另一方面,贝尔曼·福特(Bellman Ford)具有负重的灵活性,但性能较差。这意味着对于Bellman Ford,因此无法在与Dijkstra相同的贪婪属性上使用。这就是为什么我很困惑-为什么不能将Bellman Ford用于单源最长路径问题(NP困难)?例如,我们可以简单地将图的所有权重乘以-1并找到最短路径,该路径将是原始图的最长路径。
解决方法
Bellman-Ford允许重用电弧(否则,即使存在负循环,也将有明确定义的最短路径),而Single Source Longest Path问题则源于NP硬度,而事实并非如此(否则,您可以在将所有权重乘以−1之后再使用Bellman–Ford。