1.最大流最小割定理
割的容量:所有割边中正向边的容量和
定理一:如果f是网络中的一个流,CUT(S,T)是任意一个割,那么f的值不超过割CUT(S,T)的容量。(任意割容量>=任意流流量)
感性理解,一个割上的边(包括正向边和反向边),f最接近割的容量的时候就是割上的所有边都是正向边,且全部跑满,其他情况不会优于这种情况,而这种情况下f=CUT(S,T)的容量。
那么,就有一个结论:如果有一个割等于流,那么这个割是最小割,流是最大流。
我们只需要提出一种可行的构造方案来找到这样的一个割即可。
定理二:对于一个流,如果它为最大流,那么,这时候网络中已经没有了增广路。
证明逆否命题,如果若G中存在增广路,则f不是最大流的流量,而根据增广路的定义,这是显然的。
PS:增广路:就是一条有向路径,路径上各点剩余容量>0,当没有增广路时,就说明S和T不连通。
而我们来研究最大流的这张网络,把从S开始能到达的点分做一个集合,剩下的点分作另一个集合,我们可以得出,通过这样的方法得到的割,正向边全部跑满(否则可以继续向外延伸),这时我们构造的这个割的容量=最大流流量,由上文推知这是最小割。
2.算法
EK:广搜找一条增广路,复杂度O(nm^2)
Dinic:广搜分层,深搜找增广路,增广路只在相邻层找。
3.24题
1.运输问题
建超源,汇。构建二分图模型,源向仓库连容量ai的边,零售商店向汇连bi的边,仓库和零售商店之间连容量为inf,费用为cij的边,费用流。
2.数字梯形问题
显然,数字要在边上,所以一个想法就是把一个点拆成入点和出点,入点和出点之间连容量为1,费用为数字大小的边,转移和原点的连边很简单,就不说了。