这里先介绍mincutmaxflow,为介绍Grabcut打下基础。Grabcut可以用在图像分割和文字二值化中。

首先介绍Mincut问题

这部分内容主要翻译自[1],可以看原版理解的更深.由于个人没有看过中文教材,因此可能一些专业术语翻译的不太对,敬请见谅。

一个有向图,并有一个源顶点(source vertex)和目标顶点(target vertex).边的权值为正,又称之为容量(capacity).如下图

一个st-cut(简称割cut)会把有向图的顶点分成两个不相交的集合,其中s在一个集合中,t在另外一个集合中(在图像分割中,你可以将s理解成前景,t理解成背景)。

这个割的容量(capacity of the cut就是A到B所有边的容量和。注意这里不包含BA。参见下面几幅图。最小割问题就是要找到割容量最小的情况

可以想象成某某国家要控制网络,使得国民不能跟外面联络,S代表某个国家,t代表其余的世界。而每条边上代表着是带宽,带宽越大,肯定建设成本也越大,在进行cut的时候当然希望能达到完全断开的效果但又能破坏越少的基建设施,这就是最小割问题。

2 Maxflow

接着介绍maxflow问题。跟mincut问题类似,maxflow要处理的情况也是一个有向图,并有一个原顶点(source vertex)和目标(target vertex).边的权值为正,又称之为容量(capacity).如下图

一个st-flow(简称flow)是为每条边附一个值,这个值需要满足两个条件

1  0<=边的flow <<边的capacity

2 除了s和t外,每个顶点的inflow要等于outflow

见下图,其实这个很好理解,可以想象成水管或者电流。

一个flow的值(value of the flow)就是tinflow.Maxflow就是找到这个最大值

后面会发现Mincut和maxflow的问题是对偶的,解出了maxflow也就知道了mincut的解。

现在先介绍一种解maxflow的算法Ford-Fulkerson,为了方便,简称FF算法。

(1)初始化,所有边的flow都初始化为0

(2)沿着增广路径增加flow。增广路径是一条从s到t的无向路径,但也有些条件,可以经过没有满容量的前向路径(st)或者是不为空的反向路径(t->s)

opencv用的是文献[2]的算法。这里先不做介绍。

3 maxflow-mincut理论证明对偶性(optional

首先定义一个概念net flow,经过一个割cut(A,B)的net flow等于从A到B的边flow的和减去从B到A边flow的和。

然后我们就有了flow-value引理:f为任意的流,(A,B)为任意的割,那么f的值 value of flow(也就是t的inflow)等于经过(A,B)的netflow.

如下图,value offlow = 8+9+10 = 27 , 而割的net flow = 8+2+7-2+12 = 27.要证明这个引理可以用数学归纳法。

Weak duality(弱对偶):f为任意的流,(A,B)为任意的割,那么Valueof flow <= capacity of cut(A,B)

因为cut(A,B)等于从A到B流量,而value offlow等于cut(A,B)的netflow,还得减去从B到A边的流量。

那么现在我们可以引出两个定理:

增广路径定理(Augmenting Path theorem:一个流f是最大流当且仅当没有增广路径。

最小割最大流定理(Maxflow-mincut theorem:Maxflow的值等于最小割的容量。

要证明上面的定理,只要证明下面三个条件是等价的就可以了:

(1)存在一个割的容量等于flow f的值

(2)f是最大流

(3)对于f没有增广路径

首先我们证明(1->2。假设我们有一个割(A,B)的容量等于f的值,那么利用弱对偶的关系,其他流的值<=(A,B)的容量,而由于1的假设,(A,B)的容量等于f的值,因此得到其他流的值都小于f的值,从而(2)成立

接着证明(2->(3)。我们来证明它的逆否命题。对于f如果还有还有增广路径,那f不是最大流,这很显然,如果按照FF算法的话,我们还可以增加flow f的值,因此f就不会是最大流,因此逆否命题成立,也就代表(2)->(3)成立。

最后证明从(3->(1)。让割(A,B)满足这么一个条件:s在A中,且A中的顶点通过一些无向的边连接而成,这些边要么是不是满的前向边要么是非空的反向边。如下图中加粗的边。

那么根据定义,s在A中,由于没有增广路径,因此t在B中。

由于这个割的B到A的边流量全是0,

这个割的容量 = 沿着这个割的netflow(从A到B边的流量-从B到A边的流量)

又根据flow-value引理,netflow = value of low,因此推出(1).

最后我们怎么根据最大流的解得到最小割的解呢,就是和证明(3)->(1)中的一样让割(A,B)满足这么一个条件:s在A中,且A中的顶点通过一些无向的边连接而成,这些边要么是不是满的前向边要么是非空的反向边

[1]PrincetonUniversity - Algorithm: https://class.coursera.org/algs4partII-006/lecture/22

[2]An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision

最小割与最大流(mincut maxflow)相关推荐

  1. 最小割与最大流(mincut amp; maxflow)

    这里先介绍mincut和maxflow,为介绍Grabcut打下基础.Grabcut可以用在图像分割和文字二值化中. 1首先介绍Mincut问题. 这部分内容主要翻译自[1],可以看原版理解的更深.由 ...

  2. [AHOI2009]最小割(最大流+tarjan)

    继续填坑了,啦啦啦 这道题本来是准备枚举每个边,暂时去除它,但发现时间会爆炸的 于是决定另辟蹊径 于是这篇题解就应运而生 首先还是网络流跑一边 毕竟题目叫最小割嘛,给个面子 然后跑一边tarjan对满 ...

  3. 偷钻石(最小割 2 最大流)

    目录 问题 分析 一般场景 模型转换 构图 代码 问题 m个保安监控 n 个钻石.钻石价值 aia_iai​,保安小费 bib_ibi​.小偷若向保安支付小费,则保安放松监控,小偷将偷得钻石. 问:如 ...

  4. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  5. noi 2006 最大收益 最大权闭合图转最小割转最大流

    题意:一个公司有n个可以建造通讯战的地方,建造成本分别为pi,然后第i个公司会选择使用通讯站ai与bi,使用费用是ci,然后问这个通讯公司怎么建站能够获利最大.(净获利=总收益-总成本): 网上看到一 ...

  6. 【图割】最大流/最小割算法详解(Yuri Boykov and Vladimir Kolmogorov,2004 )

    本博客主要翻译了Yuri Boykov and Vladimir Kolmogorov在2004年发表的改进最大流最小割算法用于计算机视觉的论文:An Experimental Comparison ...

  7. 学习笔记:网络流基础:理解最大流/最小割定理 (蒋炎岩)

    网络流基础:理解最大流/最小割定理 蒋炎岩 课程链接 有向图的基本概念: 问题引入 直观感受反例 引入重要概念: 割的示例 小结 再来一个问题 例子 可以找到一条路径的情况 可以找到两条路径的情况 问 ...

  8. 如何快速理解最大流和最小割

    摘要: 割从哪来-------->最大流和最小割之间的等价关系的阐述. 1.问题引入 1.1思考这样一个问题:在给定的图中,如何判断一个源点s到终点t是否有路径存在呢? 我们首先想到的是用BFS ...

  9. 最大流为什么会等于最小割

    定义:有向带权图G,源s,目的t. 非常简单的证明过程(A->D): A:可行流      1. s->t的一条通路,即是一条可行流. 2.一条可行流中,一定可以通过去掉一些边后,使该条流 ...

最新文章

  1. python中常用的函数
  2. 软件开发过程(CMMI/RUP/XP/MSF)是与非?
  3. angularjs学习曲线
  4. 郑州大学计算机专业本科毕业去向,河南6所高校毕业生月薪公布 :河大最高 郑大垫底...
  5. .NET 6 Preview 4 已发布,这些新功能值得关注!
  6. idea-svn文件名字浅蓝色(蓝绿色)含义
  7. 港股交易系统搭建介绍 — 港股LV2行情
  8. 麒麟子Cocos Creator实用技巧九:棋牌UI全分辨率适配方案
  9. 股票走势图php源码下载,flex实现股票行情走势图示例代码
  10. 百会CRM发布新春致5万企业用户的公开信
  11. Ionic3.x 创建项目中的问题-IonIC start myApp tabs
  12. vue进阶实战 vue进阶课程 vue进阶
  13. 用ImageMagick转换缩小JPG图像提高图像质量的方法
  14. html跳转页面 url不变,实现页面的跳转后,浏览器的地址栏不变
  15. 哪些游戏称得上“次时代”? 次时代游戏史
  16. 【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码
  17. Java Web应用(JSP/Session/Cookie)
  18. 【Java--实现(同局域网)简单聊天案例】
  19. latex如何输出花体字母
  20. 基于ECS和NAS搭建个人网盘

热门文章

  1. 【SNS】什么是精英?什么是草根?为什么要SNS?
  2. Java Poi word 插入图片并添加边框
  3. Autoware.universe 和 carla simulator 联合仿真
  4. 【HTTP劫持和DNS劫持】
  5. ffmpeg缩放视频尺寸
  6. Go语言与Java语言对比
  7. 使用docker搭建DVWA
  8. 文件夹固定工具栏_如何将文件夹固定到Windows任务栏
  9. 国内代码托管平台gitee的使用
  10. mysql创建数据库error1044_Mysql创建数据库时提示Error 1044