昨天看的最大流和最小割,虽然没怎么看懂,但是对于这个ford-fulkerson算法倒是有些了解了,通过它我对最大流也有了一个认识
简单来形容一下最大流的概念吧
最大流就是从起点到终点的瞬时流量的最大值,书上有个词叫做残余网络,还时不时加上一些方向相反的边,其实这些边就是已经流到终点的路线已经占用了正方向的流量,加上反方向的值正好就是刚刚打造的正方向的流量值
想想你挖好了水沟,然后向一个起点倒水,有的路线通向死角,有的通向终点,有的通向别的点,这时我们可以这样去计算最大流,随便找到一条从起点到终点的路线,然而在这路线其中一个点有多个方向流出去,但是进来的流量不够,这时选择最佳的方向成了难题,残余网络就是这样,随便按着这个路线走,如果错了在以后会自动修改过来的,怎么修改?你想啊,如果当前点1流向的下一个点2有其他3流进来的水,而且3流向2更好,那么就采用3流向2,然后重新考虑1的方向呢?而残余网络就是当前流量经过后产生反方向的流量也画到地图上面来,数值正好就是正方向已经确定的流量,这时等到3搜索的时候就有一条冲3到2到1的路线,这时就等于水冲3流向2然后2后面的路线不变,只是 “把1流向2的水挤回来了”,然后你又会发现这个时候的水应该是从1开始重新选择下一个点了,这样反反复复,正方向和反方向相互配合,知道找不到从起点到终点的路线为止
呼呼,大爷花了半个小时画了个鸟图,看看吧,这就是模拟这个算法的运行的过程