[NetworkFlow]网络流建模相关

本文介绍了网络流问题,包括其作为线性规划问题的应用、流的定义与约束,以及二分答案和枚举答案的策略。文章详细阐述了网络流的模型,如最大流、最小割和费用流,通过实例解析了如何使用网络流解决实际问题,如士兵占领、跳舞、宿舍分配等。同时,还探讨了平面图与其对偶图的转换,以及上下界网络流构图的方法。
摘要由CSDN通过智能技术生成

网络流问题本质上是线性规划问题的应用之一,线性规划问题的标准形式是给出一组等式约束和不等式约束,要求最优化一个线性函数。
在流问题中,变量以流量的形式出现在问题中,我们给出一个流网络(以有向图的形式)来解决有关流的问题。
流是整个网络流问题的核心所在,它实际上是定义在流网络上的一个线性函数,在流网络中,每条边都有一个流量 f(u,v) ,流 f=vVf(S,v)
流量 f(u,v) 是流问题中的变量,它有两个约束,一个是不等式,一个是等式
(1)容量限制: f(u,v)c(u,v)
(2)流量平衡:对于一个 u vVf(u,v)=0

简单技巧

二分答案/枚举答案

许多时候我们要求的答案满足二分性,通过网络流算法验证解,二分答案是建模前常用的手段,有的时候二分答案的复杂度可能不如直接一个一个答案枚举来的优,这时候我们不如选择枚举答案

平面图与其对偶图的转换

这是解决平面图上问题的最常见技巧,给定一个平面图,我们将原图中的面抽象成点,原来分割两个面的边就在对应的两个点之间连线,构造出原图的对偶图。

模型

网络流的模型总体上分为三种:最大流,最小割和费用流
(尽管总是利用最大流和最大流—最小割定理来解决最小割问题,但两者在建模时的思考方向完全是不一样的)
流量平衡思想
大多数最大流模型都是基于这一思想,题目中有明显的等量/不等关系和变量(01变量非常常见),要求最优化一个函数(可以注意到这其实是线性规划问题)我们可以考虑抽取题目中的约束条件(等式/不等式)进行观察。
<1>要注意每条边都同时作为一个点的出边和一个点的入边,因此,每个变量必然同时关联两个等量关系,且分别出现在这两个等量关系的等号的左边和右边(或者是以一对相反数形式出现);
<2>如果点内部有限制(比如某个点自身的权值不能超过X等等),那么该点内部也“暗含”一个变量,此时就需要拆点(不一定拆成两个点,可能拆成更多的点),然后在拆出的点当中再连边,附加一些限制,然后再考虑流量平衡;
增广路思想
有时候原题的方案的得出可以很明显地分为一些阶段,每一阶段都会对一些变量(这些变量可能是实的也可能是虚设的)产生同样的效果值累加,而这些变量恰好有各自的限制,且互不关联。这刚好相当于网络中的一条从源点到汇点的一条增广路,对路上所有边的流量都会增加,且流量有各自限制(容量),且互不关联。
用增广路思想能够解释的模型往往是一个很明显的“物质路径”模型,某一种物质(可以是实的也可以是虚的)从源点往汇点“走”,边上的流量代表物质经过的量。

最大流


BZOJ 1458 士兵占领
大意:给定一个 mn 的棋盘,其中 k 个点有障碍,要求放置最少的士兵,使第 i 行有至少 L[i] 个,第 j 列有至少 C[j]
:棋盘行列相关是典型的流量平衡的应用,显然题目中视格子 (i,j) 0/1 变量,每行每列都各有一个不等式,题目要求的是 0/1 变量的总和最小,将行列看作二分图,那么就转化为了下界最小可行流了


BZOJ 1305 CQOI dance跳舞
大意:给定 n 个男生和 n 个女生,一些互相喜欢而一些不,举行几次舞会,每次舞会要配成 n 对,不能有相同的组合出现,每个人只能与不喜欢的人跳 k 次舞,求最多举行几次舞会
:假如已经知道了举行的舞会次数,对于每一个男生/女生就有两个约束,一个是配对过多少人,一个是配对过的不喜欢的人小于等于 k ,我们对于每个点首先源向它连舞会次数容量的边,然后设置若干条容量为1的边连向喜欢的女生,再连向一个虚结点容量为 k (这里描述了第一个约束),虚结点向不喜欢的女生连容量为1的边(这里描述了第二个约束),然后如果该图最大流能流满,说明当前舞会次数下存在可行方案,我们发现舞会次数满足二分性,于是二分答案。


经典问题:二分图最大匹配
BZOJ 1433 ZJOI2009 假期的宿舍 最大流
大意:给定一些人,有些人是在校学生,有些去学校探访,在校学生有些回家,一个人只能睡认识的人的床,求能不能睡下
:在许多问题中我们需要刻画两个集合之间一一对应的关系,这就是二分图匹配。(集合中任意两个元素的配对是一般图匹配,不在讨论范围内)。
二分图最大匹配有匈牙利算法这样的经典做法,但网络流同样能解决这个问题,对于两个点集中的每个点,都有一个约束条件是邻边被选次数小于等于1,我们直接最大流解决。


BZOJ 3993 Sdoi2015 星际战争
大意:有 n 个机器人和 m 个激光武器,每个武器有一个威力和能打的集合,同一时刻只能打一个机器人,问最少多久可以全灭
:假如我们知道当前所有武器已经攻击了 t 的时间,那么对于每个武器我们都知道它的总输出是多少,对于每个武器和机器人我们都可以列出一个等式,二分图构图,二分这个时间 t 即可


经典问题:DAG最小链覆盖(可重复/不可重复)
大意:对于一条链来说,除了首尾,中间点都要满足入度=出度,且入度<=1,出度小于<=1,对于一个点,出度入度各有一个方程,拆点拆成二分图,由于点有要求至少经过一次,点内部有流量下界,然后就转化为下界最小可行流了


经典问题:混合图欧拉回路
BZOJ 2095 Poi2010 Bridges
:有向图欧拉回路存在的充要条件是每个点入度=出度。
随意将原图中的无向边定向,我们可以算出当前每个点的入度与出度,对于一个入度>出度的点来说,它需要将指向它的(入度-出度)/2条边反向,对于一个出度大于入度的点来说,它需要将它指向的(出度-入度)/2条边反向,将所有边是否被反向视作0/1变量,每个点就可以得到一个等式,因此我们将入度>出度与出度>入度分为两个点集,一边连向源,一边连向汇,其他边按原图连边,最大流判断能否流满即可。

费用流


BZOJ 1930 Shoi2003 pacman 吃豆豆
大意:找两个不相交的二维上升点列使得两个人一共取到的点价值最大
解:假如有相交,交换两个人的终点就不相交了,所以不用管相交,然后就变成了多阶段的问题,拆点,设上界,构造源汇,一条增广路对应一种方案。


BZOJ 2055 80人环游世界
大意:给定 n 个点,每个点有固定的经过次数, m 个人从任意节点出发任意节点结束,只能向右走,要求总边权和最小
解:拆点设上下界,源点到汇点任意一条增广路对应于一个人的路径。


BZOJ 1449 JSOI2009 球队收益
大意:给定 n 支球队,第

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值