0

プリムアルゴリズムの疑似コードを理解するのを手伝ってください(コアマンとウィキにあるように) プリムのアルゴリズム

    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 に属しているため (これまでのノードのキューはプリムの最小スパニング ツリーに含まれていません)、v Q でも、プリム MST の生成には役立ちません。

また、コアマンとウィキの状態の両方

 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 であるため、v が既に MST に含まれているため (v ∈ V - {r} - Q で示されているように)、なぜそれを含める必要があるのか​​ 1. が役立ちます。

4

1 に答える 1