我正在阅读“计算机算法基础”一书中的多阶段图问题。
它说:
Algorithm Graph(G,k,n,p)
{
cost[n]=0;
for j=n-1 to 1 step -1 do
{
Let r be a vertex such that<j,r> is an edge of G and c[j,r]+cost[r] is minimum
cost[j]=c[j,r]+cost[r]
}
}
作者说复杂性是O(| V | + | E |)。哪里的| V |是顶点的数量和| E |是边数。
我知道for循环运行总顶点数,内线必须选择近边。
我无法理解背后的逻辑
答案 0 :(得分:0)
为了进一步理解,请查看Dijsktra在算法上的算法,每个边缘也只考虑一次。运行时间为O(| E | + | V lg V |)。
因为多级图被分割成集,所以你可以通过set找到最短路径,因为你知道在设置X-1之前必须访问集合X到目标节点的顶点。您还知道同一组中的顶点之间没有边。简而言之,您知道处理它们的顺序,并且不必每次都考虑所有可能的顶点,如Dijsktra