具有加权顶点的DAG算法

时间:2015-10-22 04:52:38

标签: algorithm graph directed-acyclic-graphs

令G =(V,E)为DAG(有向无环图)。每个顶点v具有分配给它的权重w(v)。给定顶点u,设f(u)= max {w(v)其中v可以达到u}。因此,换句话说,f(u)是可以到达u的所有顶点的权重中的最大权重。目标是编写一个线性时间算法,该算法计算G中每个顶点u的f(u)。

例如,让它成为输入图:

graph http://oi60.tinypic.com/2mdp0yx.jpg

然后算法应计算以下内容:

  • f(A)= 5
  • f(B)= 12
  • f(C)= 15
  • f(D)= 12
  • f(E)= 12

在O(n(n + m))时间内完成此操作很简单,但如何在O(n + m)时间内完成?

1 个答案:

答案 0 :(得分:2)

进行拓扑排序,然后按此顺序浏览节点,并为每个节点分配自身权重的最大值和前一个前任的f(即具有通向当前节点的边缘的节点) )。