关于破圈法求最小生成树

       马上就要数据结构考试了,看到求最小生成树中有个“破圈法”,网上都没有详细介绍的,我就发表下自己的心得。

    “破圈法”其实也是一种贪心算法,只不过prim和krustal算法是“加”边,而这个顾名思义,就是减边。思想大体如下:

1.找到图中的一个圈。2.删除其中的权最大的边。3.重复上述操作,直到图中已无圈。

针对无向图,可以这样做:

1.用拓扑分类算法,找到图中的圈。具体就是依次找到图中度为1的顶点(可以保存在队列里),删除之(这里的删除是暂时的,下次遍历还要还原这些点),然后与其邻接的顶点的入度-1,这样往复操作,直到图中已不存在入度为1的顶点,即所有的顶点的度都》=2,那么剩下的边就都在环里了。当然,如果没剩下边,说明没有环,算法结束。

2.剩下的边就都是环中的边了,找一个权最大的删去即可。

3.再进行1操作,直到图中无圈,即所有的圈都已破掉,剩下的就是最小生成树了。

估计也考不到这道题,所以算法就不写了,呵呵~


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kylehit/archive/2009/12/29/5100584.aspx

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值