图之最小生成树算法--Kruskal
2020-10-04 本文已影响0人
美雨知春
Kruskal算法是一种构造最小生成树的简单算法。
其核心思想,首先每个顶点独自成为连通分量,下一步找到权值最小的路径加入到连通分量,直到n-1条边全部加入进来
其实现方法的抽象描述如下:
T=(V,{})
while T中所含边数小于n-1:
从E中选取当前最小边(u,v),将它从E中删除
if(u,v)两个端点属于T的不同连通分量:
将边(u,v)加入T
算法中有两个问题:
- 最短边选取
可以把所有边排序后直接选取,也可以用优先队列 - 如何判断两个顶点在当时的T里属于不同的连通分量
最简单的方法就是每次做一次判断,不过这种做法直接但是费时间。人们提出代表元的方法,其优化代表元表用了另外一个表mst累积最小生成树的边。