最小生成树之 Prim算法 & Kruskal算法

1 描述

问题修建一个连接各个小区与煤气供应站点之间的管道,使得造价成本最低,即构造一颗最小生成树。但是如何求解?

对应模型:树结构,生成树,最小生成树

prim算法实例

基本思想:在满足如下条件的边中选出一条最小的边:

                一端已选,另一端未选。

        因此,该算法需要给出起点,以作为已选顶点。

对下图所示图,用Prim算法求最小生成树。

最小生成树之 Prim算法 & Kruskal算法

最小生成树之 Prim算法 & Kruskal算法
流程如上图,还可以用表格形式​​​​​

最小生成树之 Prim算法 & Kruskal算法

 3 Kruskal算法实例

反复在满足如下条件的边中选出一条最小的边——和已选边不构成回路。

判断构成回路的经典方法:电位法

    初始状态:各顶点的电位=顶点号

    每当选择一条边时,相连通的顶点的电位全都按照其中最小的值设置。

    由此可知新的候选边是否和已选边构成回路

最小生成树之 Prim算法 & Kruskal算法

Kruskal算法的时空复杂度为O(eloge)、O(最小生成树之 Prim算法 & Kruskal算法) 。其时间性能和空间性能都不是很如意。