【发布时间】:2017-01-22 04:53:22
【问题描述】:
让
G(V,E),一个带有加权边的有向图(w:E -> R)和一个r在V中。众所周知,对于每个u都有一条最轻的路径(按权重),这也是一条最短的路径(按边),从r到u。描述一种算法来找到从r到每个u的最轻路径。
所以我想到的只是简单地从r 运行一个 BFS 算法,并进行简单的更改;当我们到达顶点v 时,我们对从它出来的所有边进行排序,并按边的顺序(从小到大)将顶点放入队列中。
这样我们得到了一张最短路径图(正如 BFS 应该做的那样),但我们也更喜欢两条最短路径中最轻的一条。
假设我的算法是正确的,问题是它不是最有效的算法,因为我们必须对总和为O(|E|lg |E|) 的所有边进行排序。
如何在线性时间内完成 (O(|V|+|E|)?
【问题讨论】:
标签: algorithm graph computer-science