收藏 分享(赏)

最大流在信息学竞赛中应用的一个模型--江涛.doc

上传人:j35w19 文档编号:5599814 上传时间:2019-03-09 格式:DOC 页数:35 大小:258KB
下载 相关 举报
最大流在信息学竞赛中应用的一个模型--江涛.doc_第1页
第1页 / 共35页
最大流在信息学竞赛中应用的一个模型--江涛.doc_第2页
第2页 / 共35页
最大流在信息学竞赛中应用的一个模型--江涛.doc_第3页
第3页 / 共35页
最大流在信息学竞赛中应用的一个模型--江涛.doc_第4页
第4页 / 共35页
最大流在信息学竞赛中应用的一个模型--江涛.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、NOI2006 年冬令营讲座最大流在信息学竞赛中应用的一个模型江 涛关键字:网络 可行流 最大流 附加网络无源汇 必要弧 流的分离 有上下界的最大流 建模引言:最大流类的模型在当今信息学比赛中有相当广泛的应用。但在教学中,发现很多同学对流模型的原理和变形并不掌握,只是记下经典的算法和题目,以便比赛中套用。这当然有很大的局限性,也不是学习之正道。本讲想通过对最大流模型,特别是附加网络的一些分析、讨论,达到抛砖引玉目的。一、网络与流的概念一个实例:运输网络D3SABCTE3214 235NOI2006 年冬令营讲座图 1.1网络定义: 一个有向图 G=(V,E); 有两个特别的点:源点 s、汇点

2、t; 图中每条边(u,v)E,有一个非负值的容量 C(u,v)记为 G=(V,E,C)网络三要素:点、边、容量可行流定义:是网络 G 上的一个“流” ,即每条边上有个“流量”P(u,v),要满足下面两个条件:流的容量限制-弧:对任意弧(u,v)-有),(),(0vuCvuP向边流的平衡-点:除源点和汇点,对任意中间点有:流入 u 的“流量”与流出 u 的“流量”相等。即:有 ,tsVVxVx uPP0),(),(NOI2006 年冬令营讲座网络的流量:源点的净流出“流量” 或 汇点的净流入“流量” 。即: VxVxVxVx tPtPsPsP ),(),(),(),(注意,我们这里说的流量是一种

3、速率,而不是指总量。联系上面所说的实例,下面是一个流量为 1 的可行流:图 1.2标准图示法:D3SABCTE3104 23411 1D0/3SABCTE0/31/21/10/4 0/20/31/5NOI2006 年冬令营讲座图 1.3例 1.1 有一个 n*m 的国际棋盘,上面有一些格子被挖掉,即不能放棋子,现求最多能放多少个棋子“车” ,并保证它们不互相攻击(即:不在同一行,也不在同一列)?分析:1) 行、列限制-最多只能一个车控制;2) 车对行、列的影响-一个车控制一个行和边;例子:图 1.4NOI2006 年冬令营讲座图 1.5显然,我们要求车最多,也就是求流量最大-最大流问题。下面是

4、一个解:图 1.6即(1,3)、(2,1)、(3,2)格上各放一个车,可得到一个最优方案。123123s t111111123123s t111111NOI2006 年冬令营讲座二、最大流问题寻找网络 G 上可能的最大流量(和一个有最大流量的可行流方案),即为网络 G 上的最大流问题。我们再来看看图 1.1 的运输网络例子,我们可能通过改进图 1.3 得到下面这样的可行流:图 2.1求解过程中的困惑:问题 2.1流量还可能增加吗?问题 2.2如果能增加,怎样改进?D1/3SABCTE1/32/21/10/4 0/20/31/5NOI2006 年冬令营讲座三、最大流算法的核心-增广路径退流的概念

5、-后向弧仔细分析图 2.1,我们发现,流量是可以增加的:图 3.1把一个流量弧(B,C)和(C,T)上的流退回到 B 点,改道从 B-D-E-T 走,就可以增加流量了,如下图:D1/3SABCTE1/31/21/11/4 1/21/30/5D2/3SABCTE2/32/21/11/4 1/21/31/5NOI2006 年冬令营讲座图 3.2图 3.1 不 能 “直 接 寻 找 增 大 流 的 路 径 ”, 是 因 为 当 初 有 些 弧 上的 流 选 择 不 “恰 当 ”, 要 “退 流 ”。一种直观的想法就是:调整或重新搜索“当初的选择”-难!能不能保留以前的工作,而在这之上改进呢?经过专家

