01增广路算法
定理4(增广路定理)设flow是网络G的一个可行流,如果不存在从源点s到汇点t关于flow的可增广路P,则flow是G的一个最大流。
1●增广路算法思想
增广路算法是由Ford和Fulkerson于1957年提出的。该算法寻求网络中最大流的基本思想是寻找可增广路,使网络的流量得到增加,直到最大为止。即首先给出一个初始可行流,这样的可行流是存在的,例如零流。如果存在关于它的可增广路,那么调整该路上每条弧上的流量,就可以得到新的可行流。对于新的可行流,如果仍存在可增广路,则用同样的方法使流的值增大。继续这个过程,直到网络中不存在关于新的可行流的可增广路为止。此时,网络中的可行流就是所求的最大流。
该算法分以下两个过程:
(1) 找可增广路。
可采用标号法找可增广路。对网络中的每个节点j,其标号包括两部分信息(pred(j),maxl(j))。其中,pred(j)表示节点j在可能的增广路中的前一个节点;maxl(j)表示沿该可能的增广路到节点j为止可以增加的最大流量。
具体步骤如下:
第一步,源点s的标号为(0,+∞)。
第二步,从已标号而未检查的点v出发,对于边,如果flow(v,w)<cap(v,w),则w的标号为(v,maxl(w)),maxl(w)=min{maxl(v),cap(v,w)-flow(v,w)};对于边,flow(w,v)>0,则w的标号为(-v,maxl(w))