一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边。所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接起来,并且使得权值的和最小。...综合以上两个概念,我们可以得出:构造连通网的最小代价生成树,即最小生成树(Minimum Cost Spanning Tree)。...找连通图的最小生成树,经典的有两种算法,普里姆算法和克鲁斯卡尔算法,这里介绍普里姆算法。
为了能够讲明白这个算法,我们先构造网图的邻接矩阵,如图7-6-3的右图所示。
?...下面我们对着程序和每一步循环的图示来看:
算法代码:(改编自《大话数据结构》)
/* Prim算法生成最小生成树 */
void MiniSpanTree_Prim(MGraph MG)
{
...即最小生成树的边为:(0, 1), (0, 5), (1, 8), (8, 2), (1, 6), (6, 7), (7, 4), (7, 3)
最后再来总结一下普里姆算法的定义:
Screenshot