6、们研究发现,加入退流思想-后向弧,就能再次“直接寻找增大流的路径” 。增广路径(可改进路径)的定义若 P 是网络中连结源点 s 和汇点 t 的一条路,我们定义路的方向是从 s 到 t,则路上的弧有两种: 前向弧-弧的方向与路的方向一致。前向弧的全体记为P+;NOI2006 年冬令营讲座 后向弧-弧的方向与路的方向相反。后向弧的全体记为P-;设 F 是一个可行流, P 是从 s 到 t 的一条路,若 P 满足下列条件:在 P+的所有前向弧(u,v)上,0f(u,v) C(u,v);在 P-的所有后向弧(u,v) 上,0f(u,v) C(u,v);则称 P 是关于可行流 F 的一条可增广路径 。图

7、 3.3本图中:S-A-C-B-D-E-T 为一增广路径。其中(C,B)为后向弧,其它为前向弧。在增广路径上的改进算法:D1/3SABCTE1/32/21/10/4 0/20/31/5NOI2006 年冬令营讲座1) 求路径可改进量; u)f(v, ),(),(min)(),( 、 后 向 弧前 向 弧 vufCPCPvuf 2) 修改增广路径上的流量;四、附加网络 1-残留网络由于要考虑前向弧、后向弧,分析、描述时不简洁,在图 2.1 上直观看也不容易看出增广路径。因此我们把已经有的流量从容量中分离出来表示,引入一个与原问题等价的附加网络 1:残留网络。图 4.1 D2SABCTE2004

8、23411112NOI2006 年冬令营讲座其中,前向弧(黑色)上的容量为“剩余容量”=C(u,v)-f(u,v);后向弧( 红色)上的容量为“可退流量”=f(v,u)。NOI2006 年冬令营讲座改造后的网如下:图 4.2 在这张图上,我们找增广路径显的非常直观了!结合增广路径,我们有如下定理:最大流定理如果残留网络上找不到增广路径,则当前流为最大流;反之,如果当前流不为最大流,则一定有增广路径。证明涉及最小割概念,不是本文重点,由于时间关系,从略。D2SABCTE24 23411112NOI2006 年冬令营讲座至此,问题 2.1和 问题 2.2在这个最大流定理中同时获得解决。求最大流的基

