最小生成树(Minimum Spanning Tree)

  1:是一棵树(是一种特殊的图)

      连通的,没有回路 有V 个顶点 一定有 V-1条边

     2:生成树

      包含了全部的顶点,所有的V-1条边  都在图里

剩下的三个土  都是第一个完全图的生成树

只要是 4个顶点 3条边   没有回路 就是生成树     这3个图 随便的加一条边  都会变成一个回路   也就不是 最小生成树了.   

  3:最小  

        边的权重之和最小

最小生成树存在  和   图连同  是充分必要条件

---------------------------------------------------------------------------------------------------------------------------

不论什么方法解决最小生成树问题都离不开 贪心算法

什么是贪 : 每一步都要最好的 .

什么是好 : 权重最小的边 . 

需要约束:                         

只能用图里面的边.

只能刚好用掉V-1条边

不能有回路

贪心算法之一

Prim算法-让一颗小树长大

用Dijkstra算法和Prim算法比较一下感觉几乎一样

Prime算法  生成树的顺序是V1,V4,V2,V3,V7,V6,V5,

//                       Dijkstra算法/*依鄙人之见,Dijkstra算法 就是走一个一定最小的步子,走完之后丈量一下去下一个地方需要多少步然后 给那个地方打上标签
这时候     可能会出现  A->B  为80    但是 A->C->B  为   5的情况   所以 在走完第一步之后  在第一部的基础上丈量完 然后走  离现在距离最近的点这个点 该点一定没有 A 离源点近  但是改点是距离 A最近的     就这样 逐步求最小  不停的修改
*/
void Dijkstra( Vertex s )  //  看来  再看一遍  写笔记  很重要
{ while (1) {V =  未收录顶点中dist 最小者;if (  这样的V在 不存在 )break;collected[V] = true;for ( V 点 的每个邻接点 W )if ( collected[W] == false )if ( dist[V]+E <V,W> < dist[W] ){dist[W] = dist[V] + E <V,W> ;path[W] = V;}}
}

//                    Prim算法

void Prim()
{MST=(s);while(1){V=未收录顶点中dist最小者  // 和源点相邻的就是权重 . 剩下的是正无穷.if(都被收录了)break;dist[V]=0;//将V收录进MST      for(V的 每个临接点W){if(dist[W]!=0)  //没有被收录 的话
            {if(E(v,w)<dist[W]){dist[W]=E(v,w);parent[W]=V;}}}}if(MST中的顶点不到V个)   //就是  有独立的点   不连通的图.
        ERRor(生成树不存在)
}

----------------图比较稀疏----------------

//                    Kruskal算法
//这个算法的核心就是    贪心了      将每一条边 一个一个的收录进去 (不能有回路)(变得个数是点的个数-1)void
void Kruskal(Graph G)
{MST={};   //生成一个空树while(MST中不到V-1条边&&E中还有边){从E中取一条权重最小的边E(v,w);  //用最小堆
        将E(v,w)从E中删除;if(E(v,w)不再MST中构成回路)   //  用并查集
            将E(v,w)加入MTS;else彻底无视E(v,w);}if(MST中不到V-1条边)Error("生成树不存在");
}

转载于:https://www.cnblogs.com/A-FM/p/5153775.html

-----------最小生成树----------------相关推荐

  1. 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)

    目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...

  2. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

    L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...

  3. 图的算法专题——最小生成树

    概要: Prim算法 Kruskal算法 1.Prim算法 算法流程: (1)对图G(V,E)设置集合S来存放已被并入的顶点,然后执行n次(2)(3) (2)每次从未并入顶点集合中选择与集合S最近的一 ...

  4. 【BZOJ1016】【Luogu P4208】 [JSOI2008]最小生成树计数 最小生成树,矩阵树定理

    蛮不错的一道题,遗憾就遗憾在数据范围会导致暴力轻松跑过. 最小生成树的两个性质: 不同的最小生成树,相同权值使用的边数一定相同. 不同的最小生成树,将其都去掉同一个权值的所有边,其连通性一致. 这样我 ...

  5. Educational Codeforces Round 9 F. Magic Matrix 最小生成树

    F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a mat ...

  6. [vijos1234]口袋的天空最小生成树

    题目链接:https://vijos.org/p/1234 白天刚刚写完prim的算法,晚上就心血来潮的打了一道最小生成树的题 虽然有题解说可以用prim做,但是这道题明显是加最小的边,感觉krusk ...

  7. Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)

    P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式 ...

  8. LA 5717枚举+最小生成树回路性质

    1 /*LA 5717 2 <训练指南>P343 3 最小生成树的回路性质 4 在生成的最小生成树上,新增一条边e(u,v) 5 若原图上u到v的路径的最大边大于e,则删除此边,加上e,否 ...

  9. 技术图文:如何利用C# 实现 Prim 最小生成树算法?

    背景 我们上一篇图文介绍了 如何利用 C# 实现 Kruskal 最小生成树算法?,Kruskal 算法通过寻找边最优的方式来构造最小生成树,本篇图文介绍如何利用 C# 实现 Prim 最小生成树算法 ...

  10. 技术图文:如何利用C# 实现 Kruskal 最小生成树算法?

    背景 以前我写过一些图文来介绍有关数据结构与算法的知识: 8大排序算法之:直接插入排序(Straight Insertion Sort) 8大排序算法之:希尔插入排序(Shell Insertion ...

最新文章

  1. linux proxy服务器
  2. 运维利器:钉钉机器人脚本告警(Linux Shell 篇)
  3. [云炬创业基础笔记]第九章企业的法律形态测试3
  4. 最流行的python爬虫框架_Python最火爬虫框架Scrapy入门与实践
  5. 包含用法 includeFilters
  6. MapReduce-流量统计求和-分区代码实现
  7. 真正的高情商,从学会麻烦别人开始
  8. JSON for java入门总结
  9. [转]XHTML+CSS兼容性解决方案小集
  10. 吴恩达机器学习ex8:推荐系统
  11. 2017 开发者大调查活动获奖名单新鲜出炉
  12. 武汉理工大学合肥工业大学 计算机,合工大为什么从985降到211?附合肥工业大学211地位(合工大不是985)...
  13. 是否可以在网络共享磁盘上创建数据库?
  14. ZKTeco 中控考勤机M300 plus java开发步骤 使用jacob 调用中控考勤机dll(详细配置)
  15. Php微信拉黑,微信被拉黑或删除?用这个方法强制聊天
  16. php的seeder是什么,轻松学Laravel6数据填充之方式一Seeder填充
  17. ios自建服务器降级,iOS14降级操作步骤 iOS14怎么降级到iOS13
  18. DBO与DB_OWER
  19. QQ\微信等聊天记录备份与恢复
  20. SVM算法实现(一)

热门文章

  1. boost::callable_traits的has_void_return的测试程序
  2. Boost:以协程的方式实现echo服务器的实例
  3. Boost:基于Boost的异步TCP回显服务器
  4. Boost:宏BOOST_TEST_EQ的测试
  5. ITK:演示所有运算符
  6. VTK:可视化之ChooseTextColor
  7. VTK:PolyData之CenterOfMass
  8. VTK:图片之ImageAnisotropicDiffusion2D
  9. OpenGL抗锯齿实例
  10. C语言quaternion(四元数)(附完整源码)