我一直在学习 Cormen 等人的书,我对他们提供的算法有点困惑。我已经通过维基百科了解 Prim 算法的概念是如何工作的,但我无法使用我书中提供的算法来模仿这种工作方式。
请参阅本章的在线副本: http ://www.cs.cmu.edu/afs/cs/academic/class/15451-s04/www/Lectures/minimumSpanningTrees.pdf
算法在上述链接的第 13 页给出,示例图在前一页。
现在,在示例案例中使用算法,在第一步中:
u <--- 节点 A 到 ExtractMin(Q)。然后根据图表在 Adj[u] 中有两个条目:节点 b 和节点 h。
现在首先设置 v <---- 节点 b。然后检查 v 是否属于 Q。确实如此。检查是否 w(u,v) < key[v]。真的。所以 PI[v] <--- u 和 key[v] <--- w(u, v)。我得到了这么多。这显示在第 12 页图表的 (b) 中。
但是算法说“对于 Adj[u] 中的每个 v”。
所以下一步应该设置v <---节点h。然后检查 v 是否属于 Q。确实如此!w(u,v) < key[v]?这是!因为 key[v] = 无穷大!但是该图显示了 (c) 部分的不同步骤!
啊啊啊!为什么?