随机算法之最小割问题

1. 问题定义


          图G=(V, E)成为多重图,如果顶点对之间允许出现多条边。多重图G=(V, E)的一个割是边集E的一个子集C,它使得Gc=(V, E-C)至少存在两个连通分支。边的条数达到最小值的割称为最小割。最小割问题要求输出多重图G=(V, E)的最小割。


2. 随机算法


       输入:多重图G=(V, E)

          输出:G的一个最小割C

          1. G' = G;

          2. While G'中顶点个数多于2 Do;

          3.            从G'中任选一条边(u, v),并且收缩边(u, v); // 收缩的意思是把与顶点u、v关联的边收缩到新的节点上

          4. G'中剩下的两个顶点对应G顶点子集S 和 V - S;

          5. 输出C = {(u, v) | u∈S, v∈V-S, (u,v)∈E}.

   

3.算法性能的分析


          该算法的时间复杂度为O(n^2)。由于每收缩一次,G'就可以减少一个顶点,所以第2步~第3步的while循环执行n-2遍,每一次收缩边(u,v)时需要O(n),因此第2步~第3步总时间复杂度为O(n^2)。第5步计算C也需要O(n^2)。研究表明,该算法求解出最小割的概率大于2/n^2(n为顶点的个数)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值