上一篇文章我们提到了最小割问题,最小割问题在研究网络最薄弱环节相关问题上具备广泛应用。而这个问题如今也依旧是一个open problem。而今天我们就介绍一种求解最小割问题的概率型算法-Karger's algorithm。 该算法是karger读博期间发现的一种非常简单的算法。

其核心步骤就是我们随机在图上找两个点进行 constraction 合并操作。如下图所示:

注意2,3由于合并为了一个点,所以2 3两点之间的边我们就当做没有了,同时要消除由于合并形成的自环。

重复上述步骤到图只剩下两个点为止。

是的,这就是全部的步骤,是不是太简单了?同学们肯定好奇,这么简单,开玩笑,能有用吗?

接下来我们就分析一下这个算法到底能不能有用。

为了方便起见,我们就假设我们上面的分法就是最小割的情形了。红色虚线我们成为交叉边(cross edges),我们假设交叉边一共有k条, 总共的边一共是m条,即最小割为k。

Lemma 1:图中每个顶点的度至少为k。

Proof:一个顶点的度意为该顶点有多少条边。由于最小割为k,那么我们总能将图中的顶点分成这样的一种情况,即我们目标的顶点在A,其余剩下的点全部在B,由于最小割是k,所以该顶点至少有k条边。 证毕

我们继续考虑,什么情况下我们的算法能够成功呢?如果某一个步中我们constraction的边恰好是交叉边呢?显然,如果是这种情况,那么本来应该分别在A B中的点就会在同一边,算法失败。所以,算法成功的条件必须是每一步算法都选到不是交叉边的边合并。

Lemma 2:第一步成功的概率为

Proof: 共计m条边,其中k条是交叉边,我们是随机选择的。证毕

为了方便我们假设代表第i次选中交叉边的事件。由于我们最后需要剩下两个点,而每一次合并操作会减少一个点,因此我们成功的概率可以表示为

实际上每一步的选择都是一个马尔科夫过程,至于当前状态有关。

注意,合并操作每一步并不是减少一条边哈,只能保证点的个数减少1。因此我们分析的时候尽量考虑与点的个数发生关系。

我们把所有点的度加总起来应该是边数目的两倍。这个很好理解,考虑两点之间的一条线,每个点的度都为1,度的和为2,边的数目为1。

。 Lemma 1中我们知道每个点的度至少为k,即,于是

我们继续分析

问题的关键是我们要知道第一次选择后,还剩下多少边?我们知道合并一次之后点肯定从n 变成了n-1,所以根据度的关系,我们知道剩下的边与节点度之和的关系依旧为:

,于是

综上所述,

化简得到

而我们执行一次该算法的复杂度为,该算法复杂度只与边有关系。

我们执行N次该算法,则全部失败的概率为

我们设,

意味着我们只要重复次数足够大,也能求解到最小割。

注:文中合并示意图来源于如下微博:

http://blog.kongfy.com/2015/02/kargermincut/

最小割问题-Karger‘s algorithm相关推荐

  1. 【学习笔记】无向图最小割

    零.概述 什么离谱的人会研究这种离谱的东西啊--从定义,到构造,到性质,我完全想象不到 idea\rm ideaidea 的来源-- 研究带权无向图上,任意两点之间的最小割.最朴素的方法是做 O(n2 ...

  2. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  3. POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】

    题目描述: 给你一个无向图,问你最少删掉几个点,使这个图成不连通. 解题报告: 概念 (1)一个具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通, ...

  4. luogu P1345 [USACO5.4]奶牛的电信Telecowmunication(建图技巧 - “割点”模板 、最小割)

    P1345 [USACO5.4]奶牛的电信Telecowmunication 最小割,我们建立一个超级源点和超级汇点,做一下最小割,即可得到通过割边使得整张图变成两个完全不相连的集合的最小花费. 同样 ...

  5. luogu P3410 拍照(最大权闭合图转最小割)

    luogu P3410 拍照 最大权闭合图转最小割 要得到最大收益,我们可以用总可能收益减去最小花费,也就是最小割. #include<cstdio> #include<cstrin ...

  6. 【网络流24题】B、太空飞行计划问题(最大权闭合图转最小割、最小割方案输出)

    整理的算法模板合集: ACM模板 B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] P2762 太空飞行计划问题 [问题分析] 最大权闭合图问题,可以转化成最小割问题, ...

  7. 【网络流24题】I、 方格取数问题(二分图的最大独立集/最小割)

    I. 方格取数问题(二分图的最大独立集/最小割) [问题分析] 二分图点权最大独立集,转化为最小割模型,从而用最大流解决. [建模方法] 首先把棋盘黑白染色,使相邻格子颜色不同,所有黑色格子看做二分图 ...

  8. UVA1660 电视网络 Cable TV Network(网络流,最小割)

    题目链接 题意翻译 电视电缆网络的继电器之间的连接是双向的.如果任意两个继电器之间都连通,那么这个网络就是连通的,否则不连通.特别地,一个空网络或只有一个继电器的网络是连通的. 定义一个有n个继电器的 ...

  9. BZOJ2127happiness——最小割

    题目描述 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文 ...

最新文章

  1. 单片机怎么用回调函数在不同文件之间传递数据
  2. 【Python面试】 说说Python可变与不可变数据类型?
  3. Android OpenSL ES 对象结构
  4. K - Let the Flames Begin Gym - 101955K(约瑟夫环/2018icpc沈阳)
  5. 201521123057 《Java程序设计》第12周学习总结
  6. substr php,PHP substr() 函数
  7. elasticsearch映射相关字段定义,属性定义,及动态映射(marvel插件方式)mapping
  8. python数据结构-串
  9. PhoneGap搭建运行环境(3.2版本)
  10. 阿里巴巴Java开发文档2020版学习-常量定义
  11. 区块链+各行业应用案例
  12. 课程设计思路-学习笔记
  13. Overload 和 Override 的区别
  14. 各种软件系统架构图解析
  15. 深度学习:GAN 对抗网络原理详细解析(零基础必看)
  16. 高压均质机原理、使用方法及维护注意事项
  17. CentOS 7中jdk1.8安装
  18. 计算机毕业论文怎样写系统的意义,毕业论文写作的目的意义及步骤-计算机论文...
  19. 如何用c语言计算三角形面积
  20. the daily 发布了

热门文章

  1. Java数组去重问题
  2. 【Python】用Python画小猪佩奇,落叶树和动漫人物
  3. SaaS,iass 和pass,你知道吗?
  4. 消防应急灯锂电池供电2.5V-30V升压恒流驱动IC方案
  5. 1--STM32 ADC1与ADC2 16通道DMA采集笔记
  6. Xshell简单介绍与作用
  7. 00后测试员摸爬滚打近一年,为是否要转行或去学软件测试的学弟们总结出了以下走心建议
  8. 值得 .NET 开发者了解的15个特性
  9. 学校作业5_1字符串_文本分析与加密(头哥作业[Python])
  10. Java日志框架简介