图像分割中用到最小割原理,引出了最大流最小割算法,主要参考来自UCLA CIVS的Hong Chen的PPT 《Introduction to Min-Cut/Max-Flow Algorithms》
一、 首先借用PPT的两张图分别讲述一下两者的应用
1. 最大流应用于网络传输
2. 最小割应用于桥问题
二、基本概念之 s-t 图
1. 源结点(source node)和汇结点(sink node)
2. 从结点i到结点j的有向边(Arc)<i, j>
3. 每条边<i, j>有非负的容量cap(i, j)
4. cap(i, j) = 0 表示没有边
三、s-t 图中的流概念
流是一个实数函数,为每条边<i, j>赋值 f(i, j),流具有如下一些属性:
1. 容量限制: f(i, j) <= cap(i, j)
2. Mass balance constraint (质量守恒约束,暂时如此翻译),如下公式表示:
- 所有从源点出发的边的流量之和 - 所有到源点的边的流量 = 流量的值
- 所有从汇点出发的边的流量之和 - 所有到汇点的边的流量 = 负的流量值
- 所有非源点和非汇点出的边的流量之和 - 到这些点的边的流量之和 = 0
以下是流量的一个例子,源点出发的 2+3,到源点的为0,则流量为5,,类似推理其他点
引出最大流的概念,所有可能的流函数中拥有最大值的流
四、基本概念之s-t Cut
引入割(Cut)的概念,将拥有源点s和汇点t的结点集合V分成两个子集S和T,当且仅当s属于S且t属于T时,称这种分割为Cut。如下图中左图为割,右图则不是。
五、s-t割的容量
s-t的容量cap([S, T]) 指的是所有从S到T的边界的容量和,具体公式如下:
下面是个例子,注意此外只计算从S到T的,不计算T到S的
引出最小割(minimum cut)的概念,所有可能的s-t割中容量最小的s-t割。
六、基本概念之Flow Across s-t Cut(理解为交叉流s-t Cut)
所有从S中的结点到T中结点流之和 - 所有从T中的结点到S中的结点的流之和。
下图是个例子,此处计算从S到T和T到S。
七、s-t图的性质
1. 对于任意的s-t割和流,s-t割的容量是s-t割交叉流量的上界(即最大值),推理过程很简单。
2. 对于任意的s-t割,割的交叉流量的值等于s-t流的值,这个推理稍微麻烦一点儿,主要思想是把前一项的终点分为S和T,后一项的起点分为S和T,再把前一项加和合并。
三、对于任意的s-t割和流,s-t割的容量是流的值的上界,这是由性质一和性质二推理出来的。