最小生成树——Kruskal与Prim算法
最小生成树——Kruskal与Prim算法
序:
首先:
啥是最小生成树???
咳咳。。。
如图:

在一个有n个点的无向连通图中,选取n-1条边使得这个图变成一棵树。这就叫“生成树”。(如下图)

每个无向连通图都会拥有至少一个生成树。
而在无向连通图中,我们让每一个边都拥有一个边权(就是每个边代表一个值)。

而我们在有边权的无向连通图中构造一个生成树,使得这个生成树所用的边的边权之和最小。这个生成树就叫这个无向连通图的最小生成树!

上图这个最小生成树的边权之和为9,是所有生成树中边权之和最小的。
Kruskal算法
(Kruskal算法适合稀疏图)
仍旧是那个无向连通图。。。

在这个图中有9个边。将这9条边按边权大小从小到大排序。紧接着将排好序的边挨个加入生成树中。没加入一条边便判断一下生成树是否有环。如果有,则将这条边移出生成树,换下一条边重新操作。
看不懂的看下面的示例:
首先选择边权最小的边加入生成树。(多个相等的边权则任意选择一个)

重复之前的操作。



此时我再选择一条边加入生成树。

大家注意下图下面红色部分!!!
在加入一条边后生成树已经出现了一个环!!!

所以我们要退回之前。

此时选择另外一条边。

此时并没有出现任何环。所以进行下一步。
我们发现这时的最小生成树刚好有n-1条边(一共n个点)。此时我们的最小生成树已经找完了。
Prim算法
(Prim算法适合稠密图)
那个无向连通图又来了。。。
(因为某些不可描述的原因,作者把图改了一下。。。)

在此图中随便选择一个点加入生成树,然后选取所有可以取到的边(就是和生成树中的点连接的边)中边权最小的边加入生成树中,判断是否有环,然后重复此步骤。
看不懂的继续看例子啊
首先任意选取一个点。(例子选的是v1)

然后选取一个边权最小的边,并把点加入生成树。

紧接着重复此步骤。




此时已经构成一棵最小生成树了。(PS:作者提示——作者没有做出现环的样例,请各位读者注意)
结束语:
本人第一篇博客。
有问题请指出,谢谢!
最小生成树——Kruskal与Prim算法的更多相关文章
- 关于最小生成树 Kruskal 和 Prim 的简述(图论)
模版题为[poj 1287]Networking. 题意我就不说了,我就想简单讲一下Kruskal和Prim算法.卡Kruskal的题似乎几乎为0.(●-`o´-)ノ 假设有一个N个点的连通图,有M条 ...
- Kruskal和Prim算法求最小生成树
Kruskal算法求最小生成树 测试数据: 5 6 0 1 5 0 2 3 1 2 4 2 4 2 2 3 1 1 4 1 输出: 2 3 1 1 4 1 2 4 2 0 2 3 思路:在保证不产生回 ...
- 最小生成树(Kruskal和Prim算法)
关于图的几个概念定义: 关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vi与vj都有路 ...
- 最小生成树的kruskal、prim算法
kruskal算法和prim算法 都说 kruskal是加边法,prim是加点法 这篇解释也不错:这篇 1.kruskal算法 因为是加边法,所以这个方法比较合适稀疏图.要码这个需要先懂并查集.因为我 ...
- 1.1.2最小生成树(Kruskal和Prim算法)
部分内容摘自 勿在浮沙筑高台 http://blog.csdn.net/luoshixian099/article/details/51908175 关于图的几个概念定义: 连通图:在无向图中,若任意 ...
- 算法导论--最小生成树(Kruskal和Prim算法)
转载出处:勿在浮沙筑高台http://blog.csdn.net/luoshixian099/article/details/51908175 关于图的几个概念定义: 连通图:在无向图中,若任意两个顶 ...
- 数据结构与算法--最小生成树之Prim算法
数据结构与算法--最小生成树之Prim算法 加权图是一种为每条边关联一个权值或称为成本的图模型.所谓生成树,是某图的一棵含有全部n个顶点的无环连通子图,它有n - 1条边.最小生成树(MST)是加权图 ...
- [讲解]prim算法<最小生成树>
最小生成树的方法一般比较常用的就是kruskal和prim算法 一个是按边从小到大加,一个是按点从小到大加,两个方法都是比较常用的,都不是很难... kruskal算法在本文里我就不讲了,本文的重点是 ...
- hiho 1097 最小生成树一·Prim算法 (最小生成树)
题目: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了! 但是,问 ...
随机推荐
- 零基础小白入门IT开发指南
先自我介绍以下,本人是一枚刚毕业不到两年的某一线城市的程序员,本科阶段专业是计算机科学与技术.从大四开始出去实习到现在的编码经验也有快2年半了,两年半的时间包括实习在内任职过有4家公司,包括一家互联网 ...
- 欧拉路&&欧拉回路
T1是欧拉路板子,但我不会,直接爆炸.. 这玩意就是个dfs,但我以前一直以为欧拉路只能$O(nm)$求 今天才知道可以$O(n+m)$ 欧拉路判定: 无向:起点终点为奇度点,其余偶度 有向:起点终点 ...
- 最新JetBrains PyCharm 使用教程--常用快捷键和设置PyCharm为Eclipse快捷键(四)
PyCharm常用快捷键使用 Ctrl + D:复制当前行 Ctrl + Y:删除当前行 Ctrl + Z 撤销 Shift + Enter:快速换行 Ctrl + /:快速注释 Ctrl + F: ...
- php imagick svg转成jpg
php imagick svg转成jpg <pre> public function svgtojpg() { $image = '<?xml version="1.0&q ...
- jquery 路径动画贝塞尔动画
jquery 路径动画贝塞尔动画 <pre><!DOCTYPE html><!DOCTYPE html><html> <head> < ...
- redis 数据库主从不一致问题解决方案
在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题. 问:常见的数据库集群架构如何? 答:一主多从,主从同步,读写分离. 如上图: (1)一个主库提供写服务 (2)多个从库提供读服务 ...
- Spring+SpringMVC整合----配置文件
1.在 web.xml 中加载 spring 的配置文件 bean.xml 底层是 Listener <!-- Spring --> <context-param> &l ...
- JavaScript中BOM与DOM的使用
BOM: 概念:Browser Object Model 浏览器对象模型 将浏览器的各个组成部分封装成对象. 组成: Window:窗口对象 Navigator:浏览器对象 Screen:显示器屏幕对 ...
- hdu 1205 吃糖果 (抽屉原理<鸽笼原理>)
吃糖果Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submissi ...
- qt基础知识之类库概述
qt是用标准c++编写的跨平台开发类库,它对标准c++进行拓展,引入元对象系统.信号&槽.属性等特征 全局定义 容器类及对应迭代器 qt的模块化体系,分为 基本模块和拓展模块,一个模块通常就是 ...