为什么 Bellman-Ford 不能用于单源最长路径?
Why can't Bellman-Ford be used for Single Source Longest Path?
Dijkstra 不能用于最长路径,因为它使用 属性 当前最短路径肯定比其他路径之一短。当然,这是正确的,假设没有负边权重。这个概念也是最长路径在 Dijkstra 上不起作用的原因,因为当前的最长路径并不能保证以后不会有另一条更长的路径取更大的值。
另一方面,Bellman Ford 以较差的性能提供负权重的灵活性。这意味着对于 Bellman Ford,所以它不能像 Dijkstra 一样在贪婪 属性 上工作。所以这就是我感到困惑的原因 - 为什么 Bellman Ford 不能用于单源最长路径问题(NP 困难)?例如,我们可以简单地将一个图的所有权重乘以-1并找到最短路径,这将是原始图的最长路径。
Bellman–Ford 允许重用弧(否则即使存在负循环也会有明确定义的最短路径),而单源最长路径问题的 NP-hardness 源自以下事实它不会(否则你可以在将所有权重乘以 −1 后使用 Bellman–Ford)。
Dijkstra 不能用于最长路径,因为它使用 属性 当前最短路径肯定比其他路径之一短。当然,这是正确的,假设没有负边权重。这个概念也是最长路径在 Dijkstra 上不起作用的原因,因为当前的最长路径并不能保证以后不会有另一条更长的路径取更大的值。
另一方面,Bellman Ford 以较差的性能提供负权重的灵活性。这意味着对于 Bellman Ford,所以它不能像 Dijkstra 一样在贪婪 属性 上工作。所以这就是我感到困惑的原因 - 为什么 Bellman Ford 不能用于单源最长路径问题(NP 困难)?例如,我们可以简单地将一个图的所有权重乘以-1并找到最短路径,这将是原始图的最长路径。
Bellman–Ford 允许重用弧(否则即使存在负循环也会有明确定义的最短路径),而单源最长路径问题的 NP-hardness 源自以下事实它不会(否则你可以在将所有权重乘以 −1 后使用 Bellman–Ford)。