最大流问题及Ford-Fulkerson方法

流网络

流网络是一个有向图, G=(V,E) ,图中的每条边有一个非负的容量值 c(u,v)0 .如果 (u,v)E ,则定义 c(u,v)=0 。且在流网络中含有两个特殊的点:源节点 s 汇结点 t
流网络的形式化定义如下:
G=(V,E) 为一个流网络,其容量函数为 c G 中的是一个实值函数 f:V×VR ,满足如下性质:

  • 容量限制:对于所有结点 u,vV ,其中 0f(u,v)c(u,v) .

  • 对于所有结点 uVs,t ,其中

    vVf(v,u)=vVf(u,v)

f(u,v) 为从结点 u 到结点 v 的流。

一个的值 |f| 定义为:

|f|=vVf(s,v)vVf(v,s)

即,流 f 的值为从源结点流出的总流量 减去流入源结点的总流量。

最大流问题就是在给定的流网络中找到最大的

Ford-Fulkerson

之所以称它为方法,是因为它本身包含了几种运行时间各不相同的具体实现。
在了解Ford-Fulkerson方法之前,我们先来看以下几个概念。

残存网络

在给定的流网络 G 和流 f ,* 残存网络 Gf *由那些仍有空间对流量进行调整的边构成。其残存流量定义为

cf(u,v)=c(u,v)f(u,v)

只有当 cf(u,v)>0 ,才将边 <u,v> 加入到残次网络中。
更一般的,残存容量可以定义为:
假定有一个流网络 G=(V,E) ,其源结点为 s ,汇结点为 t 。设 f 为图 G 中的一个流,考虑结点对 u,vV 的残存容量 cf(u,v)
cf(u,v)=c(u,v)f(u,v),f(u,v)0(u,v)E(u,v)E

而残存网络的每条边,即残存边必须允许大于0的流量通过。

你可能感兴趣的:(算法,最大流问题)