我必须找到从源s到目的地f的有向循环图中的最长路径。假设不存在正的重量循环 即使不存在正的权重循环,也存在0或负权重的循环。有人建议在这种情况下找到最长路径的算法。如果可能,请引用来源。
感谢
答案 0 :(得分:2)
只需否定边缘权重并运行最短路径算法(例如,Bellman-Ford)。
零重量循环可能是一个问题。你需要通过选择最短的(长度,而不是重量)来打破你的路径上的联系。一种方法是使你的权重成对( - (原始权重),1),成对添加,并进行词典排序。
答案 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)
它现在变小了。)
如果我们现在搜索最短路径怎么办?