Kruskal算法是一步步将森林中的树进行合并;而Prim算法是通过每次增加一条边来建立一棵树。
Prim算法基本思想:首先选择任意一个顶点,从该顶点开始构造生成树;接下来要找出一条边添加到生成树,这需要枚举每一个树顶点到每一个非树顶点的所有边,然后找到最短边加入到生成树。重复以上步骤,直到所有顶点都加入到生成树中。
难点:如何找出下一个添加到树的边。
优化:使用邻接矩阵的时间复杂度$O(N^2)$,如果借助堆,每次选边的时间复杂度是$O(\log{E})$,然后用邻接表来存储图的话,整个算法的时间复杂度会降到$O(E\log{V})$。
|
|