首页 > 其他分享 >最小生成树

最小生成树

时间:2024-08-13 21:18:04浏览次数:8  
标签:连通 log 复杂度 最小 生成 维护

最小生成树

Kruskal

时间复杂度 \(O(m\log m)\)。

把所有边从小到大排序,依次考虑,对于边 \((u,v)\),如果 \(u,v\) 已经属于一个连通块(并查集维护),加入边 \((u,v)\),否则不加。

Prim

用优先队列优化,时间复杂度 \(O((n+m)\log n)\)。

比 Kruskal 好写,而且在稠密图上时间复杂度更优。

维护一个连通点集 S,维护散点到连通块的距离 dis(可用优先队列优化),每次选择距离连通块最近的点加入连通块。

正确性证明:为什么每次加入的边一定是最小生成树上的边呢?
假设我们加入边 e,则 e 是与连通块相连的最短的边,连通块 S 与它的补集一定有一条边相连,显然只有 e 是最优的,所以 e 一定在最小生成树上。

Boruvka

时间复杂度 \(O(m\log n)\)。

维护一个最小生成森林 \(F\),最小边指与连通块相连的不属于该连通块的边的最小那条,开始时将每个连通块最小边设为 \(inf\)。

算法分层进行,每一层如下:

  1. 枚举每条边 \((u,v)\),如果 \(u,v\) 不在一个连通块,就分别更新 \(u,v\) 所在连通块的最小边。
  2. 如果每个连通块都没有最小边,退出程序。
  3. 每个连通块加上最小边。

标签:连通,log,复杂度,最小,生成,维护
From: https://www.cnblogs.com/liyixin0514/p/18357710

相关文章

  • Android Studio Gradle->Android Studio创建项目后,生成文件详解
    Gradle版本:gradle-8.0AndroidStudio版本:AndroidStudioGiraffe|2022.3.1Patch3.gradle文件夹作用:存储Gradle缓存和构建信息内容:包括Gradle构建缓存、已下载的依赖项等。这个文件夹可以安全地删除,Gradle会在下次构建时重新生成它.idea文件夹作用:存......
  • 笔灵AI,写作速度也能飞? 秒速生成,高效输出,省时省力。
    在资讯洪流席卷的今天,写作不仅是沟通的工具,更是个人风采的展现。然而,面对空白的创作空间,我们往往陷入灵感的泥沼,难以自拔。此刻,让我为您揭晓一款革命性的写作伙伴——笔灵AI写作,它将成为您笔下生花的秘密武器。适合各类写作场景及人群,如体制内写材料、作家编辑、大学生、职场......
  • 如何处理pbootcms网站被黑被挂马 删除生成无数的灰产链接
    最近pbootcms被疯狂的针对,使用pbootcms系统的企业网站很多都遭到了会产的入侵,植入了很多会产链接。目前已知的是pbootcms3.2.5以下版本存在if标签漏洞,官方已于3.2.5版本进行了修复。网站被黑的小伙伴们,可以对应检查一下自己使用的pbootcms的版本。也有一部分使用最新pbootcms......
  • 摘要生成—通过摘要风格控制摘要的生成/抽取,原文阅读与理解:GEMINI: Controlling The S
    GEMINI:ControllingTheSentence-LevelSummaryStyleinAbstractiveTextSummarizationGEMINI:在抽象文本摘要中控制句子级摘要风格paper:https://arxiv.org/abs/2304.03548github:https://github.com/baoguangsheng/gemini本文介绍了一种自适应摘要抽取/生成方......
  • 控制SD图片生成的神经网络模型--ControlNet
    ControlNet是一个通过添加额外条件来控制SD中图像生成的神经网络,可以使用ControlNet来做以下事情:指定人体姿势。从另一幅图像复制图片的构图。生成参考图片类似的图像。将涂鸦图片变成专业的图像。ControlNet是用于控制SD的神经网络模型。您可以将ControlNet......
  • Lombok 使用教程-@Accessors | 自定义getters和setters的生成格式
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 长度最小的子数组 | LeetCode-209 | 双指针+滑动窗口 | 前缀和+二分查找 | Java详细注
    ......
  • [题解 hduoj-7522] 2024HDU 暑假多校7 - cats 的最小生成树
    原题链接题意有一个有重边的无向图,每次找到它的最小生成树,并删除生成树的边,直到不存在最小生成树,问被每条边在第几次被删除.思路考虑用类似Kruskal算法,但是是遍历一遍所有边,同时处理出来所有的生成树.具体这样做:如Kruskal一样,把所有边按边权排序,......
  • luogu 数据生成
    luogu数据生成利器testtest.exe是指标准程序,不能出错。一般把gen和test放在一起。示例test。#include<bits/stdc++.h>usingnamespacestd;intmain(){inta,b;cin>>a>>b;cout<<a+b;return0;}数据生成先贴代码:#include<bits/stdc++.h>......
  • 使用PaddleHub生成证件照
       飞桨是百度自主研发的开源深度学习平台。包含深度学习核心训练和推理框架、工具组件、基础模型库、端到端开发套件、预测部署和开发训练。    今天要说的PaddleHub是飞桨中的一个工具组件,包含了大量的预训练模型,不需要自己训练可以拿来直接使用,也可以根据自......