克鲁斯卡尔2014数据结构高分笔记的克鲁斯卡尔算法,没看懂。 getRoot函数那个是怎么做到的?
克鲁斯卡尔 时间:2021-06-08 阅读:(
)
普里姆与克鲁斯卡尔算法有什么区别
克鲁斯卡尔算法:
是在剩下的所有未选取的边中,找最小边,如果和已选取的边构成回路,则放弃,选取次小边。
。
普里姆算法:
同样是在未选取的边中寻找最小边,但是选取的原则多了一条,就是该边必须和已选取的边相连,比如,如果边(1, 2)已被选取,那么接下来选取的边,必须是和顶点1,或者顶点2相连的。
。
就是这样。
。
如图所示:什么是克鲁斯卡尔算法
BlueSky2008说的是克鲁斯卡尔算法,算法复杂度为O(n^2*logn)
Prim算法是从点出发,选择与点集相连最短的边,然后从点来扩展,需要通过内存来存储已经选择的点集,但时间复杂度低,复杂度为O(n^2)。
Kruskal算法是从当前边集的最短边出发,这里要考虑到边的排序,排序复杂度为O(nlogn),计算n次,因此复杂度为O(n^2*logn)。
因此Prim算法总的效率比Kruskal算法高。
详见: /javado/archive/2006/07/15/10050.aspx什么是克鲁斯卡尔算法
设有一个有n个顶点的连通网N={V,E},最初先构造一个只有n个顶点,没有边的非连通图T={V, E},图中每个顶点自成一个连通分量。
当在E中选到一条具有最小权值的边时,若该边的两个顶点落在不同的连通分量上,则将此边加入到T中;否则将此边舍去,重新选择一条权值最小的边。
如此重复下去,直到所有顶点在同一个连通分量上为止。
2算法描述编辑克鲁斯卡尔算法的时间复杂度为O(eloge)(e为网中边的数目),因此它相对于普里姆算法而言,适合于求边稀疏的网的最小生成树。
克鲁斯卡尔算法从另一途径求网的最小生成树。
假设连通网N=(V,{E}),则令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{∮}),图中每个顶点自成一个连通分量。
在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去此边而选择下一条代价最小的边。
依次636f707962616964757a686964616f31333335323535类推,直至T中所有顶点都在同一连通分量上为止。
例如图为依照克鲁斯卡尔算法构造一棵最小生成树的过程。
代价分别为1,2,3,4的四条边由于满足上述条件,则先后被加入到T中,代价为5的两条边(1,4)和(3,4)被舍去。
因为它们依附的两顶点在同一连通分量上,它们若加入T中,则会使T中产生回路,而下一条代价(=5)最小的边(2,3)联结两个连通分量,则可加入T。
因此,构造成一棵最小生成树。
上述算法至多对 e条边各扫描一次,假若以“堆”来存放网中的边,则每次选择最小代价的边仅需O(loge)的时间(第一次需O(e))。
又生成树T的每个连通分量可看成是一个等价类,则构造T加入新的过程类似于求等价类的过程,由此可以以“树与等价类”中介绍的 mfsettp类型来描述T,使构造T的过程仅需用O(eloge)的时间,由此,克鲁斯卡尔算法的时间复杂度为O(eloge)。
[1]克鲁斯卡尔算法是求图的什么
求图的最小生成树啊,你上面不是也讲了么?
求最小生成树还有另一种prim算法
prim适合用于稠密图,kruskal适合用于稀疏图
两种算法都是以贪心为基本思想的~
满意望采纳谢谢!!!!请用克鲁斯卡尔算法为下图构造最小生成树,谢谢。
克鲁斯卡尔算法的基本思想,这是我自己结合教材理解的,难免有误,谨慎参考:
1:将图中的n顶点看成是n个集合。
解释为,图中共有6个顶点,那么就有六个集合。
即a,b,c,d,e,f各自分别都是一个集合。
{a},{b}等。
2:按权值由小到大的顺序选择边。
所选边应满足两个顶点不在同一个顶点集合内。
将该边放到生成树边的集合,同时将该边的两个顶点所在的集合合并。
这是书上的描述,可能有点难理解,这里解释一下:
首先,选择权值最小的边,即为图中的(a,c)边,此时a,c满足不在同一个顶点集合内,将这个边记录下来,然后合并这两个顶点的集合,即此时剩下五个顶点集合了,{a,c},{b},{d},{e},{f}
3:重复步骤2,直到所有的顶点都在同一个集合内!解释如下:
此时剩下的边中权值最小的为(d,f),满足不在同一个顶点集合,所以记录下该边,然后合并这两个顶点集合。
新的顶点集合为{a,c} {b} {e} {d,f}
接着,继续重复,选择边(b,e),满足不在同一个顶点集合内,所以记录下该边,然后再次合并这两个集合,新的集合为{a,c} {d,f} {b,e}
继续,选择边(c,f),满足不在同一个顶点集合内,所以记录下该边,然后合并这两个顶点所在的集合,新集合为{a,c,d,f} {b,e}
再继续,选择权值为15的边,发现边(c,d)和边(a,d)都不满足条件不在同一个顶点集合内,所以只能选择边(b,c),记录下该边,然后合并顶点集合,新集合为{a,b,c,d,e,f},此时所有点都在同一集合内,所以结束!
4:将上面我们记录的那些边连接起来就行了!这就是最小生成树,附本人手绘:2014数据结构高分笔记的克鲁斯卡尔算法,没看懂。 getRoot函数那个是怎么做到的?
例:
int FindRoot(int a)
{
if(Tree[a]==-1)//没有父节点,返回a
return a;
else
{
int tmp=FindRoot(Tree[a]);//存在父节点,递归返回离根最近的父节点id
Tree[a]=tmp;//将自己的父节点修改为最直接的父节点,使树变矮,优化
return tmp;//返回父节点
}
}
不知道高分笔记的克鲁斯卡尔算法具体怎么实现,但是原理如上
收到10gbiz发来的7月份优惠方案,中国香港、美国洛杉矶机房VPS主机4折优惠码,优惠后洛杉矶VPS月付2.36美元起,香港VPS月付2.75美元起。这是一家2020年成立的主机商,提供的产品包括独立服务器租用和VPS主机等,数据中心在美国洛杉矶、圣何塞和中国香港。商家VPS主机基于KVM架构,支持使用PayPal或者支付宝付款。洛杉矶VPS架构CPU内存硬盘带宽系统价格单核512MB10GB1...
百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...
韩国云服务器哪个好?韩国云服务器好用吗?韩国是距离我国很近的一个国家,很多站长用户在考虑国外云服务器时,也会将韩国云服务器列入其中。绝大部分用户都是接触的免备案香港和美国居多,在加上服务器确实不错,所以形成了习惯性依赖。但也有不少用户开始寻找其它的海外免备案云服务器,比如韩国云服务器。下面云服务器网(yuntue.com)就推荐最好用的韩国cn2云服务器,韩国CN2云服务器租用推荐。为什么推荐租用...
克鲁斯卡尔为你推荐
HoneypotF-secure杀毒软件的缺点和优点(出自哪个国家)?华为总裁女儿为啥姓孟总裁文女主姓孟,女主父母抱错孩子,后来将错就错,养父母对女主很好网络审计网络安全审计系统的背景jstz泰州哪里有民工市场kjava通用KJava是什么意思上传图片网站速度超快的上传图片网站点心os点心 OS 用户界面(UI)的设计理念是什么?翻译图片识别有那种根据图片识别上面的英文进行翻译的软件么?翻译图片识别寻求一款可以翻译照片或图片上英文的翻译软件。手机群发软件什么软件可以免费群发短信?
怎样申请域名 万网域名管理 百度云100as 韩国加速器 抢票工具 免空 新天域互联 服务器是干什么的 搜索引擎提交入口 vip域名 支持外链的相册 日本代理ip 双线空间 广东主机托管 服务器托管价格 双十二促销 restart ftp是什么东西 留言板 主机箱 更多