ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络流 建模

2022-08-24 18:30:59  阅读:251  来源: 互联网

标签:最大 建模 流量 网络 算法 Dinic


网络流算法和建模

网络流的基本算法大家想必是知道的,主流的应该是Dinic和HLPP之类的,本人太弱,只会Dinic,当然事实上一般在算法竞赛中不大会搞一个Dinic做法必定会TLE的毒瘤题,所以基本算法会Dinic是完全足够的

还有些基本定理,首当其冲就是最大流最小割定理,虽然你可能不会证明它,但记起来很简单

但是,网络流题目真正的难点并不是基本算法,毕竟Dinic不算是个很难理解的算法,网络流的真正难点是建模

那么笔者在此介绍几个关于最大流和最小割的建模

#1 最大流模型

1.二分图最大匹配

一道开胃小菜,这题大家以前一定会优先想到使用匈牙利算法,其实也可以从网络流的角度来考虑

我们以这张丑陋的二分图举个例子
显而易见的是,在二分图最大匹配中,每条边最多被选到一次
也很显而易见的是,每个点最多被选到一次
这些东西显然都是限制,需要我们采取一些方法来满足这些数量上的限制
从网络流的角度看来,它们也就是边的最大流量
这样一幅画面就产生了:

按照流量平衡定理,进入每个点的流量都等于这个点流出的流量
那么就可以保证:左边一层的点至多被访问1次,同时右边一层也是
因为两层中间的点最大流量是1,因此每条边最多被访问一次
接下来的事情很简单,对它跑dinic,答案就是这个图的最大流
代码就很简单了,应该不用再贴了

2.[luoguP2763]试题库问题

首先这题的题面是由点问题的,虽然每道题可以被看做多个类型,但是事实上被选的时候它只能被归在一个类型中
总之来看看这道题的限制吧,显然:
1.每道题只能被取一次
2.每道题只能匹配一道题
3.每种类型最多取到题目中的要求个
然后嘛,就可以很自然地构造出这张图了:

我们对它跑最大流,如果最大流小于总和\(m\),那肯定是No Solution!
那么如何判断方案?
我们看看左右两层之间连的正向边是否被改为0即可
代码也是不难的,不用再贴了
事实上下面的题我也不贴了,主要是因为我懒这些题最重要的是思路,代码不难

标签:最大,建模,流量,网络,算法,Dinic
来源: https://www.cnblogs.com/sheepcsy/p/16621187.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有