最小生成树的算法,
一般都采用prim算法或者 kruskal算法,两个算法都很直接.
prim算法其实就是disj算法的变形,只是更新策略和判断策略不同而已.
kruskal采用了不相交集和堆,写出的算法也很简洁,并且很好理解..
而最小生成树还有一种大类就是破圈法.
破圈法在网上的资料非常少,刚好要考试了,有给出算法.这里把算法描述一下.
其核心思想是先将所有的边按权值进行降序排列.
之后对于取出的每一个边来说,判断其连接的两个结点是否具有圈.(即先删除次边,然后判断这两个结点是否连接,之后对删除的边进行恢复)
对于有圈的,将这条边删除,否则,往下查找.
算法结束:当剩下的边=结点数-1的时候.