最小生成树(无向图) —— PRIM 算法和 KRUSKAL 算法

PRIM 算法

PRIM 算法的实质是 动态规划。首先任意选择图G中的一点做为起始点a,将该点加入集合V,再从集合U-V中找到另外一点b使得点b到V中任意一点的权值最小,此时将b点也加入集合V,以此类推。web

PRIM 算法的时间复杂度为O(n^2),可见PRIM 算法的时间复杂度只与图中顶点有关系,与边数没有关系,所以 PRIM 算法适用与稠密图。算法

在这里插入图片描述


KRUSKAL 算法

KRUSKAL 算法的本质是 贪心算法。每次找出候选边中权值最小的边,就将该边并入生成树中。重复此过程直到全部边都被检测完为止。KRUSKAL 算法的思想较为简单,所以在手工构造生成树时,通常多用此方法。svg

KRUSKAL 算法的时间复杂度主要由选取的排序算法决定。排序算法所处理数据的规模由图的边数e决定,与顶点数无关,所以 KRUSKAL 算法适用与稀疏图。.net

在这里插入图片描述


参考地址:xml

http://www.javashuo.com/article/p-pdhqlavg-mt.htmlblog