码迷,mamicode.com
首页 > 其他好文 > 详细

网络流总结

时间:2019-08-25 14:18:25      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:总结   如何   限制   font   建图   center   二分   比较   应该   

网络流题型总结

负载平衡问题:

N个环形排列的点,每个点之间的权值数量不相等,现在可以让每个点G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 n个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。

题解:

首先为了让每个点收支达到平衡,我们可以先求出所有货物的数量,进而求得每个点货物数量的平均值。

那么对于当前仓库有两种可能:

1当前仓库的数量是比平均值大的,那么我们知道当前仓库是需要流出w[i]-avg数量的。

2当前仓库的数量是比平均值小的,那么我们知道当前仓库是需要流入avg-w[i]数量的

对于情况1,我们让这个点和汇点建立一个边,流量上限是w[i]-avg,费用为0,代表这个边必须流满。

对于情况2,我们让这个点和源点建立一条边,流量上限是avg-w[i],费用为0,代表这个边同样必须流满。

现在考虑单点,由于可以在相邻的点之间传递,我们在相邻点之间,建立一条流量上限为INF
,费用为1的边,代表每向这个点流入一个流量,费用为1。

这样跑一个最小费用最大流,就是本题的答案。

 

P4015 运输问题:

W 公司有 m 个仓库和 n个零售商店。第 i个仓库有 ai? 个单位的货物;第 j 个零售商店需要 bj个单位的货物。

货物供需平衡,即n个零售店需要的和m个仓库所拥有的货物相同

从第 i 个仓库运送每单位货物到第 j个零售商店的费用为 Ci,j???

试设计一个将仓库中所有货物运送到零售商店的运输方案,使总运输费用最少

答案要求,两行分别输出最小运输费用和最大运输费用。

解决方法:

最小运输费用,其实计算的话,就是一个模版题。

问题在于计算最大运输费用。

我们还是利用类似负数转逆的思想,我们考虑把所有的单位运输费用全部设置成为负数,同样跑最小费用最大流,那么其实就转变成为最大费用最大流。

建图的话,其实也比较好建立

S连接仓库,流量上限为仓库货物量,费用为0

仓库连接商店,流量上限为INF,费用为ci,j

商店连接汇点,流量上限为商店需求货物量,费用为0

 

P4014 分配问题

有 n件工作要分配给 n 个人做。第 i个人做第 j件工作产生的效益为 ci,j。试设计一个将 n件工作分配给 n个人做的分配方案,使产生的总效益最大。两行分别输出最小总效益和最大总效益。每个人只能做一个工件

解决方法:

和运输问题非常类似,但是这里每个物品只能给一个人做。那么我们可以考虑,从源点到每工作一个限制,保证每个工作只能被做一次,同时每个人只能做一个工作。那么我们就从源点连接物品一个流量为1,费用为0的边,而对于每个人,连接汇点,流量上限为1,费用为0,在每个工件和人之间,连接流量为INF,费用为ci,j的边,跑最小费用最大流以及最大费用最大流。

P3355 骑士共存问题

在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示。棋盘上某些方格设置了障碍,骑士不得进入对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击。

最大匹配=最小点覆盖
最小路径覆盖=|G|-最大匹配数
最大独立集=点数-最大匹配

证明:

把黑白两种位置看成二分图,黑色肯定不能攻击到黑色,白色也肯定不能攻击到白色。

而一个黑色的点一旦出现,那么周围一些白色的点不能同时存在。

我们考虑给不能同时存在的点连接一条流量为INF,

对于黑色类型的点,每个点由于只能放一个,每个点连接源点,流量为1

对于白色类型的点,每个点连接汇点,流量为1。

我们建立出来的图形,其实就是从s-黑点-白点-t。

我们知道这些点实际上是不能存在的,也就是说这些点所连接的汇点,流量应该为0,即最小割。由最小割=最大流,我们求这个图的最小割,即能保证所有无法同时存在的点,满足条件。

这其实就是二分图的最大独立集问题。

选出最多的点数=原来的点数-最大流

选出最多的点数=原来的点数-最小割

Ans=n*n-m-maxflow

 

网络流总结

标签:总结   如何   限制   font   建图   center   二分   比较   应该   

原文地址:https://www.cnblogs.com/bluefly-hrbust/p/11407449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!