9、本思想: 基于这种思想的算法,关键之处在于怎样找增广路径。常用方法有: 深度搜索 dfs 宽度搜索 bfs初始化一个可行流: Vvu, 0),( 对 所 有vuf现有网络流的残留网络上有增广路径吗?按上面方法对增广路径改进f 为最大流Y NNOI2006 年冬令营讲座 优先搜索 pfs-即类似 Dijkstra 算法的标号法。另外,求最小费用最大流问题(每条边有个费用),只要把每次“找增广路径”改为“找费用最小的增广路径”即可。( 证明从略)五、小结一前面几小节,回顾了最大流算法的一些基本概念和原理,特别提到了把已有流量分离出来单独表示的方法:残留网络。这个与原问题等价的附加网络使问题的描述、

10、思考方便简洁而统一。注意这几个关键词:流 分离 单独表示 等价 方便简洁它们表达了一种思路,一种分析、表示最大流问题的方法。前几年的国家集训队有几篇关于最大流的论文,作者关注的就是分析问题时怎样建立数学模型。如广东北江中学的李伟星在论文最大流的摘要中说:“许多问题可以先转化为网络流问题,再运用最大流算NOI2006 年冬令营讲座法加以解决。而发现问题本质,根据最大流算法的特点,设计与之相配的数学模型是运用最大流算法解决问题的重要步骤。 ”福建师大附中的江鹏同学在论文从一道题目的解法试谈网络流的构造与算法的引论中也有这样一句话:“网络流在具体问题中的应用,最具挑战性的部分是模型的构造。这没用现成

11、的模式可以套用,需要对各种网络流的性质了如指掌(比如点有容量、容量有上下限、多重边等等) ,并且归纳总结一些经验,发挥我们的创造性。”是的,在信息学竞赛中很多最大流相关问题没有现成模式可以套用,但解决最大流问题的原理和思想是相通的,前面所说的构造等价的附加网络的思路和方法就是一种可以借用的“现成模式” 。为了进一步的讨论,先看一个更复杂的问题: 例题 5.1 变形一笔画问题在一个有向图,判断能不能一笔画访问所有的边,但有些弧上可以画多次。我们用容量 C(u,v)表示弧(u,v)最多可以重复画的次数。NOI2006 年冬令营讲座分析:由于除了开始点和结束点,每个点进入次数与离开次数是相同的。因此

12、满足流平衡条件,可以想到用流模型做。但这里每条弧都要画到,即最少要画一次。因此,成为有上下界的流问题。这种流的容量有上下界时求解的问题,在信息学比赛中也很常见。下面将对这类问题做进一步讨论,我们会发现,运用“流分离、构造等价附加网”的思想,解决的难度并不比前面最大流问题大。六、附加网络 2-无源汇的可行流如果每个点都考虑流的平衡,而没有了源点 s 和汇点t,则我们称为无源汇的可行流。有一种简单的方法可以将普通的网络上的可行流要改成无源汇的可行流:加一条边(t,s),容量为可根据需要设定为+或其它值.例 1.1 的这种改变如下:123123s t111111+NOI2006 年冬令营讲座图 6.

13、1例题 5.1 变形一笔画问题的网络改变模型表示如下:图 6.2注:我们用弧上的 a,b 数对表示容量的上下界。无源汇的可行流问题(特指有上下界的流网络):在一个有上下界的流网络 G 中,不设源和汇,但要求任意一个点 i 都满足流量平衡条件: EviEiuff),(),(且每条边(u, v)都满足容量限制 B(u, v)f(u, v)C(u, v)的2431 51,10, +1,11,1 1,11,4NOI2006 年冬令营讲座条件下,寻找一个可行流 f,或指出这样的可行流不存在。不妨称这个问题为无源汇的可行流。-参见周源的一种简易的方法求解流量有上下界的网络中网络流问题上图中把源、汇连接起来

14、了,没有了源和汇,怎么求其上的可行流呢?是的,没有了源、汇,以前的最大流算法就成了无的之矢,一定要有源和汇。那我们为什么还要把有源、汇的问题改成无源、汇呢?答案是破旧立新:没了旧的源、汇,我们可以更加自由地按需要设立新的源、汇。从而使网络模型变成一个新的附加网络! NOI2006 年冬令营讲座七、附加网络 3-必要性流的分离对于有上下界的最大流网络流问题,我们可以看成是在满足“必要”的下界情况时,求最大流(或最小费用等问题)。直观的一种思路就是: 求一个满足下界的流 f1; 在 f1 基础上用寻找增广路径的方法,扩大流,直到没有增广路径;实现的关键点在于: 问题 7.1:怎样求满足下界而又不超

15、过上界的一个流 f1? 问题 7.2:怎样增大流 f1,而又同时不破坏下界?总体上看,下界是一条弧必需要满足的确定值,我们能不能把这个下界“分离”出去,从而使问题转为下界为0,也就是普通的最大流问题的可行流问题?先用一个类似的实例来分析说明:例题 7.1:N 个石子,分成 M 堆,要求第 i 堆的石子数大于给定的正整数 Ci,问有多少种方法?转化问题 :个石子,要求分成 M 堆,问有多少iNNOI2006 年冬令营讲座种排列方法?图 7.1图 7.2组合数学问题 :一列 个 1 中间有 个可分隔点,选 M-1 个,把N1N1 分成 M 段,有多少方法?图 7.3结果: )1,( MNCX1C1

16、X2C2XMCMX1 X2XMC1 C2 CM1 1 1 1 1 1 1 1NOI2006 年冬令营讲座类似地,我们设法运用流分离的思想,找一个等价的附加网络 3,使问题 7.1 和问题 7.2 得到方便而统一地解决。(一) 观察一条路径情况图 7.4如同例 7.1 直接把容量下界减掉怎样?图 7.5显然,如果图 7.5 中的流想通过加上下界来对应地得到图 7.4 中的解是不可能的。因此,这里流的分离不能用简单减掉的方法,而应该把一个弧分离成两个弧。即加一个容量等于下界的必要弧,使可行流分离在这两个弧上。如下图:1 2S T2,6 3,73,41 2S T4 41NOI2006 年冬令营讲座图

17、 7.6一个无源汇的可行流的方案一定是必要弧是满的。因此现在我们先要找一个把必要弧充满的可行流(当然也要满足上界限制) 。现在我们的目光焦点是必要弧,把他们集中起来:图 7.7由于必要弧都是要饱和的,显然与下面图是等价的。1 2S T4 412 3 31 2S T4 412 3 31 2S T4 41233X Y2 33NOI2006 年冬令营讲座图 7.8NOI2006 年冬令营讲座进一步,加弧(T,S),容量不限,成无源汇可行流问题。再去除 X,Y 之间的连线,使 Y、X 分别成为新的源和汇。图 7.9如果 Y 到 X 的最大流能为 2+3+3,则显然有: 必要弧为满 满足容量上界限制 保

18、持流平衡(二) 网络整体情况再来看看例 5.1,先分离必要弧:2431 50 00 031 11 11+1 2S T4 41233X Y2 33NOI2006 年冬令营讲座图 7.10改造:由于可行流的源 S 流出与汇 T 流出应该是相等的,加条边(T,S),容量+。割开所有 必要弧,加两个附加源 Y 和汇 X:图 7.11至此:问题成功转化为求 Y 到 X 的普通最大流问题。我们称这个改造后的网络模型为附加图络 3。24315311111X Y2 111NOI2006 年冬令营讲座回顾本节我们要解决的问题: 问题 7.1:怎样求满足下界而又不超过上界的一个流 f1? 问题 7.2:怎样增大流

19、 f1,而又同时不破坏下界?当求出附加网络 3 的最大流为 1+1+1+1+1=5 时,我们再反过来做:把“进 X”和“出 Y”的对应边连上,则找到一个有上下界容量限制和无源汇可行流。再把弧(T,S)拿走,则问题 7.1 解决。图 7.12注意:原问题可行流存在无解情况,即附加网络 3 的最大流不能把源(或汇) 相连的弧饱和。不同于普通最大流:因下界为 0 时,一定有解。在得到一个可行流 f1 之后,现在我们再来看看问题2431 51/31/1 1/11/1 1/11/11/+NOI2006 年冬令营讲座7.2。再去掉边(T,S)-上图即为弧 (5,1),还原成有源汇最大流的原问题。如果要求这

20、时的最大流,则可在这个基础上,找增广路径来增大流,最终求得一个符合要求的最大流方案。但是要注意的是,对必要弧,我们不能退流,因此相应的残留网络对必要弧要单独处理,或直接暂时拿走,再做附加网络 2,如果对上例处理,则:图 7.13图 7.142431 51/12431 501NOI2006 年冬令营讲座当然,本例不可能再增大流了,例子仅对解决问题 7.2的图示说明。另外,这种情况下的增广路径改进,不会影响必要弧-即:不破坏下界。NOI2006 年冬令营讲座八、小结二求容量有上下界最大流的基本思想:构造附加网络 3: 得到新的源 Y、汇 X源(或汇 )相连的弧满了吗?去掉必要弧和流恢复源、汇再次求

21、最大流无解对附加网络求最大流NY合成当前的最大流与上一步去掉的必要弧上的下界流得到解ABNOI2006 年冬令营讲座竞赛中的实用算法:周源同学在 IOI2004 国家集训队作业一种简易的方法求解流量有上下界的网络中网络流问题 ,是对上面方法的简单化。简化的模型没有了上面的步骤 A 和 B,避免了二次改造网络,使编程容易很多。当然,代价是要多次求最大流。这个方法中用二分法,确定容量下界的最大值,求(T,S)可能的最大流。另外,文中还提到:“在一个容量有上下界的流网络 G 中,求源点 s 到汇点t 的一个可行的最小流。 类似,只是在加入弧 (t, s)后二分( t, s)的容量上界 C(t, s)即可。 ”可见这个简化的方法在竞赛中用途很广。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 竞赛课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报