目录
【镇楼】
天啦真的好好懂!!!麻麻再也不用担心我的网络流学习啦!!!
【引入】
首先,我们来看一个网络流图实例。
最大流问题:给定指定的一个有向图,其中有两个特殊的点源点S(Sources)和汇点T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow)。
那么问题来了,什么是最大流?要满足什么条件?怎么求最大流?
【基本定义和概念】
要知道什么是最大流,首先要知道什么是网络流图和可行流。
网络流图:
在有向图G =(V,E)中:
- 有唯一的一个源点S(入度为0:出发点)
- 有唯一的一个汇点T(出度为0:结束点)
- 图中每条弧(u,v)都有一非负容量 c(u,v)
满足上述条件的图G称为网络流图。
我们可以把图上的边看做一种管道,管道有最大通过流量的限制,图中的每条边的权值就是所谓的“容量”。
可行流:
每条弧(u,v)上给定一个实数 f(u,v)满足:有0<=f(u,v)<=c(u,v),则f(u,v)称为弧(u,v)上的流量。
如果有一组流量满足条件:
- 源点s:流出量=整个网络的流量
- 汇点t:流入量=整个网络的流量
- 中间点:总流入量=总流出量
那么整个网络中的流量成为一个可行流。
如下图所示,对于一个网络可能有多个可行流:
最大流:在所有可行流之中,流量最大的一个流。
上图的可行流7同时也是最大流,注意最大流可能不止一个。
在最大流问题中,容量c和流量f满足三个性质:
- 容量限制 ( f(u,v) <= c(u,v) )
- 斜对称性 ( f(u,v) = - f(v,u) )
- 流量平衡 (对于除了s,t的任意结点u,