随机算法之最小割问题

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为顶点的个数)。


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jingyi130705008/article/details/78400767
文章标签: 随机算法 最小割
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