【发布时间】:2012-05-05 14:21:49
【问题描述】:
好的,因为这个练习,我发布了这个问题:
我们可以修改 Dijkstra 的算法,通过将最小值更改为最大值来解决单源最长路径问题吗?如果是这样,那么证明你的算法是正确的。如果不是,请提供一个反例。
对于这个练习或所有与 Dijkstra 算法相关的事情,我假设图中没有负权重。否则,它没有多大意义,因为即使对于最短路径问题,如果存在负边缘,Dijkstra 也无法正常工作。
好的,我的直觉回答了我:
是的,我认为可以修改。
我只是
- 将距离数组初始化为 MININT
- 将
distance[w] > distance[v]+weight更改为distance[w] < distance[v]+weight
然后我做了一些研究来验证我的答案。我找到了这篇文章:
Longest path between from a source to certain nodes in a DAG
首先我认为我的答案是错误的,因为上面的帖子。但是我发现上面帖子中的答案可能是错误的。它将单源最长路径问题与最长路径问题混为一谈。
同样在Bellman–Ford algorithm的wiki中,它说的很对:
Bellman-Ford 算法计算加权有向图中的单源最短路径。 对于只有非负边权重的图,更快的 Dijkstra 算法也解决了这个问题。因此,Bellman-Ford 主要用于具有负边权重的图。
所以我认为我的答案是正确的,对吧? Dijkstra 真的可以是单源最长路径问题,而且我的修改也是正确的,对吧?
【问题讨论】:
-
@Kristo,你能看看吗?
标签: algorithm data-structures graph dijkstra