【问题标题】:unable to comprehend prims algorithm无法理解prims算法
【发布时间】:2014-10-22 17:16:01
【问题描述】:

请帮助理解 prims 算法伪代码(在 coreman 和 wiki 中) Prim's algorithm.

    MST-PRIM (G, w, r) {
for each u ∈ G.V
u.key = ∞
u.parent = NIL
r.key = 0
Q = G.V
while (Q ≠ ø)
//1
u = Extract-Min(Q)
for each v ∈ G.Adj[u]
if (v ∈ Q) and w(u,v) < v.key
v.parent = u
v.key = w(u,v)}

我能够理解直到 1 或 while 循环 r.key=0 确保首先扫描根的邻居或相邻, 但是由于 u 已经属于 Q(到目前为止尚未包含在 prims 最小生成树中的节点队列)并且 v 也在 Q 中,因此无助于生成 prims MST。

同时也是 coreman 和维基状态

 1. A = { (v, v.parent) : v ∈ V - {r} - Q }.
2. The vertices already placed into the minimum spanning tree are those in V−Q.
3. For all vertices v ∈ Q, if v.parent ≠ NIL, then v.key < ∞ and v.key is the weight of a light edge 

在第 6-11 行的 while 循环的每次迭代之前, (v, v.parent) 将 v :: 连接到已经放置在最小生成树中的某个顶点。

因为 A 是我们的 MST,那么 1. 将如何提供帮助,因为 v 已经包含在我们的 MST 中(如 v ∈ V - {r} - Q 所示)为什么应该包含它。

【问题讨论】:

    标签: pseudocode prims-algorithm


    【解决方案1】:

    对于你有疑问的部分:

    u = Extract-Min(Q) 
    for each v ∈ G.Adj[u]
    if (v ∈ Q) and w(u,v) < v.key
    v.parent = u
    v.key = w(u,v)
    

    “对于每个顶点 v,属性 v:key 是连接到树中顶点的任何边的最小权重;按照惯例,如果没有这样的边,key = ∞。” (http://en.wikipedia.org/wiki/Prim's_algorithm)

    因此,u = Extract-Min(Q)会得到最小key的顶点。

    对于每个 v ∈ G.Adj[u] 会找到 u 的所有邻居。

    if (v ∈ Q) 和 w(u,v) 条件来消除循环并检查路径是否应该更新。

    然后以下代码行更新邻居边。

    v.parent = u
    v.key = w(u,v)
    

    “在第 6-11 行的 while 循环的每次迭代之前, 1. A = { (v, v.parent) : v ∈ V - {r} - Q }。 " (http://en.wikipedia.org/wiki/Prim's_algorithm)

    基于上面的语句,在while循环之前A为空为Q = G.V!在 while 循环之后,您将得到 A 包含形成 MST 的所有顶点。 A 中的每个顶点 v 都有一个父节点(v.parent)。对于根 r,其父级为 NIL。由于陈述 V - {r},根 r 被排除在外,但由于其子代以 v.parent 的形式存在,它存在于 A 中。

    因此,在此链接http://en.wikipedia.org/wiki/Prim's_algorithm 中,它指出:“2. 已放入最小生成树的顶点是 V-Q 中的顶点。”

    和“当算法终止时,最小优先级队列 Q 为空;因此 G 的最小生成树 A 为 A = { (v, v.parent) : v ∈ V - {r} }。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 2023-04-06
      • 2011-10-11
      • 2013-12-24
      • 1970-01-01
      相关资源
      最近更新 更多