算法概要:
对于图G=(V,E)
X={1},Y=V-{1}
对于每个v∈\in∈Y,如果存在从点1到v的边,则令λ\lambdaλ[v]为边的长度;否则令λ\lambdaλ[v]为∞\infin∞,并设λ\lambdaλ[1]为0
while Y ≠\neq̸={}
令y∈\in∈Y,使得λ\lambdaλ[y]最小
将y从Y移到X
更新那些在Y中与y相邻的顶点的标记
end while
伪代码:
输入:含权有向图G=(V,E),V={1,2,…n}
输出:G中顶点1到其他顶点的最短距离
X={1};Y←\leftarrow←V - {1};λ\lambdaλ[1]←\leftarrow← 0
for y ←\leftarrow← 2 to n
if y 相邻于1 then λ\lambdaλ[y] ←\leftarrow← length[1,y]
else λ\lambdaλ[y] ←\leftarrow← ∞\infin∞
end if
end for**
for j ←\leftarrow← 1 to n-1
令y ∈\in∈Y,使得λ\lambdaλ[y]最小
X←\leftarrow← X⋃\bigcup⋃{y}
Y←\leftarrow← Y-{y}
for 每条边(y,w)
if w∈\in∈ Y and λ\lambdaλ[y] +length[y,w] < λ\lambdaλ[w] then
λ\lambdaλ[w] ←\leftarrow← λ\lambdaλ[y] +length[y,w]
end for
end for
Dijkstra算法——求最短路径
最新推荐文章于 2023-01-29 12:35:12 发布