一、概念
1.最小生成树:边带权图(网)的所有生成树中,各边权值总和最小的生成树称作最小生成树
2.普里姆(Prim)\克鲁斯卡尔(Kruskal)
二、Prim算法
0.G=(V,E)为连通网,用T来记录G上最小生成树边的集合
1.算法开始,U={G里的一个初始点},T为空
2.找到两个端点分别在U和V-U内的最小权值边,将其加入T,同时将边的另一个点纳入U
3.循环执行2直至U=V
4.分析:时间复杂度O(n^2),空间复杂度O(n)
三、Kruskal算法
0.G=(V,E)为连通网,用T来记录G上最小生成树边的集合
1.从G中取最短边e,判断e的端点是否位于T的不同连通分量上,若是,则将e加入T,从G删除e
2.循环执行1.直至T中有n-1条边
四、Prim与Kruskal比较
算法 | Prim | Kruskal |
时间复杂度 | O(n^2) | O(eloge) |
适应范围 | 稠密图 | 稀疏图 |
Kruskal算法需要对边进行按权重排序,e条边排序最优时间复杂度为O(eloge)
希望大家一起学习,共同进步,如果有疑问或错误欢迎联系笔者。