【最小生成树】讲解
来源:互联网 发布:如何解除电脑网络限制 编辑:程序博客网 时间:2024/05/21 15:50
最小生成树讲解
从点的方面考虑构建一颗MST,大致思想:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V,再从集合U-V中找到另一点b使得点b到V中任意一点的权值最小,此时将b点也加入集合V;以此类推,现在的集合V={a,b},再从集合U-V中找到另一点c使得点c到V中任意一点的权值最小,此时将c点加入集合V,直至所有顶点全部被加入V,此时就构建出了一颗MST。因为有N个顶点,所以该MST就有N-1条边,每一次向集合V中加入一个点,就意味着找到一条MST的边。
lowcost[i]:表示以i为终点的边的最小权值,当lowcost[i]=0说明以i为终点的边的最小权值=0,也就是表示i点加入了MST
mst[i]:表示对应lowcost[i]的起点,即说明边<mst[i],i>是MST的一条边,当mst[i]=0表示起点i加入MST
我们假设V1是起始点,进行初始化
lowcost[2]=6,lowcost[3]=1,lowcost[4]=5,lowcost[5]=∞,lowcost[6]=∞;
mst[2]=1, mst[3]=1, mst[4]=1, mst[5]=1, mst[6]=1,(所有点默认起点是V1)
明显看出,以V3为终点的边的权值最小=1,所以边<mst[3],3>=1加入MST
此时,因为点V3的加入,需要更新lowcost数组和mst数组:
lowcost[2]=5,lowcost[3]=0,lowcost[4]=5,lowcost[5]=6,lowcost[6]=4
mst[2]=3, mst[3]=0, mst[4]=1, mst[5]=3, mst[6]=3
明显看出,以V6为终点的边的权值最小=4,所以边<mst[6],6>=4加入MST
<u,v>= cost
因为点V6的加入,需要更新lowcost数组和mst数组:
lowcost[2]=5,lowcost[3]=0,lowcost[4]=2,lowcost[5]=6,lowcost[6]=0
mst[2]=3, mst[3]=0, mst[4]=6, mst[5]=3, mst[6]=0
明显看出,以V4为终点的边的权值最小=2,所以边<mst[4],4>=4加入MST
此时,因为点V4的加入,需要更新lowcost数组和mst数组:
lowcost[2]=5,lowcost[3]=0,lowcost[4]=0,lowcost[5]=6,lowcost[6]=0
mst[2]=3, mst[3]=0, mst[4]=0, mst[5]=3, mst[6]=0
明显看出,以V2为终点的边的权值最小=5,所以边<mst[2],2>=5加入MST
此时,因为点V2的加入,需要更新lowcost数组和mst数组:
lowcost[2]=0,lowcost[3]=0,lowcost[4]=0,lowcost[5]=3,lowcost[6]=0
mst[2]=0, mst[3]=0, mst[4]=0, mst[5]=2, mst[6]=0
很明显,以V5为终点的边的权值最小=3,所以边<mst[5],5>=3加入MST
lowcost[2]=0,lowcost[3]=0,lowcost[4]=0,lowcost[5]=0,lowcost[6]=0
mst[2]=0, mst[3]=0, mst[4]=0, mst[5]=0, mst[6]=0
至此,MST构建成功,如图所示:
- 最小生成树讲解
- 【最小生成树】讲解
- 最小生成树讲解
- 最小生成树的讲解
- 最小生成树 prim算法 讲解
- 集训8.16最小生成树讲解
- poj1679The Unique MST判断最小生成树是否唯一以及求次小生成树边权和的讲解
- 图论总结,查分约束系统讲解,最短路,最小生成树,二分图
- 最小比例 最小生成树
- 最小生成树&&次最小生成树
- 最小生成生成树计数
- 树+最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树Kruskal
- kruskal 最小生成树
- 最小生成树
- 最小生成树
- 无人驾驶中的人工智能技术(Drive.Ai)
- java 动态代理aop 实现日志记录
- 碰撞的蚂蚁
- windows下配置eclipse,开发maven项目
- CCF NOI1115 找数
- 【最小生成树】讲解
- java中算术运算符
- POJ3254_Corn Field_状压DP
- Google Voice注册 美国手机号注册微信
- java内存管理机制
- 判断直线相交
- 重装系统 u盘容量变小
- Unity 3D
- 最大流的各种变体问题