有人可以帮助/解释dijkstra的伪代码如何工作吗?

时间:2019-05-19 13:06:48

标签: pseudocode dijkstra greedy

作为决赛的一部分,我必须在星期二介绍贪婪算法。但是我正在努力理解Dijkstra算法的伪代码,这是我的任务之一。

维基百科的示例:

1个函数Dijkstra(图形,源):

2 dist [source]←0 //初始化

4创建顶点集Q

图中每个顶点v的6:

7,如果v≠源

8 dist [v]←INFINITY //源到v的未知距离

9 prev [v]←未定义// v的前身

11 Q.add_with_priority(v,dist [v])

14,而Q不为空://主循环

15 u←Q.extract_min()//删除并返回最佳 顶点

u的每个邻居v为16://仅剩Q的v

17 alt←dist [u] +长度(u,v)

18,如果alt

19 dist [v]←alt

20上一页[v]←u

21 Q.decrease_priority(v,alt)

22

23 return dist,上一个

来自TUM的示例: 开始

d(v [1])←0

FOR i = 2,..,n DO

d(v[i]) ← ∞, parent(v[i]) ← NULL

WHILE队列≠∅DO

u = queue.extractMin()

FOR ALL (u,w) ∈ E DO

  dist ← d(u) + l(u,w)

  IF w ∈ queue AND d(w) > dist DO

    d(w) = dist, parent(w) = (u,w)

  ELSE IF parent(w) == NULL THEN

    d(w) = dist, parent(w) = (u,w)

    queue.insert(w,dist)

END

0 个答案:

没有答案