Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
流网络:是一个有向图(可以有环),有两个特殊的点:一个是源点(出发点),一个是汇点,每条边都有属性,叫做容量(也就是每条边的权),
可以想象成一条河,每个点就是一个汇集处,边的容量就是一段的流量。
对于反向边,可以在中间加一个点,所以我们可以默认成不存在反向边
如果边不存在,那容量就是0;
**可行流(f),从源点流出,**如果满足2个条件就是可行流:1容量限制 2流量守恒(对于每个点,流进多少,就流出多少)
可行流流量值(|f|)=往外流的流量 - 流回来的流量(这里考虑了反向边,但基本上是不需要考虑的)
最大流:即最大的可行流
残留网络:针对流网络的某一条可行流而言,每个可行流都对应唯一的残留网络(Gf)
残留网络的点集就是原网络的点集,边集包括原网络的所有边,和所有反向边,
残留边的容量有两种情况
对于非反向边,也就是图里的边,就是他还没有用掉的容量值,啥意思??不是说每条边都有一个最大流量吗,那残留网络的边值就是最大流量减去原流量。
对于反向边,就是这条边能退回去多少流量,那也就是这条边的原流量
那为啥要定义这个反向边呢??对于任意一个点你可以选择走或者是不走,但是你走着走着就发现这条路不是最优解,那你就后悔了于是要返回,返回的流量就是原来流出的流量!!
原网络的可行流(f)和残留网络可行流(f’)有啥关系?
f+f’也是原网络的一个可行流。
证明:那就看是否满足容量限制和流量守恒
分类讨论:如果这两条边的方向是相同的,我们知道残留的最大值就是c(最大容量)-f,也就是说: 0<=f’<