码迷,mamicode.com
首页 > 编程语言 > 详细

最大流最小割算法

时间:2014-11-26 14:33:29      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   os   sp   on   2014   问题   

图像分割中用到最小割原理,引出了最大流最小割算法,主要参考来自UCLA CIVS的Hong Chen的PPT 《Introduction to Min-Cut/Max-Flow Algorithms》

一、 首先借用PPT的两张图分别讲述一下两者的应用

1. 最大流应用于网络传输

bubuko.com,布布扣bubuko.com,布布扣

bubuko.com,布布扣

2. 最小割应用于桥问题

bubuko.com,布布扣

bubuko.com,布布扣

二、基本概念之 s-t 图

1. 源结点(source node)和汇结点(sink node)

2. 从结点i到结点j的有向边(Arc)<i, j>

3. 每条边<i, j>有非负的容量cap(i, j)

4. cap(i, j) = 0 表示没有边

bubuko.com,布布扣

bubuko.com,布布扣

三、s-t 图中的流概念

流是一个实数函数,为每条边<i, j>赋值 f(i, j),流具有如下一些属性:

1. 容量限制: f(i, j) <= cap(i, j)

2. Mass balance constraint (质量守恒约束,暂时如此翻译),如下公式表示:

  • 所有从源点出发的边的流量之和 - 所有到源点的边的流量 = 流量的值
  • 所有从汇点出发的边的流量之和 - 所有到汇点的边的流量 = 负的流量值
  • 所有非源点和非汇点出的边的流量之和 - 到这些点的边的流量之和 = 0

bubuko.com,布布扣

bubuko.com,布布扣

以下是流量的一个例子,源点出发的 2+3,到源点的为0,则流量为5,,类似推理其他点

bubuko.com,布布扣

bubuko.com,布布扣

引出最大流的概念,所有可能的流函数中拥有最大值的流

四、基本概念之s-t Cut

引入割(Cut)的概念,将拥有源点s和汇点t的结点集合V分成两个子集S和T,当且仅当s属于S且t属于T时,称这种分割为Cut。如下图中左图为割,右图则不是。

bubuko.com,布布扣

bubuko.com,布布扣

五、s-t割的容量

s-t的容量cap([S, T]) 指的是所有从S到T的边界的容量和,具体公式如下:

bubuko.com,布布扣bubuko.com,布布扣

下面是个例子,注意此外只计算从S到T的,不计算T到S的

bubuko.com,布布扣

bubuko.com,布布扣

引出最小割(minimum cut)的概念,所有可能的s-t割中容量最小的s-t割。

六、基本概念之Flow Across s-t Cut(理解为交叉流s-t Cut)

所有从S中的结点到T中结点流之和 - 所有从T中的结点到S中的结点的流之和。

bubuko.com,布布扣bubuko.com,布布扣

下图是个例子,此处计算从S到T和T到S。

bubuko.com,布布扣

七、s-t图的性质

1. 对于任意的s-t割和流,s-t割的容量是s-t割交叉流量的上界(即最大值),推理过程很简单。

bubuko.com,布布扣

2. 对于任意的s-t割,割的交叉流量的值等于s-t流的值,这个推理稍微麻烦一点儿,主要思想是把前一项的终点分为S和T,后一项的起点分为S和T,再把前一项加和合并。

bubuko.com,布布扣

三、对于任意的s-t割和流,s-t割的容量是流的值的上界,这是由性质一和性质二推理出来的。

bubuko.com,布布扣


bubuko.com,布布扣

最大流最小割算法

标签:blog   http   io   ar   os   sp   on   2014   问题   

原文地址:http://blog.csdn.net/giskun/article/details/41492999

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!