最小生成树Minimum Spanning Tree
来源:互联网 发布:管理业务员的软件 编辑:程序博客网 时间:2024/05/22 09:05
把一场败仗存草稿以后,开始收集一些看过的,打算做整理
先从和第一篇有联系的「贪心」「图论」「路径」「动规」算法开始
参考学习
http://blog.csdn.net/heavenboya/article/details/6654778
http://www.acmerblog.com/greedy-kruskal-spanning-tree-mst-5326.html
1.生成树Spanning Tree
「图论」图G=(V, E),包含所有顶点的极小连通子图
V个顶点,(V – 1)条边
(从不同顶点出发,走不同的分支,都可以得到不同的生成树)
此图可能是「强连通」、「有根」、「有向」、「非连通」
若“非连通”或“非强连通的有向图”,则可能只得到的「生成森林」
1)DFS生成树
优先往深处摸索,触底则回到上一节点
*「DFS」「BFS」「回溯」「剪枝pruning」
2)BFS生成树
优先遍历并保存节点的生成边,之后向深处迈步
2.最小生成树MST
最小 =「路径加权」,也称最小权重生成树
(生成树的所有边的权重总和最小)
1)Kruskal算法
a.依权重排序所有边
b.从最小的边开始加入,检测是否成环
c.重复b,直到加入了(v-1)条边
猴子也能懂:上帝视角,排序加边
O(ElogE),快排
「成环检测」
将所有点V的集合,拆为已扩展v1 { } 和未扩展v2 { }
检测边的两个顶点是否都在已扩展的v1中,若都在则成环
否则,更新两个子集和
猴子也能懂:已未拆集,此消彼长
*「并查集Union Find」「路径压缩」
ALG
2)Prim算法
a.某点出发,其相连边「候选」
b.选最小侯选边,连接新的顶点,其相连边候选
c.检测目的地相同的侯选边,比较并留下小边
d.重复b,直到加入了(v-1)条边
猴子也能懂:步步为营,优胜劣汰
*「Dijkstra算法」与Prim有些像,不断优化源点到所有点的最短路径距离,攻城拔寨
ALG
O(N^2)
- 最小生成树(minimum spanning tree)
- 最小生成树-Minimum Spanning Tree
- 最小生成树Minimum Spanning Tree
- 最小生成树(Minimum Spanning Tree)
- 最小生成树(Minimum-Spanning-Tree, MST)
- 最小生成树(Minimum Spanning Tree)
- Geeks : Kruskal’s Minimum Spanning Tree Algorithm 最小生成树
- 让我们来谈谈最小生成树(Minimum Spanning Tree)算法
- hdu 4408 Minimum Spanning Tree 最小生成树计数
- MST(Minimum Spanning Tree,最小生成树)
- 说说最小生成树(Minimum Spanning Tree)
- UVALive 3662 Another Minimum Spanning Tree 曼哈顿最小生成树
- Another Minimum Spanning Tree - UVaLive 3662 曼哈顿最小生成树
- HDU 4408 - Minimum Spanning Tree(最小生成树计数)
- 最小生成树(Minimum Spanning Tree)(Prim算法)
- 最小生成树(Minimum Spanning Tree)(Kruskal算法)
- HDU 4408 Minimum Spanning Tree(最小生成树计数)
- 5.4.1 最小生成树(Minimum-Spanning-Tree,MST)
- vi/vim基本使用方法
- ios NSNotificationCenter消息通讯机制
- 分布式系统中不可靠的TCP
- 13.5.2.javascript内存与性能与13.6事件模拟
- git命令大全(非常齐全)
- 最小生成树Minimum Spanning Tree
- Lambda, filter, reduce and map[pthon]
- 门电路逻辑符号大全(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器等)
- java 泛型原理
- windows命令行下查看进程号
- 《代码整洁之道》之旅(1)——序言、目录、第1章:整洁代码
- 在java中如何实现C#语法里的按引用传递参数
- Apache Spark Machine Learning Tutorial
- 70. Climbing Stairs