如何通过循环查找找到最小生成树?

时间:2013-10-22 10:04:41

标签: algorithm

通过搜索网络,我可以找到2(kruskal和prims)算法来查找最小生成树。但是这个算法

   *let T be initially the set of all edges
       *while there is some cycle C in T
         remove edge e from T where e has the heaviest weight in C 

通过搜索网络找不到。我该如何实现这个算法。我怎样才能找到所有可能的周期?

2 个答案:

答案 0 :(得分:1)

按降序对边进行排序,然后每次尝试删除边。检查图表是否已连接。如果在删除边之后图形仍然连接,则可以保证边缘处于循环中。

答案 1 :(得分:1)

实现这一目标的最简单方法是通过Union-Find数据结构(参见下面的链接)。检查周期可以在O(1)时间内完成,并且添加新边缘需要每个节点进行平均O(log V)处理,需要总运行时间为O(E + V log V)。我们可以使用更高级的数据结构来实现接近线性的时间界限。

http://people.cs.umass.edu/~barring/cs611/lecture/7.pdf