链接:http://blog.csdn.net/weinierbian/article/details/8059129/

给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.

求最小生成树的算法
(1) 克鲁斯卡尔算法
图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.
(2) 普里姆算法
图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续加入到集合中,全部顶点加入集合后就得到所需的最小生成树 .


下面来具体讲下:
克鲁斯卡尔算法
方法:将图中边按其权值由小到大的次序顺序选取,若选边后不形成回路,则保留作为一条边,若形成回路则除去.依次选够(n-1)条边,即得最小生成树.(n为顶点数)

第一步:由边集数组选第一条边

第二步:选第二条边,即权值为2的边

第三步:选第三条边,即权值为3的边

第四步:选第四条边,即权值为4的边

第五步:选第五条边


普里姆算法
方法:从指定顶点开始将它加入集合中,然后将集合内的顶点与集合外的顶点所构成的所有边中选取权值最小的一条边作为生成树的边,并将集合外的那个顶点加入到集合中,表示该顶点已连通.再用集合内的顶点与集合外的顶点构成的边中找最小的边,并将相应的顶点加入集合中,如此下去直到全部顶点都加入到集合中,即得最小生成树.
例在下图中从1点出发求出此图的最小生成树,并按生成树的边的顺序将顶点与权值填入表中.

———————>先写出其邻接矩阵

第一步:从①开始,①进集合,用与集合外所有顶点能构成的边中找最小权值的一条边
①——②权6
①——③权1 -> 取①——③边
①——④权5

第二步:③进集合,①,③与②,④,⑤,⑥构成的最小边为
①——④权5
③——⑥权4 -> 取③——⑥边

第三步:⑥进集合,①,③,⑥与②,④,⑤构成的各最小边
①——②权6
③——②权5
⑥——④权2 -> 取⑥——④边

第四步:④进集合,①,③,⑥,④与②,⑤构成的各最小边
①——②权6
③——②权5 -> 取③——②边
⑥——⑤权6

第四步:②进集合,①,③,⑥,②,④与⑤构成的各最小边
②——⑤权3 -> 取②——⑤边


这也是在网上找到的一个Kruskal和Prim构造过程图,贴出来:

转载于:https://www.cnblogs.com/2714585551summer/p/5766550.html

转 最小生成树(kruskal 算法 和prim算法)相关推荐

  1. 最小生成树——kruskal算法和prim算法

    1.最小生成树定义 在一张带权的无向连通图中,各边权和最小的一颗生成树即为最小生成树. 2.最小生成树的应用价值 在现实生活中,很多布线问题,通线网络等问题,都可以直接或者间接的转化成最小生成树的问题 ...

  2. 最小生成树:Kruskal算法 和 Prim算法(第23章)

    武侠: 飞雪连天射白鹿,笑书神侠倚碧鸳. --金庸十四著作 飞狐外传 .雪山飞狐 .连城诀 .天龙八部 .射雕英雄传 .白马啸西风 .鹿鼎记 .笑傲江湖 .书剑恩仇录 .神雕侠侣 .侠客岛 .倚天屠龙 ...

  3. 【算法】prim算法(最小生成树)(与Dijkstra算法的比较)

    最小生成树: 生成树的定义:给定一个无向图,如果它的某个子图中任意两个顶点都互相连通并且是一棵树,那么这棵树就叫做生成树.(Spanning Tree) 最小生成树的定义:在生成树的基础上,如果边上有 ...

  4. Kruskal算法与Prim算法

    (话说这么些算法的名字嗯... Kruskal算法:(下文它就暂时叫k算法吧 k算法是一种应用贪心思想及并查集,在图中查找最小生成树的算法. (最小生成树:若一个无向图内任意两个顶点联通切图为一棵树, ...

  5. Kruskal 算法与 Prim 算法

    一:无向带权图的最小生成树 无向带权图是图论算法领域中的一种基础模型.它的代码实现我们就不在这篇文章中介绍了,大家可以参考文章后面给出的代码链接.下图为一个无向带权图的示例: 接下来我们着重介绍一下图 ...

  6. Kruskal算法和Prim算法

    Kruskal算法和Prim算法 在无向图中,连通且不含圈的图称为树.给定一个无向图G=(V,E),连通G中所有点,且边集使E的子集的树称为G的生成树,其中权值最小的生成树称为最小生成树(MST).构 ...

  7. 学习进度2012-6-26(动态规划算法、Prim算法、Dijkstra算法)

    今天学习下三个算法:动态规划算法.Prim算法.Dijkstra算法,将自己理解的逻辑略作总结. 1.动态规划算法是选取两个字符串的最长子序列的解法作为切入点学习,在公司午休时间将代码写了下,初步测试 ...

  8. 普里姆算法(Prim算法)

    普里姆算法(Prim算法) 简介 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex ...

  9. * poj 1251 JungleRoad 最小生成树 Kruskal算法、Prim算法

    文章目录 Kruskal算法 模板:https://blog.csdn.net/Rain722/article/details/65642992 Prim算法 模板: poj 1251 JungleR ...

  10. prim算法求最小生成树_最小生成树的两种方法(Kruskal算法和Prim算法)

    关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连 ...

最新文章

  1. Qt 提取文件(exe, dll等)中的图标icon
  2. eclipse svn异常:RA layer request failed 的解决方案
  3. appium java版本错误_java – 无法创建新会话. appium代码中的错误
  4. Leetcode-997 Find the Town Judge(找到小镇的法官)
  5. 【锋利的Jquery】读书笔记五
  6. 「offer来了」快来关注这些性能优化问题
  7. leetcode初级算法5.加一
  8. mysql date max_mysql – 每个ID的SELECT MAX DATE
  9. 召唤新一代超参调优开源新神器,集十大主流模块于一身
  10. java毕设可以用结构化方法吗,php,java,jsp网络留言薄,怎么实现一个网络留言簿好毕设指导轻松完成...
  11. 二十天一学通C#:.NET中文件和文件夹的类
  12. SVD在推荐系统中的推导及应用-简单明了
  13. FTP文件上传并支持断点续传(一)—— win10 本地环境 ftp站点构建
  14. 高等数学复习之空间解析几何
  15. php在线电子小说网站毕业设计源码
  16. IBM JDK官方下载地址
  17. 机器人搭建记录 yobot(LinuxWindows手动搭建)
  18. 你不一定知道这个用 Python 快速设置 Excel 表格边框的技巧
  19. 马蹄疾 | 详解 JavaScript 异步机制及发展历程(万字长文)
  20. 萌新记录自己刷过的题

热门文章

  1. 有关迷宫的c语言程序的编写,3种C语言编写走迷宫的方法
  2. bat从数组中找出相同数字并删除_全网把Map中的hash()分析的最透彻的文章,别无二家...
  3. Python3文本读写操作
  4. Multi-thread--linux下线程相关函数接口
  5. Unity 提取游戏资源之ktx转换
  6. 机器学习笔记I: 基于逻辑回归的分类预测
  7. Web MVC模式实现
  8. c语言程序设计点亮第一个LED,实验2__C语言程序设计及_LED跑马灯实验.ppt
  9. c++循环执行一个函数_javascript的五种循环,作为程序员,要根据场景和性能作出选择
  10. python装饰器传递参数_Python装饰器高级版—Python类内定义装饰器并传递self参数...