在DAG中找到具有正负权重的最长路径的示例

时间:2015-06-17 20:47:23

标签: algorithm directed-acyclic-graphs

我读到关键路径方法使用具有正权重的最长路径方法,它用于安排一组项目活动(时间值必须为正)。

在我的情况下,我需要找到DAG中具有正负权重的最长路径。我可以用什么来解决这个问题?我需要一个例子。

1 个答案:

答案 0 :(得分:3)

在DAG中找到最长路径并不真正“关心”只有正权重,而是使用Dynamic Programming (DP)按照以下公式完成:

D(target) = 0
D(i) = max { D(j) + w(i,j) | for each edge (i,j) }

以上是D(v),它是从v开始并以目标结束的最大长度路径。

Topological Sort的相反顺序遍历节点,它在O(V+E)中完成。

请注意,上面并不关心边缘是负还是正,它基本上是一种蛮力方法,当实现为DP时,通过多次重新计算相同的事物来更有效地完成。