找到从源s到目标f的有向循环图中的最长路径。假设不存在正的重量循环

时间:2010-10-04 15:39:47

标签: algorithm directed-graph

我必须找到从源s到目的地f的有向循环图中的最长路径。假设不存在正的重量循环 即使不存在正的权重循环,也存在0或负权重的循环。有人建议在这种情况下找到最长路径的算法。如果可能,请引用来源。

感谢

3 个答案:

答案 0 :(得分:2)

只需否定边缘权重并运行最短路径算法(例如,Bellman-Ford)。

零重量循环可能是一个问题。你需要通过选择最短的(长度,而不是重量)来打破你的路径上的联系。一种方法是使你的权重成对( - (原始权重),1),成对添加,并进行词典排序。

另见Longest Path between two vertices

答案 1 :(得分:0)

如果你有一个DCG,你可以在到达你的目标之前永远循环,这将是“最长的路径”。在这种情况下,问题是不完整的,根据具体情况,算法可能看起来不同。

这听起来像是家庭作业。

答案 2 :(得分:0)

我不确定这是否有效(需要检查)但是......你可以做类似的事情:

min = min weight on the graph
    max = max weight on the graph
为所有边设置新权重= wNew(e) = max - (wOld(e)-min)

现在有负面的重量,权重的顺序相反(意味着如果w(e1)大于w(e2)它现在变小了。)

如果我们现在搜索最短路径怎么办?