【问题标题】:Dijkstra's Algorithm pseudocode "U" symbolDijkstra 算法伪代码“U”符号
【发布时间】:2018-11-27 20:50:01
【问题描述】:

我目前正在尝试遵循 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 应该等于什么。有人可以解释一下吗?谢谢!

【问题讨论】:

  • 这是集合论中的联合运算符

标签: pseudocode dijkstra


【解决方案1】:

这是set union 运算符。这里的 S 是已经计算出最短路径的所有节点的集合,这条线的意思是“将节点 u 添加到该集合中”。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2014-08-17
    • 1970-01-01
    • 2021-03-23
    相关资源
    最近更新 更多