一般求最小生成树的时候,最流行的是Kruskal算法,一种基于拟阵证明的贪心,通过给边排序再扫描一次边集,利用并查集优化得到,复杂度为\(O(ElogE)\)。另一种用得比较少的是Prim算法,利用优先队列实现做到\(O(ElogV)\)。

在翻ZYQN博客的时候,看见他写的位运算最小生成树中提到了Borůvka算法,于是学了一下。

算法

Borůvka算法是1926年发明的,是最早发明的最小生成树算法,复杂度为\(O(ElogV)\)。

算法思想非常简单。初始时每个点都是一颗不同的树,每次遍历边表,找距离每棵树最近的另一棵树,并把它们连起来。可以发现,每一次一棵树都与另一棵树连接起来,所以每次树的数量都至少减少到一半,所以这样操作的次数为\(O(logV)\)次。每次我们遍历边表,连接所用的时间为\(O(E+V*\alpha (V))\),所以总复杂度为\(O(ElogV)\),实现起来也非常简单。

代码

参考bzoj2429的题解。

转载于:https://www.cnblogs.com/owenyu/p/6861094.html

最小生成树-Borůvka算法相关推荐

  1. 最小生成树--Boruvka算法

    参考文章 介绍 第一次听说这个算法.. 对于最小生成树一定学过prim和krusal,prim复杂度是O(n2)或者O(elogn)O(n^2)或者O(elogn)O(n2)或者O(elogn),kr ...

  2. 【YBT2023寒假Day13 C】百里守约(Boruvka算法)(扫描线)(线段树)

    百里守约 题目链接:YBT2023寒假Day13 C 题目大意 有一个 n*n 的矩阵,一开始里面都是 0,多次操作,每次把一个子矩阵里面的值都增加每次给出的 w. 然后全部操作完之后构造一个 n 个 ...

  3. 【数据结构与算法】图结构最小生成树Kruskal算法的Java实现

    Kruskal算法 Kruskal算法是图论中用于求解最小生成树的算法,算法时间复杂度为O(eloge) 比较起Prim算法,Kruskal算法虽然同求最小生成树,却更适合稀疏网. 这里图的储存结构建 ...

  4. 最小生成树 Kruskal算法 Prim算法

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

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

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

  6. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  7. [Java学习] 最小生成树——Prim算法

    文章目录 最小生成树 Prim算法流程 应用实例 求最小生成树 最小生成树 百度百科上对于最小生成树的定义是这样的:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结 ...

  8. 最小生成树Prim算法Java版

    最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...

  9. 图的最小生成树-Kruskal算法

    问题引入 [问题描述] 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Kruskal算法. [输入形式] 输入图的顶点序列及图的边的情况.如样例所示.边的输入以输入-1,-1,-1作为结束 ...

  10. D-OJ刷题日记:使用邻接矩阵实现最小生成树Prim算法 题目编号:1135

    理解: [理解prim算法本质--让一棵小树逐渐长大] Prim算法:又称为加边法,即每次选择最小权值的边加入到生成树中,然后再更新权值,如此反复,保证每次最优来达到最优解. Prim算法生成树用的是 ...

最新文章

  1. 织梦引用html,html直接引用vue和element-ui的方法
  2. 杭十四计算机教室,杭十四中学生做了个图书馆智能机器人
  3. wxWidgets:wxInfoBar类用法
  4. corosync + pacemaker + drbd 实现mysql存储的高可用(一)
  5. 计算机系统结构专业是什么专业,中国大学计算机系统结构专业排名
  6. linux分辨率 保存,linux分辨率设置方法与问题-linux分辨率的设置方法分享-linux修改分辨率的经验分享_169IT.COM...
  7. Firefly Mutil-Boot多系统安装启动程序发布
  8. 矩阵键盘mega16 c语言程序,51单片机对矩阵键盘实现16个按键操作的电路设计
  9. 2019年入职体检那些事
  10. 工作模板-----MySQL示例
  11. 在线latex 网址
  12. MATLAB课设代做在哪儿找,代写Grid World作业、代做CID留学生作业、代写Matlab课程设计、代做Matlab编程实验作业...
  13. MySQL:错误1153(08S01):得到的数据包大于“ max_allowed_pa​​cket”字节
  14. java8对list的操作两个List集合取交集、并集、差集
  15. 计算机网络习题:应用层
  16. 【品牌专场】跨越 X 突破,音视频聚力新机遇
  17. torch.nn.MaxPool2d详解
  18. 计算机与通信网络之间的常用通信设备,通讯设备有哪些,通信常用设备总结
  19. 情况:Tomat Deployment 没有Artifact选择,这个时候不能Run,如下图。
  20. python五子棋算法_python实现简单五子棋游戏

热门文章

  1. SVN版本库修改URL路径或者IP地址
  2. CQI related
  3. 电影《寒战2》中的管理知识
  4. 【2022】将3D目标检测看作序列预测-Point2Seq: Detecting 3D Objects as Sequences
  5. RobotStudio 示教器编程:MoveC指令
  6. URAL 1741 Communication Fiend
  7. Python学习必看书籍_带你高效学习
  8. 毕业一年一点不平凡经历,不平常的感受,有了不平常的自信
  9. Markdown个人简历模板
  10. nginx反向代理实践:将某个指定的域名代理到指定的服务