网络流算法介绍课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《网络流算法介绍课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 算法 介绍 课件
- 资源描述:
-
1、网络算法介绍PPT网络流算法介绍1.基本概念2.最大流问题求解3.二分图匹配4.二分图最佳匹配关键词:源点、源点、汇点、汇点、容量、容量、流量、流量、残量、残量、费用、费用、增广路径增广路径网络流问题类比:求最短路径把实际问题的道路地图抽象为有向图,然后用一定算法求解最短路径。我们也可以将一个有向图看作一个流网络来解决另一类型的问题。匹配问题、运输问题、任务分配问题。流网络定义(Flow Network)nV表示整个图中的所有结点的集合.nE表示整个图中所有边的集合.nG=(V,E),表示整个有向图.ns表示网络的源点,t表示网络的汇点.n对于每条边(u,v),有一个容量c(u,v)(c(u,
2、v)=0)n如果c(u,v)=0,则表示(u,v)不在网络中。n如果原网络中不存在边(u,v),则令c(u,v)=0n对于每条边(u,v),有一个流量f(u,v).流网络示例水源水源源点源点S蓄水池蓄水池汇点汇点T水管水管/边边流速限制流速限制容量容量c流速流速/流量流量f网络流三个性质n容量限制:f(u,v)=c(u,v)n对称性:f(u,v)=-f(v,u)n收支平衡:对于不是源点也不是汇点的任意结点,流入该结点的流量和等于流出该结点的流量和。只要满足这三个性质只要满足这三个性质,就是一个合法的网络流就是一个合法的网络流.网络的流量、最大流一个合法的网络流量|f|定义为:n从源点流出的流量
3、f(s,v)n流向汇点的流量 f(v,t)n|f|的最大值表示为最大流流网络示例收支平衡容量限制f(v4,v6)=-f(v6,v4)=1f(v6,v4)图中不给出网络的流量|f|=5+3=8或等于5+2+1(汇点处)0=|f|=最大流残量网络n对于网络中的每一条边,计算容量与流量的差即表示为残量。nR(u,v)=C(u,v)F(u,v)n形象的说,一条边的残量即为该边还能流过的流量。残量网络举例v1tsv2(2,2)(4,4)(2,4)(0,3)(2,2)v1tsv2232422原网络残量网络残量网络n从残量网络中可以清楚地看到:n因为存在边(s,v2)=3,则知道从S到v2还可以再增加2单位
4、的流量;n因为存在边(v1,t)=2,则从v1到t还可以再增加2单位的流量。v1tsv2232422后向弧n其中像(v1,s)这样的边称为后向弧,它表示从v1到s还可以增加4单位的流量。n但是从v1到s和原网络中的弧的方向相反。这样的弧称为后向弧。n问题:有必要建后向弧线?tsv232422v1为什么要建立后向弧n在寻找最大流的过程中,有些弧的选择一开始可能就是错误的。n所以在路径中加上后向弧,作为标记。n当发现了另一条可增广的路径是并包含后向弧,意味这条路径对以前对这条弧顶选择进行取消n后向弧为算法纠正自己所犯的错误提供了可能性,它允许算法取消先前的错误的行为增广路径n在残量网络中,从源点S
5、出发到汇点T的一条路径。n增广路径上的最小残量表示该网络还可增加的额外流量。点集间的流量定义点集间的流量:f(X,Y)=f(x,y)则有:f(X,X)=0 (流的对称性)f(X,Y)=-f(Y,X)(流的对称性)f(XY,Z)=f(X,Z)+f(Y,Z)f(X,YZ)=f(X,Y)+f(X,Z)xX yY点集间的流量n不包含s,t的点集,与它关联的边上的流量和为零证明:f(X,V)=f(x,v)=0(流量收支平衡)=0 xXvVxX网络中的割n割(S,T)由两个点集S,T组成,满足1、S+T=V2、源点在S集合中3、汇点在T集合中4、f(S,T)表示割的流量5、c(S,T)表示割的容量最小切割
6、时使c(S,T)最小的切割割的流量n任意割的流量等于网络的流量证明:f(S,T)=f(S,V)f(S,S)=f(S,V)+0 =f(s,V)+f(S-s,V)=f(s,V)+0 =|f|割的流量n网络的流量小等于任意割的容量证明:|f|=f(S,T)=f(x,y)2n反证法n假设残量网络中还有增广路径,n增广路径上的流量至少为1n由该路径增广后的流量fn与f是最大流矛盾2 3n此时的残量网络中不存在s-t通路n定义S为s可达的点集n定义T为可达t的点集n显然ST=Vn(S,T)中所有弧都满载,否则残量网络将不为0,使s-t有通路n所以|f|=c(S,T)3 1n由|f|3的证明给出了从最大流构
7、造最小割的过程,即求出s的可达点集S,再令T=V-S求最大流的增广路算法n每次用BFS找一条最短的增广路径;n然后沿着这条路径修改流量值(实际修改的是残量网络的边权)。路径上的后向弧+流量值路径上的前向弧-流量值n当没有增广路时,算法停止,此时的流就是最大流。最大流例题BOJ1154n典型的最大流问题n已知网络容量,求最大流量n根据题意构图如下:1为源点,M为汇点.容量为题目已知给出,可能的情况是相同两个结点之间有多条水渠,将它们累加即可.初始化流量网络为0,则残量网络即初始为容量网络.n算法流程:构图-求最大流-输出最大流最大流例题BOJ1154n寻找增广路nbool findload()n
8、n memset(visited,0,sizeof(visited);n head=tail=0;n queuetail+=s;n while(head tail)n n j=queuehead+;n for(i=1;i 0)/cap为容量,本题可以直接表示为残量n n prei=j;/路径标志n visitedi=1;n if(i=t)return true;/找到s-t通路n queuetail+=i;n n return false;n最大流例题BOJ1154n求最大流nint maxflow()nn int i,j,flow=0,min;/min为增广路径上的瓶颈流量;flow网络最大
展开阅读全文