0
点赞
收藏
分享

微信扫一扫

秒懂算法 | 最大网络流的增广路算法

上善若水山西太原 2022-04-15 阅读 43
算法

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))࿰

举报

相关推荐

0 条评论