最小生成树

以下内容来自陈越姥姥《数据结构(第2版)》,笔记仅供自己参考。

最小生成树(Minimum Spanning Tree,MST):如果无向连通图是一个网图,它的所有生成树中必有一棵边的权值总和最小的生成树。对于任意的一个带权的连通网图来说,最小生成树不一定唯一。

Prim算法

Prim算法的思想就是Grow a Tree,从任何一个顶点出发,构建过程从初始只有这个顶点的“当前树”开始,不断加入边和相关顶点到“当前树”中,使得树不断生长。每次选择一个最好的顶点,所谓最好的顶点,就是到当前树的距离最小的顶点,经过n-1步的生长就可以得到n个顶点的网图。

邻接矩阵存储图的Prime算法:

#define ERROR -1//错误标记,表示生成树不存在

int Prim(MGraph Graph,LGraph MST)
{
   //将最小生成树保存为邻接表存储的图MST,返回最小权重和
//由于最后产生的最小生成树肯定是稀疏图,所以我们用邻接表来存储它
	WeightType dist[MaxVertexNum],TotalWeight;
	Vertex parent[MaxVertexNum],V,W;
	int VCount;
	Edge E;
	
	//初始化,默认初始点下标为0
	for(V=0;V<Graph->Nv;V++) {
   
		//这里假设若V到W没有直接的边,则Graph->G[V][W]定义为INFINITY
		dist[V]=Graph-&g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值