Prim - Prim 算法
问题
用Prim算法求无向图的最小生成树。
解法
Prim算法是一种贪心算法,按照以下步骤操作:
初始时设生成树为空,边集合为,点集合为。将任意顶点作为初始顶点加入生成树的点集合中,得到;
在的所有临边(生成树的临边是一个顶点属于生成树,另一个顶点不属于生成树的边)中找到权值最小的临边。设边中,,将该边加入生成树中:将顶点加入生成树点集合,将边加入生成树边集合;
重复上述操作,直到为止,算法结束。这时即为无向图的最小生成树。
上图演示了无向图使用Prim算法求最小生成树的过程,从顶点开始。需要注意每次选择新的边时,是从的所有顶点的临边中选择,不是仅仅从最近一个访问的顶点的临边中选取。
Prim算法的时间复杂度为,其中表示平均每个顶点的邻节点数量。