数据结构图chapter 8(3)Kruskal算法 .pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2.E(G)的边按权值从小到大排序;//堆排序法时间复杂度O(eloge)首先将V(G)分为n个等价类,每个等价类包括一个顶点;然后以权值的大小为顺序处理各条边,如果某条边连接两个不同等价类的顶点,则这条边被添加到MST(选取的边不与前面选取的边构成回路),两个等价类被合并为一个;反复执行此过程,直到只剩下一个等价类。时间复杂度:设n为图的顶点数,e为边数Prim:O(n2)Kruskal:取决于边数以及权值排序算法Prim算法适于n小的稠密图;Kruskal算法适于n大的稀疏图**首先,我们可以发现有这样一个事实:如果P是G中从vs到vj的最短路,vi是P中的一个点,那么,从vs沿P到vi的路是从vs到vi的最短路。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。一种用永久和临时标号方式,一种是用OPEN,CLOSE表方式,Drew为了和下面要介绍的A*算法和D*算法表述一致,这里均采用OPEN,CLOSE表的方式。其采用的是贪心法的算法策略大概过程:创建两个表,OPEN,CLOSE。OPEN表保存所有已生成而未考察的节点,CLOSED表中记录已访问过的节点。1.访问路网中距离起始点最近且没有被检查过的点,把这个点放入OPEN组中等待检查。2.从OPEN表中找出距起始点最近的点,找出这个点的所有子节点,把这个点放到CLOSE表中。3.遍历考察这个点的子节点。求出这些子节点距起始点的距离值,放子节点到OPEN表中。4.重复第2和第3步,直到OPEN表为空,或找到目标点。*Dijkstra算法的具体做法:一开始第一组S只包括顶点v0,第二组包括其它所有顶点;v0对应的距离值为0,而第二组的顶点对应的距离值这样确定:若图中有边v0,Vi或者(v0,Vi),则Vi的距离值为此边所带的权,否则Vi的距离值为∞。然后,每次从第二组的顶点中选一个其距离值为最小的顶点Vu加入到第一组中;每往第一组加入一个顶点Vu,就要对第二组的各顶点的距离值进行一次修正:若加进Vm做中间顶点,使从s到Vi的最短路径比不加Vm的为短,则需要修改Vi的距离值。修改后再选距离值最小的顶点加入到第一组中,如此进行下去,直到图的所有顶点都包括在第一组中或者再也没有可加入到第一组的顶点存在。**S[i]用法其实两个算法相同*唯一区别是:Prim算法要寻找的是离已加入V(MST)顶点距离最近的顶点,Dijkstra算法寻找的是离固定顶点v0距离最近的顶点,所以Prim算法时间复杂度分析与Dijkstra算法相同。两个值的修改不同*数据结构

DATASTRUCTURE,DS

中国地质大学(武汉)计算机学院上堂课要点回顾图的设计与实现图的遍历非连通图的遍历深度优先遍历O(n2)广度优先遍历O(n2)最小生成树定义Prim算法ACBG1邻接矩阵邻接表0A1B2C2∧1∧0∧第十五次课阅读:朱战立,第204-220页习题: 作业14 数据结构课程内容图结构的应用1

——最小生成树图结构的应用2——最短路径8.5.3Kruskal算法思想:已知V(MST)=V(G),E(MST)的初态为空。首先将图中所有边按权值递增顺序排列,依次选取权值较小的边,但要求后面选取的边不能与前面选取的边构成回路,若构成回路,则放弃该条边,再去选后面权值较大的边。在n个顶点的图中,选够n-1条边即可。例:1254631861410162111563312546361016115最小生成树之一12546310161156最小生成树之二5,6,6,10,11,14,16,18,21,33Kruskal算法的形式化描述:/*求网G的最小生成树MST*/1.置E(MST)的初态为空集; 2.while(E(MST)中边数n-1){从E(G)中选取权值最小的边e,并从E(G)中删去边e;if(边e加入E(MST)中不构成回路){将边e加入E(MST)中;

文档评论(0)

rotaxane + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档