【图的割:定义】
指的是对于某个顶点集合S属于V,从S出发指向S外部的那些边的集合,记为割(S,V\S]),边的容量之和称为割的容量。如果有s属于S,而t属于V\S,那么此时的割称为s-t割,如果将网络中的s-t割所包含的边都割去,就无法找到从源点s到汇点t 的路径。
割:设Ci为网络N中一些弧的集合,若从N中删去Ci中的所有弧,即:使得从顶点Vs到顶点Vt的路集为空集时,称Ci为Vs和Vt间的一个割。
最小割:图中所有的割中,边权值和最小的割为最小割。
实例:如右图所示的割集为 --表示无序对,->表示有序对
C1:{①->③,①->⑤}
C2:{④->②, ⑤->②}
C3:{③--④,③-- ⑤,①-> ⑤}
C4:{③--④,④-- ⑤, ⑤->②}
C5:{①-> ⑤,③-- ⑤,④-- ⑤,④->②}
C6:{①->③,③- - ⑤,④-- ⑤, ⑤->②}
【对于给定的网络,为了保证没有从s到t的路径,需要删去的边的总容量的最小值是多少】
该问题称为最小割问题,
以下转自维基百科原文:http://en.wikipedia.org/wiki/Max-flow_min-cut_theorem
1. 在优化理论中,最大流最小割定理指:在一个网络流中,能够从源点到达汇点的最大流量,等于,如果从网络中移除就能够导致网络流中断的边的集合的最小容量和。
2. 定义:
假设N=(V,E)是一个有向图,其中结点s和t分别是N的源点和汇点。
边(u,v)的容量c(u,v)定义为:能够通过该边的最大流量。
通过每条边的流f(u,v)的需要满足如下约束:
(1)f(u,v) <= c(u,v),即容量约束。
(2)对于任意v不属于{s,t},有sum{ f(u,v) } = sum{ f(v,u) },即流入某个中间结点的流量等于从这个结点流出的流量。
网络流定义f定义为|f| = sum{ f(s,v) },代表从源点流入汇点的流量。
最大流问题,是求得|f|的最大值。
s-t割定义为对V的一个二划分,其中s和t属于不同的两个集合S和T。割集就是{ (u,v)| u属于S, v属于T }。显然,如果割集中的所有边被移除,那么|f| = 0。
割的容量定义为c(S, T) = sum{ c(u,v), 其中u属于S,v属于T }。
最小割问题,是求得这样一个s-t割C(S, T),使得S-T割的容量最小。
3. 最大流最小割定理
一个s-t流的最大值,等于其s-t割的最小容量。
4. 应用: 项目权衡问题
4.1 问题
假设有n个项目和m种设备。项目pi能够产生效益r_pi,设备qj需要耗费c_qj。每个项目需要多种设备,每种设备可以被多种项目使用。问题是,决定实施哪几个项目,以及购买哪几种设备,使得效益最高。
4.2 对应到最小割问题
构建一个这样的网络:假设源点和汇点s和t,s与每个项目pi之间有一个边,其容量为r_pi;每个设备与t之间有一条边,其容量为c_qj。如果pi需要设备qj,那么pi与qi之间有一条边,其容量为无穷大。
【解决】求出该网络流的最小割,即是项目选择的最大效益。