如何找到从某个顶点可到达的所有边的总和?

时间:2016-09-16 09:15:50

标签: algorithm graph computer-science

  

考虑没有周期的有向图。我需要找到u每个u可从u到达的边的总重量(我们的意思是指vf[v] = f[u] + w(u,v)的路径。< / p>

现在,我想到的是运行拓扑排序然后开始从最后一个节点运行到第一个节点(可能通过交换边缘的方向)

然后我们正在评估f[d]

但是有问题;对于此图表,我们将计算Sub Test() Dim a As Boolean Dim b As Boolean a = True And 1 And 2 ' a = false b = True And 2 And 3 ' b = true MsgBox (a) MsgBox (b) End Sub 两次。我怎么能克服这个?

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用BFS或DFS来实现此目的。

UIPageViewController

请注意,我们会在total = 0 dfs (node): if visited[node] == 1: return visited[node] = 1 for all u connected to node: total += weight[node][u] dfs(u) 之后检查被访问者。

答案 1 :(得分:1)

您可以使用自下而上的方法。首先计算每个顶点的outdegree,现在具有0 outdegree的顶点对于它们将具有F [u] = 0。现在将所有这些顶点添加到队列Q中 你还需要存储Graph的转置,假设它是T。

While(!Q.empty){
u=Q.front();
Q.pop();
for all edges E originating from T[u]{
F[v]+=w; (where (u,v) was the edge with w as weight)
//now remove u from the graph
outdegree[v]--;
if(outdegree[v]==0)
Q.push(v);
}
}