最小生成树
1、定义
①树——每个顶点都在树上;没有闭环。
②最小——边上的权值和最小
若有n个顶点,则有n-1条边。
2、实现算法:
①Kruskal(克鲁斯卡尔)算法——直接选择权值最小的边
首先,将边的权值由小到大排序;
再遍历边的集合,若该边加入后构成环,则继续遍历;否则,将该边加入到最短边的集合中,直到选中n-1条边。
最小生成树(Kruskal(克鲁斯卡尔)和Prim(普里姆))算法动画演示
②Prim(普里姆)算法——从顶点出发,间接选择与顶点相连,权值最小的边
首先,在连接已确定顶点集合与未确定集合之间的边中,选取最短的一条边;
再将该边加入到最小生成树的边的集合中,并将该边两端的顶点加入到已确定的顶点集合中,直到所有顶点都遍历一遍。
总结:克鲁斯卡尔算法主要是针对边来展开,边数少时效率会非常高,所以对于稀疏图有很大的优势;而普里姆算法对于稠密图,即边数非常多的情况会更好一些。