假设我们有一个强连通有向图G(V,E),边带权重为正,V0属于V.写一个算法,通过V0找到所有节点对之间的最短路径
面试问题。显然,我们可以使用Bellman-Ford,它需要O(VE)。
然而,必须存在更好的解决方案。有什么帮助吗?
答案 0 :(得分:2)
我想你甚至可以使用Dijkstra的算法。运行一次以找到从V0到所有其他顶点的最短路径,然后再找到从每个其他顶点到V0的最短路径(这与在反向边缘的图上运行常规Dijkstra相同)。然后,对于任何对(V1,V2),将V1到V0以及从V0到V2的路径连接起来。