在有向非循环加权图中查找前3个最长路径

时间:2016-07-21 17:32:39

标签: algorithm graph directed-acyclic-graphs

我能够使用this algorithm找到加权DAG中的最长路径(使用拓扑排序,然后放宽每条边)。我现在的问题是,是否有算法可以找到DAG的前3个最长路径?或者,是否有任何javascript或java库实现此算法?

1 个答案:

答案 0 :(得分:0)

您可以轻松计算第一个最长路径,并且可以使用以下算法查找下一个最长路径:

逐个删除主要最长路径的每个边缘,然后再次运行算法以找到修改后的图形上的最长路径,然后放回已删除的边缘并删除另一条边缘。

为什么会这样?
你需要一条不完全是第一条最长路径的路径,所以第二条最长路径必须至少在一条边上不同,所以如果忽略一条边并找到每条边的最长路径,你最终会找到一条最长路径不要与主要最长路径共享至少一条边。
第三长路径是最长路径的路径,并且不与第一和第二最长路径共享至少一条边。