Prim算法 Kruskal算法 简述
2017-01-25 06:28
288 查看
Prim算法和Kruskal算法,都是用来找出图中最小生成树的算法,两个算法有些小差别。
2.遍历与集合A中的点相邻的边,找到最短的边,并且不构成回路。
3.将步骤2得到的边的目标点加入集合A。
4.重复2,3直到所有结点都加入到集合A中。
图解:
2.将排序好的权重边依次加入到最小生成树中,如果加入时产生回路就跳过这条边,加入下一条边。
3.将所有节点加入最小生成树时,就找出了最小生成树。
Kruskal算法在效率上要比Prim算法快,因为Kruskal只需要对权重边做一次排序,而Prim算法则需要做多次排序。
Kruskal算法主要是针对边来展开,边数少时效率会非常高,所以对于稀疏图有很大的又是,而Prim算法对于稠密图情况会好些。
Prim算法
又称普里姆算法,以图上的顶点为出发点,逐次选择到最小生成树顶点集距离最短的顶点为最小生成树的顶点,并加入到该顶点集,直到包含所有的顶点。步骤:
1.选择一出发点,加入集合A。2.遍历与集合A中的点相邻的边,找到最短的边,并且不构成回路。
3.将步骤2得到的边的目标点加入集合A。
4.重复2,3直到所有结点都加入到集合A中。
图解:
Kruskal算法
又称克鲁斯卡尔算法,以图上的边为出发点依据贪心策略逐次选择图中最小边为最小生成树的边,且所选的当前最小边与已有的边不构成回路。步骤:
1.边按照权值从小到大排序。2.将排序好的权重边依次加入到最小生成树中,如果加入时产生回路就跳过这条边,加入下一条边。
3.将所有节点加入最小生成树时,就找出了最小生成树。
Prim算法和Kruskal算法 :
Kruskal算法,时间复杂度O(nlogn),Prim算法,时间复杂度O(n^2)Kruskal算法在效率上要比Prim算法快,因为Kruskal只需要对权重边做一次排序,而Prim算法则需要做多次排序。
Kruskal算法主要是针对边来展开,边数少时效率会非常高,所以对于稀疏图有很大的又是,而Prim算法对于稠密图情况会好些。
相关文章推荐
- 最小生成树 Prim算法 Kruskal算法
- 从hdu 1233看kruskal算法和prim算法
- 最小生成树(prim算法与kruskal算法)(模板)
- 最小生成树-Prim算法和Kruskal算法
- 【数据结构】最小生成树之prim算法和kruskal算法
- POj 1251 Jungle Roads (Kruskal算法 + Prim算法)
- hdu 还是畅通工程 (基础)(最小生成树)(Prim算法 && Kruskal算法)
- hdu 畅通工程再续(最小生成树)(Prim算法 && Kruskal算法)
- 数据结构与算法学习之路:Prim算法和Kruskal算法
- 最小生成树——Prim算法、Kruskal算法和Boruvka算法
- 最小生成树简单实现(Prim算法与Kruskal算法)
- 最小生成树-Prim算法和Kruskal算法
- 最小生成树-----Prim算法与Kruskal算法(未完
- 最小生成树-Prim算法和Kruskal算法
- Prim算法求最小生成树MST以及和kruskal算法的对比
- Prim算法和Kruskal算法模板
- 6.3.2 最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind
- hdu 还是畅通工程 (基础)(最小生成树)(Prim算法 && Kruskal算法)
- hdu 畅通工程再续(最小生成树)(Prim算法 && Kruskal算法)
- 最小生成树(Kruskal算法和Prim算法)