用于最小生成树分析的 Prims 算法

Prims Algorithm for Minimum Spanning Tree Analysis

算法:

图表:

(注:缺失边权,(T, Y, 8))

第一次迭代前:

最小优先级队列(开始时的最小键)

Q = [(S, 0), (T, ∞), (X, ∞), (Y, ∞), (Z, ∞)]

迭代 1:

U=S

Q = [(T, 6), (Y, 7), (X, ∞), (Z, ∞)]

更新 T 和 Y 的键

迭代 2:

U=T

Q = [(Z, -4), (X, 5), (Y, 7)]

更新 X、Y、Z 的键

迭代 3:

U=Z

Q = [(X, 5), (Y, 7)]

没有更新

迭代 4:

U = X

Q = [(Y, 7)]

没有更新

迭代 5:

U=Y

问=[]

没有更新

队列为空,循环终止

我们的最小生成树中有以下边:

(S, T, 6), (T, Z, 5), (T, Z, -4), (S, Y, 7)

成本 = 6 + 5 - 4 + 7 = 14

这显然不是 MST,因为我们还有其他成本更低的树,

(S,Y,7),(Y,X,-3),(X,T -2),(T,Z,-4)

成本 = 7 - 3 - 2 - 4 = -2

请帮我找出哪里做错了。

供参考: (请忽略红边)

迭代 1:

迭代 2:

迭代 3:

迭代 4:

迭代 5:

在计算机科学中,Prim 算法是一种寻找最小值的贪心算法 加权无向图.

的生成树

来源:https://en.wikipedia.org/wiki/Minimum_spanning_tree