输入:创建图。
输出:组成最小生成树的所有边。
运行结果:
Kruscal算法:找权值最小的边,若并入后构成回路则舍弃。
设N=(V,{E})是连通图,求最小生成树。
零T={V,{}},各顶点自成一连通分量。
在E中找代价最小的边,若该边顶点落在不同连通分量上,则将其并入,依次类推到所有顶点到一个连通分量上。
总复杂度O(eloge),与n无关,适合稀疏图。
Kruscal算法是逐条边读入,检查是否构成回路,Prim算法是逐个顶点并入,根据并入顶点找最小边。
算法思路有了,可是现在还有一个问题,如何判断加入边后是否构成回
路呢?
我们可以用并查集。
看一下百科:
并查集,在一些有N个元素的集合<