图最长路径

时间:2010-03-27 11:44:48

标签: graph

如何在图表中找到最长的路径?我以为我可以使用深度优先搜索,但我找不到更简单的实现呢?

4 个答案:

答案 0 :(得分:4)

正如brainjam在评论中指出的那样,NP是完整的。如果图是非循环的,它只是多项式。如果它的DAG甚至是线性的。再次查看the wikipage了解更多信息。

答案 1 :(得分:1)

尝试对有向图使用拓扑排序。 它专门用于任务调度......

http://en.wikipedia.org/wiki/Topological_sorting

答案 2 :(得分:1)

如果它是DAG G =(V,E),你可以简单地进行拓扑排序。

然后将某个节点标记为s和t。

然后你可以使用动态编程,opt(I)= max(opt(j)+1)其中j边(j,I)在E中。

只需将opt(s)= 0和其他设置为-inf,并在拓扑排序中忽略s之前和t之后的节点(你不能从s到达这个节点,在你通过t后,你可以'返回)。

请注意,它仅适用于DAG(有向无环图)。

请注意,如果它不是DAG,那么你可以将每个边缘乘以-1然后使用Bellman Ford,但是如果你有一个负循环它将不起作用。

答案 3 :(得分:0)

将每个节点之间的路径的长度/权重保存为1 /(您的整数/双/等),然后使用最短路径算法