生成树和最小生成树知识概括

生成树和最小生成树

1.生成树的概念
对于有n个顶点的连通图,至少有n-1条边,而生成树中恰好有n-1条边,所以连通图的生成树是该图的极小连通子图。若在图的生成树中任意加一条边,则必然形成回路。图a所示的无向图的一个生成树如图b所示,图c不是生成树,因为存在回路。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图的生成树不是唯一的。从不同的顶点出发,选择不同的存储方式,用不同的求解方法,可以得到不同的生成树。对于非连通图而言,每个连通分量中的顶点集合和遍历时走过的边集一起构成若干棵生成树,把它们称为非连通图的生成树森林。按深度和广度优先遍历搜索进行遍历将得到不同的生成树,分别称为深度优先生成树和广度优先生成树。例如。图a是广度优先生成树,图b是深度优先生成树。
在这里插入图片描述
在这里插入图片描述
2.最小生成树
对于连通图来说,边是带权值的,生成树的各边也带权值,因此把生成树各边的权值总和称为生成树的权,把权值最小的生成树称为最小生成树。求解最小生成树有许多实际的应用。常用的最小生成树求解算法有普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法。
(1)普里姆(Prim)算法。
以一个顶点U={u0}为初态,不断寻找与U中顶点相邻且代价最小的边的另一个顶点,扩充U集合直到U=V时为止。生成过程可以如图所示,a是原图,之后是生成过程。
在这里插入图片描述
在这里插入图片描述
普里姆算法的时间复杂度为O(n*2),与图中边数无关,因此该算法适合于求边稠密的网的最小生成树。
(2)克鲁斯卡尔(Kruskal)算法
克鲁斯卡尔求最小生成树的思想是假设初始状态为只有n个顶点而无边的非连通图T={V,{}},图中每个顶点自成一个分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去此边而选择下一条代价最小的边,直到T中所有顶点都在同一连通分量上为止。
构造方法如图所示(a)为初始图。
在这里插入图片描述
在这里插入图片描述

克鲁斯卡尔算法的时间复杂度为O(eloge),与图中的顶点树无关,因此该算法适合于求边稀疏的网的最小生成树。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值