网络传输与最大流量算法.刘凌飞

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安庆师范学院 2011 届数学与计算科学学院学生论文
网络传输与最大流量算法
学生:刘凌飞(安庆师范学院数学与计算科学学院) 指导老师:张胜 摘要 随着网络事业的发展,网络传输的速度.效率.容量渐渐成为广大用户朋友所关注的问题.本文先向大
家介绍网络传输的方式及发展历史,再详细介绍了最大流量的算法问题. 最大流问题的研究密切了图论和运 筹学,特别是与线性规划的联系,开辟了图论应用的新途径. 目前网络流的理论和应用在不断发展,出现了 具有增益的流、多终端流、多商品流以及网络流的分解与合成等新课题.网络流的应用已遍及通讯、运输、电 力、工程规划、任务分派、设更新以及计算机辅助设计等众多领域.为了方便大家理解,例举了算法的例子来 阐述算法的一般流程.
第 1 页 共 11 页
安庆师范学院 2011 届数学与计算科学学院学生论文
2.1.1.类似的模型还有很多种如;输油管道. b 3 a=码头 5 d 2 2 e 2 c 4 4 z=炼油厂
自来水厂的输水问题.
w1
6 3
b 2 3
4 2 c 4
A
w2 w3
3 d
B来自百度文库
2.2.最大流量算法(Ford-Fulkerson Algorithm).也叫做贝尔曼-福特算法,被用于作为一 个距离向量路由协议例如 RIP, BGP, ISO IDRP, NOVELL IPX 的算法.路由器使用这个算法 必须维持距离表(其是一个一维数列-“一个向量”),它告诉距离和发送分组到在网络中的 每个节点的最短路径.在距离表中的这个信息是根据邻近节点信息的变化时时更新的.在表 中的数据的数量是和网络中所有节点的数量相等的(除了它自己本身).这个表的列代表直 接相连的邻节点而行代表所有在网络中的目的地.每个数据包括发送分组到网络中每个目 的地的路径和在那个路径输的距离/时间(我们叫做“成本”). 在这个算法中测量标准是跳变的数量、延迟时间、流出分组的数量等.
第 4 页 共 11 页
安庆师范学院 2011 届数学与计算科学学院学生论文
22. begin 23. predecessor(w):=v 24. val(w):=min{Δ,Cvw-Fvw} 25. U:=U∪{w} 26. end 27. for val(w)=null 的每条边(w,v)do 28. if Fvw>0 then 29. begin 30. predecessor(w):=v 31. val(w):=min{△,<Fvw} 32. U:=U∪{w} 33. end 34. End //求出从 a 到 z 的通路,修改其上的流量 35. w0:=z 36. k:=0 37. while w k a do bgin 38. w k 1: k:=k+1 predecessor (w k) 39. End 40. P : wk , wk 1,..., w1, w 0 41. △:=val(z) 42. for i=1 to k do 43. begin 44. e : w i , w i 1 45. if e 在 P 中一至定向 then 46. Fe:=Fe+△ 47. else 48. Fe:=Fe-△ 49. end 50. end end max-flow 2.3.研究网络上的一类最优化问题 . 1955 年 , T.E. 哈里斯在研究铁路最大通量时首先提出在一个给定的网络上寻求两点间最 大运输量的问题.1956 年,L.R. 福特和 D.R. 富尔克森等人给出了解决这类问题的算法,从 而建立了网络流理论.所谓网络或容量网络指的是一个连通的赋权有向图 D= (V、E、C) ,
第 5 页 共 11 页
安庆师范学院 2011 届数学与计算科学学院学生论文
其中 V 是该图的顶点集,E 是有向边(即弧)集,C 是弧上的容量.此外顶点集中包括一个起点 和一个终点.网络上的流就是由起点流向终点的可行流,这是定义在网络上的非负函数,它一 方面受到容量的限制,另一方面除去起点和终点以外,在所有中途点要求保持流入量和流出 量是平衡的.如果把下图看作一个公路网,顶点 v1…v6 表示 6 座城镇,每条边上的权数表示 两城镇间的公路长度.现在要问 :若从起点 v1 将物资运送到终点 v6 去 ,应选择那条路线才 能使总运输距离最短 这样一类问题称为最短路问题 . 如果把上图看作一个输油管道网 , v1 表示发送点,v6 表示接收点,其他点表示中转站 ,各边的权数表示该段管道的最大输送 量.现在要问怎样安排输油线路才能使从 v1 到 v6 的总运输量为最大.这样的问题称为最大流 问题. 最大流理论是由福特和富尔克森于 1956 年创立的 ,他们指出最大流的流值等于最小 割(截集)的容量这个重要的事实,并根据这一原理设计了用标号法求最大流的方法,后来又 有人加以改进,使得求解最大流的方法更加丰富和完善 .最大流问题的研究密切了图论和运 筹学,特别是与线性规划的联系,开辟了图论应用的新途径. 目前网络流的理论和应用在不 断发展,出现了具有增益的流、多终端流、多商品流以及网络流的分解与合成等新课题.网络 流的应用已遍及通讯、运输、电力、工程规划、任务分派、设更新以及计算机辅助设计等众 多领域. 现在想将一些物资从 S 运抵 T,必须经过一些中转站.连接中转站的是公路,每条公路都 有最大运载量.每条弧代表一条公路,弧上的数表示该公路的最大运载量.最多能将多少货物 从 S 运抵 T?这是一个典型的网络流模型.为了解答此题,我们先了解网络流的有关定义和概 念.若有向图 G=(V,E)满足下列条件: (1)、有且仅有一个顶点 S,它的入度为零,即 d-(S) = 0,这个顶点 S 便称为源点, 或称为发点. (2)、有且仅有一个顶点 T,它的出度为零,即 d+(T) = 0,这个顶点 T 便称为汇点, 或称为收点. (3)、每一条弧都有非负数,叫做该边的容量.边( vi , v j )的容量用 cij 表示.则称之为网 络流图,记为 G = (V, E, C)① 2.3.1.可行流 对于网络流图 G,每一条弧(i,j)都给定一个非负数 f ij ,这一组数满足下列三条件时称为 这网络的可行流,用 f 表示它. (1)、每一条弧(i,j)有 f ij ≤ cij . (2)、除源点 S 和汇点 T 以外的所有的点 vi ,恒有:该等式说明中间点 vi 的流量守 恒,输入与输出量相等. (3)、对于源点 S 和汇点 T 有②这里 V(f)表示该可行流 f 的流量. 2.3.2.可改进路 给定一个可行流 f=.若 f ij = cij ,称 vi , v j 为饱和弧;否则称 vi , v j 为非饱和弧. 若 f ij = 0,称 vi , v j 为零流弧;否则称 vi , v j 为非零流弧.定义一条道路 P,起点是 S、 终点是 T.把 P 上所有与 P 方向一致的弧定义为正向弧,正向弧的全体记为 P+;把 P 上所有与 P 方向相悖的弧定义为反向弧,反向弧的全体记为 P-. 给定一个可行流 f,P 是 从 S 到 T 的一条道路,如果满足:那么就称 P 是 f 的一条可改进路.(有些书上又称:可增广
第 2 页 共 11 页
安庆师范学院 2011 届数学与计算科学学院学生论文
vi 1 v1
a= v0 一致定向的 路径 P
vn =z vi 1 vi vn 1
非一致定向的
在某些含有一致定向边和非一至定向边的从源到汇的通路上也有可能是增加流量.设 P 是从 a 到 z 的一条通路,并设 X 是 P 中的一个顶点,它既不是 a,也不是 z. a a a a . ... ... ... ... c1 c1 c1 c1 x x x x c2 c2 c2 c2 ... ... ... ... z z z z (a) (b) (c) (d)
第 6 页 共 11 页
安庆师范学院 2011 届数学与计算科学学院学生论文
轨)之所以称作“可改进”,是因为可改进路上弧的流量通过一定的规则修改,可以令整个 流量放大. 2.3.3.割切 要解决网络最大流问题,必须先学习割切的概念和有关知识.G = (V, E, C)是已知的网 络流图,设 U 是 V 的一个子集,W = V\U,满足 S U,T W.即 U、W 把 V 分成两个不相交的集合, 且源点和汇点分属不同的集合.对于弧尾在 U, 弧头在 W 的弧所构成的集合称之为割切, 用 (U, W)表示.把割切(U,W)中所有弧的容量之和叫做此割切的容量,记为 C(U,W) 定理:对于已知的网络流图,设任意一可行流为 f,任意一割切为(U, W),必有:V(f) ≤ C(U, W).通俗简明的讲:“最大流小于等于最小割”.这是“流理论”里最基础最重要的 定理.整个“流”的理论系统都是在这个定理上建立起来的,必须特别重视.解决网络最大流 问题的算法很多, Dinic 是其中比较快的算法之一, 虽然传说中 ISAP 是最快的, 但是用 Dinic 求解 USACO 的 4.2.1 已经足够了 USACO 上提供的网编流算法思想是,找一个增广路径,然后 增广流量,直到没有增广路径为止.这是有两个问题:什么是增广路径?什么叫增广流量?增 广路径:就是从源点到终点的一条路径增广流量:首先找到增广路径上的最小流 x,然后对增 广路径上的每条边, 减去 x, 并反向增加 x 如: 源点 1, 终点 8.1->3 流为 20, 3->5 流为 10, 5->8 流为 30,则最小流为 10,1->3 变为 20-10,3->5 变为 10-10,5->8 变为 30-10,3->1 的流量 增加 10,5->3 的流量增加 10,8->5 的流量增加 10 算法流程为 maxflow = 0 while 有增广路径 maxflow += 最小流 沿增广路径 增广流量 增广流量很简单,就是简单地修改图的边的,因此,主要的问题就是如何找增广路径. 最简单的办法是直接 DFS,在 USACO 上可以过 6 个测试点,如果改用邻接表存储图的边,则可 以过 7 个测试点,如果在增广流量的时候把流量为 0 的路径从邻接表中去除,就可以过 8 个 测试点.要想过下面的 4 个测试点,就要优化了.瓶颈在 DFS 上,当然就要用 BFS 优化,但是 BFS 的空间复杂度太高,因此采用 BFS 和 DFS 结合的方法,先用 BFS 对每个点标号,然后根据 标号进行 DFS.如何标号:将源点 S 标为 0,S 的邻接点标为 1,S 的邻接点的未标号的邻接点 标为 2,...用 BFS 实现这个很简单如何根据标号进行 DFS:只有比该接点的标号多 1 的邻接 点,才递归 DFS,否则跳过. 附上程序: /*
2.最大流量及其算法
2.1.网络模型. 在图示的系统中, 我们希望得到从 a 到 z 的最大流量.边上标明容量, 在 a 或 z 之外的两个 顶点之间的流向能够任意定向. 将这个系统描述为网络模型. b 5 a 6 6 g 5 d 4 4 6 h 6 10 e 6 3 c 2 f 5 8 10 4 z
关键词
网络传输 光纤 网络流图
最大流量算法
1.网络传输
1.1. 网络传输的发展史 随着 1946 年世界上第一台电子计算机问世后的十多年时间内,由于价格很昂贵,电脑数 量极少.早期所谓的计算机网络主要是为了解决之一矛盾而产生的, 其形式是将一台计算机经 过通信线路与若干终端直接连接, 我们也可以把这种方式看做为最简单的局域网的雏形.计算 机网络的发展先后经历了远程终端连接.计算机网络阶段(局域网).计算机网络互联阶段(广 域网.Interent).信息高速公路(高速.多业务.大数据量)四个发展阶段.
关联 x 的变有上图的 4 中定向. 例:求网络的最大流量 这个算法求出一个网络的最大流量.每条边的容量是一个非负整数. 输入:一个网络,它具有源,汇,容量 C,顶点 a v 0 , , v n Z, 和 n
第 3 页 共 11 页
安庆师范学院 2011 届数学与计算科学学院学生论文
输出:最大流量 F Proceddure man_flow(a,z,C,v,n) //v 的标记是(predecessor(v),val(v)) //用 0 流量开始 1. for 每条边(i,j)do
Fij : 0 2.
3. while true do 4. begin //移去所有标记 5. for i:=0 ton do 6. begin 7. predecessor (v i) : null 8. val( vi ):=null 9. end // 标记 a 10. predecessor(a):=—— 11. val(a):=∞ //U 是未考查的有标记的顶点 12. U:={a} //继续,直到 z 被标记 13. while val(z)=null do 14. begin 15. if U =фthen//流量是最大的 16. return(F) 17. 在 U 中选择 v 18. U:=U-{v} 19. Δ:=val(v) 20. for val(w)=null 的每条边(v,w)do 21. if Fvw<Cvw then
相关文档
最新文档