如何在线性时间内找到图中最长的路径,如下所示:
3 - > 2
4 - > 3
2 - > 5
我知道这里最长的路径是4 - > 3 - > 2所以它有3个veticles但我不知道如何在O(N)时间找到它。请帮忙。 提前谢谢你。
答案 0 :(得分:0)
对图表进行排序,并按拓扑排序顺序选择顶点。
For each vertex u
For each edge (u,v)
if(d[v] < d[u] + weight(u,v))
d[v] = d[u] + weight(u,v)
其中,对于任何顶点u,d [u]是距离源最远的距离。对于每个顶点u,d [u]初始化为最小值,d [source] = 0。
由于它是DAG,因此我们只需要遍历和放松每个边缘一次。它基本上简化了Bellman Ford算法的最长路径。