有向无环图算法中单源最短路径的运行时间

时间:2019-05-20 13:47:33

标签: algorithm shortest-path

这是算法:

Topologically sort the Vertices of G
Initialize - Single - Source(G,s)
for each vertex u, taken in topologically sorted order
     for each vertex v in G.Adjacent[u]
         Relax(u,v,w) 
  • 拓扑排序的运行时为O(V + E),其中V-是 顶点和E-是许多边
  • 初始化-单个-源(G,s)具有运行时O(V)
  • 循环的主要问题是两倍:循环的两倍运行时间为O(V + E)。但是我不明白,为什么不是O(V * E)?因为对于每个顶点,我们都要经过每个边缘,并且通常一个嵌套的Loop(对于Loops,总共2个)的复杂度为O(N ^ 2),但在这种情况下,它不是真的。

1 个答案:

答案 0 :(得分:1)

对于每个顶点 u ,您仅迭代遍历 u 的边缘。每个不同的边缘只能访问一次,这就是为什么该算法需要O(V + E)时间的原因。

这假设您使用的是图形表示形式(如邻接列表,而不是矩阵),该表示形式允许快速访问每个顶点的相邻边。拓扑排序也需要这样做。