所以我有这张图
我正在尝试构建其最小生成树。从顶点A开始,我去了A-B-F-E-D,之后没有地方可去,考虑到D的所有相邻顶点已经是树的一部分,我该如何继续前进?
另外,如何计算新边缘的值范围,使其成为最小生成树的一部分?
先谢谢你们。
答案 0 :(得分:3)
我认为你对Prim算法的工作方式有一点误解。根据您在上面给出的描述,看起来您认为Prim的算法是这样的:
这是关闭到Prim的算法如何工作,但它并不完全正确。在Prim的算法中,没有“当前”节点的概念。相反,您有两组节点:您添加的节点和未添加的节点。 Prim的算法然后就像这样:
在上面给出的图表中,您从节点A开始。遵循算法,我们查看连接到A的所有节点并获取最便宜的(B)并将其添加到“in”集合中。 “in”集现在包含A和B.
现在,我们查看“in”集中连接到任何的所有节点。那些是节点D,F,E和H.其中,最便宜的是H,所以我们将H加到我们的“in”集合中,现在是A,B和H.
我们再次查看“in”集中连接到任何的所有节点。那些是节点D,F,E,I和G.其中最便宜的是F,所以我们将其添加到。
如果重复此过程直到添加所有节点,并且在执行此操作的过程中跟踪您添加的边缘,则最终会得到整个图形的最小生成树。
希望这有帮助!