我目前正在尝试遵循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应该等于什么。有人可以解释吗?谢谢!
答案 0 :(得分:0)
这是set union运算符。 S是所有为其计算了最短路径的节点的集合,此行表示“将节点u添加到该集合”。
从机械上讲,S∪{u}是由S中已经存在的所有内容加上节点u组成的集合。这就是为什么S = S∪{u}意味着将u添加到S。
(请注意,我认为伪代码在声明S的地方有一个错字。您可能打算将其初始化为空集∅而不是数字0。)
Dijkstra的算法很难完全从伪代码理解。我建议您在某个地方查看教程,以便对发生的事情有一个高水平的直觉。通过将内容映射到您的概念理解上,更容易理解此伪代码。