最小生成树概述
最小生成树其实是最小权重生成树的简称。即在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得 T的 w(T) 最小,则此 T 为 G 的最小生成树。
最小生成树算法
1 普利姆算法
将图中各边按其权值由小到大的次序顺序选取,若选边后不形成回路,则保留作为一条边, 若形成回路则除去.依次选够(n-1)条边,即得最小生成树.(n为顶点数)
2 克鲁斯卡尔算法
从指定顶点开始将它加入集合中,然后将集合内的顶点与集合外的顶点所构成的所有边中选取权值最小的一条边作为生成树的边,并将集合外的那个顶点加入到集合中,表示该顶点已连通.再用集合内的顶点与集合外的顶点构成的边中找最小的边,并将相应的顶点加入集合中,如此下去直到全部顶点都加入到集合中,即得最小生成树.
两种算法的时间复杂度分析
普利姆算法适合稠密图,其时间复杂度为O(n^2),其时间复杂度与边的数目无关,而克鲁斯卡尔算法的时间复杂度为O(eloge)跟边的数目有关,适合稀疏图。(若图的顶点数为n,边数为e)。