【发布时间】:2015-05-24 13:02:06
【问题描述】:
这是一个问题: 给定一个有向图 G=(V,E),源顶点 s $epsilon V,我们知道 G 中的所有环都是正权重(>0)。在运行 Bellman-Ford 之后,我们也得到了图表,这意味着对于 V 中的每个 v,我们都知道 d[v](从 s 到 v 的最短路径)和 pi[v](v 的前任)
描述一个算法来找到V中所有v的从s到v的最短路径数。该算法必须在O(V+E)中运行
*我们无法编辑算法上的 Bellman-Ford 运行
这就是我的想法: 我们运行一个修改后的 DFS,
算法(G,s):
1.DFS-Visit(G,s)
2. return count[v] foreach v in V
DFS-访问(G,u):
1.foreach v in Adj[u]
2.if d[v] == d[u] + w(u,v) && (u,v) is not a backedge
3.count[v] = count[v] + 1
4.DFS-visit(G,v)
*算法似乎会陷入无限循环,也许我可以忽略后端? (因为最短路径总是很简单)
在那个问题中,图在这里是未加权的(边) 你认为这是正确的吗? 谢谢
【问题讨论】:
-
在那个问题中,图表未加权@AmiTavory
-
抱歉,可能错过了。
-
由于时间复杂度限制,我们不能使用 Bellman-Ford?!因为否则,我们也可以使用 Bellman-Ford 找到最短路径的数量。