网络流知识总结

网络流知识总结

此片略过网络流基础知识及定义,重点讨论用法

最大流(最小割)

众所周知,最大流的主流算法为Dinic,Isap及预流推进,此处不予以介绍

二分图匹配模型的转化

很多看似复杂的网络流问题都可以将其转化成二分图模型.
1.给你一些点,让取一些点,不取一些点,选取的点和不选取的点之间都有代价
那么显然可以理解为将一个图分为两个点集的最小代价,那么也就可以理解成花最小的代价割掉一些边,使两个点集之间没有边能互通

有上下界的网络流

基本建模:对于一条边的上下界限制(如果是点就拆点当边做):
1.新建源点汇点,也就是有两对源汇.(有些题可以不用新开但有些题必须新开,根据题目选择)
2.该点入点连接新汇点,出点连接新源点,容量都为下界,入点连接出点,容量为上下界之差
3.判断满足条件的情况就是上述前两类边都满流(流满下界嘛)
这样很多看似较难的问题都可以用这种方法解决

求割边最小的最小割

1.先按原图跑一遍最大流,再将满流的边流量设为1(能割的),和INF(不能割的),第二次的最大流即是个数
证明:不会
疑问:如果第一遍的网络流得到的满流边们不够优秀怎么办..

2.设边数位E,则每条边权值w=w*(E+1)+1,跑一边最大流Flow,
则MaxFlow=Flow/(E+1),个数=Flow%(E+1)
证明:
上述操作就相当于将边权转换成(E+1)进制数,其十位是原边权,个位是1
那么上述结果就显然了
不足:容易爆longlong啊..

费用流

目前还没怎么应用…

原文地址:https://www.cnblogs.com/functionendless/p/9439361.html