网络最大流

网络最大流

例题:

如果网络结构复杂,就得靠算法算出结果。

这里需要注意容量和流量的区别。其中f(u,v)的范围需要额外注意,是 0<= f(u,v) <= c(u,v),不会出现所谓的负流量。

网络流的三个性质:

1、容量限制:  f[u,v]<=c[u,v]

2、反对称性:f[u,v] = -f[v,u]

3、流量平衡:  对于不是源点也不是汇点的任意结点,流入该结点的流量和等于流出该结点的流量和。

流量:实际流量。

容量:最大流量。

可行流:合理的流量。

最大流问题,就是求在满足网络流性质的情况下,源点 s 到汇点 t 的最大流量。

正向边:若边(u,v)的方向与该路径的方向一致,称正向边,方向不一致时称为逆向边。

增广路径:

若路径上所有的边满足:

1 所有正向边有:f(u,v) <c(u,v)。

2 所有逆向边有:f(u,v)>0。

也就是:增广路定义:在残量网络中的一条从s通往t的路径,其中任意一条弧(u,v),都有r[u,v]>0。

说的直白些,所谓增广路径,就是找到这样一条路径,其流量不满,未达到容量上限。

残留网络:

为了更方便算法的实现,一般根据原网络定义一个残量网络。其中r(u,v)为残量网络的容量,通俗地讲:就是对于某一条边(也称弧),还能再有多少流量经过。

r(u,v) = c(u,v) – f(u,v)

Gf 残量网络,Ef 表示残量网络的边集.


如果把V分成两个非空集合V1,V2,使Vs属于V1,Ve属于V2,则称V1,V2为截集或割。

解的一般步骤:


例题:


方法比较:

Ford-Fulkerson算法的是采用深度优先策略,是网络最大流的基础算法;

Edmonds-Karp算法是对顶点给标记的过程采用了广度优先的策略