如何在图表中找到最长的路径?我以为我可以使用深度优先搜索,但我找不到更简单的实现呢?
答案 0 :(得分:4)
正如brainjam在评论中指出的那样,NP是完整的。如果图是非循环的,它只是多项式。如果它的DAG甚至是线性的。再次查看the wikipage了解更多信息。
答案 1 :(得分:1)
尝试对有向图使用拓扑排序。 它专门用于任务调度......
答案 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 /(您的整数/双/等),然后使用最短路径算法