上一篇文章介绍了网络最大流中的Ford-Forkerson算法和它的改进版本。对于解决网络最大流、最小割相关问题,今天我们来看一个效率更快的算法Push-Relabel算法。
1.Push-Relabel算法思想
对于一个网络流图: 该算法直观可以这样理解,先在源节点处加入充足的流(跟源节点 s 相连的所有边的容量之和),然后开始按一定规则进行流渗透,一个边一个边的向汇点渗透,直到没法再渗透(类似于Ford-Fulkerson算法中找不到增广路径了),那么这时再把一些剩余的流回收到源节点
主要分为两个步骤:push和relabel。push表示从所有节点找出一个存水量大于0的节点 u ,将它所存的水尽可能推向与它相邻的节点