Dijkstra的算法伪代码“ U”符号

时间:2018-11-27 20:50:01

标签: pseudocode dijkstra

我目前正在尝试遵循Dijkstra算法的伪代码,但是我很难理解其中的一行是什么意思。

DijkstrasAlgorithm(G, w, s)
    InitalizeSingleSource(G, s)
    S = 0
    Q = G.V
    while Q != 0
        u = ExtractMin(Q)
        S = S∪{u}
        for each vertex v ∈ G.Adj[u]
            Relax(u, v, w)

这部分“ S =S∪{u}”让我感到困惑。我不确定S应该等于什么。有人可以解释吗?谢谢!

1 个答案:

答案 0 :(得分:0)

这是set union运算符。 S是所有为其计算了最短路径的节点的集合,此行表示“将节点u添加到该集合”。

从机械上讲,S∪{u}是由S中已经存在的所有内容加上节点u组成的集合。这就是为什么S = S∪{u}意味着将u添加到S。

(请注意,我认为伪代码在声明S的地方有一个错字。您可能打算将其初始化为空集∅而不是数字0。)

Dijkstra的算法很难完全从伪代码理解。我建议您在某个地方查看教程,以便对发生的事情有一个高水平的直觉。通过将内容映射到您的概念理解上,更容易理解此伪代码。