用来查找最小生成树的算法

2021年9月6日 | 分类: 【编程】

用来查找最小生成树的算法:
1. Kruskal算法
2. Prim算法
3. Boruvka算法
4. Dijkstra算法

四种算法都是贪心算法的应用。

1. Kruskal算法:剩下的所有未选取的边中找最小边。

克鲁斯卡尔算法(Kruskal),也是贪心算法的应用,和普里姆算法是2种在连通网中查找最小生成树的常用方法。

特点:将连通网中所有的边按照权值大小做升序排序,从权值最小的边开始选择,只要此边不和已选择的边一起构成环路,就可以选择它组成最小生成树。对于 N 个顶点的连通网,挑选出 N-1 条符合条件的边,这些边组成的生成树就是最小生成树。

2. Prim算法:需要每次选在集合E中选取权值最小的边。

普里姆算法(Prim),可在连通网(带权的连通图)里搜索最小生成树。

特点:采用了贪心算法的思想。对于包含 N 个顶点的连通网,普里姆算法每次从连通网中找出一个权值最小的边,这样的操作重复 N-1 次,由 N-1 条权值最小的边组成的生成树就是最小生成树。

3. 博鲁夫卡算法(Boruvka’s Algorithm)

参考:https://www.cnblogs.com/guanlexiangfan/p/15178069.html
参考:https://blog.csdn.net/win_star_/article/details/106139956

4. Dijkstra算法:需要每次选取d[i]最小的边。

迪杰斯特拉算法(Dijkstra’s Algorithm;简称 Dij算法)是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题(单源最短路径问题)。

特点:是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。

参考:https://blog.csdn.net/qq_35644234/article/details/60870719
参考:https://zhuanlan.zhihu.com/p/338414118