【发布时间】:2013-10-25 15:20:25
【问题描述】:
我们得到了一个具有正边权重的有向图 G(可能带有循环),并且还给出了从源 s 到每个顶点 v 的最小距离 D[v](D 是这样的数组)。
问题是找到从 s 到 v 长度为 D[v] 的路径的数组 N[v] = number,
线性时间。
现在这是一个我一直在努力解决的家庭作业问题。我正在按照以下想法工作:我试图通过适当地选择 G 的非循环子图来删除循环,然后尝试在子图中找到从 s 到 v 的最短路径。
但我无法明确地知道要做什么,所以我很感激任何帮助,比如关于做什么的定性想法。
【问题讨论】:
-
请注意,如果您添加限制“简单路径”,您可以通过发送
D=[n,n,...,n]来减少哈密顿路径问题。这是一个很好的直觉,通常问题本身也是 NPC,除非你错过了对图形结构的一些限制。 -
@amit, D[v] 是最短路径距离(从 s 到 v)而不是任意距离(并且是给定的)。
-
@SaeedAmiri 不确定我是否在关注。给出了最短距离,你要做的就是找出有多少条最短路径?
-
@amit,我猜是这样,因为我可以读到它是这样说的。 (似乎只是一个计数问题)
-
@amit :是的,所有顶点都给出了到 s 的最短距离。我们必须找到从 s 到 v 的最短路径的数量,但是对于每个 v。
标签: algorithm graph-algorithm shortest-path directed-graph