算法分析与设计最大流问题.doc

算法分析与设计最大流问题.doc

ID:55951162

大小:118.70 KB

页数:19页

时间:2020-06-18

算法分析与设计最大流问题.doc_第1页
算法分析与设计最大流问题.doc_第2页
算法分析与设计最大流问题.doc_第3页
算法分析与设计最大流问题.doc_第4页
算法分析与设计最大流问题.doc_第5页
资源描述:

《算法分析与设计最大流问题.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、算法分析与设计题目:最大流算法院系:软件工程班级:软件11-2班姓名:慕永利学号:23号-19-目录1算法提出背景-3-2问题实例及解决-3-3算法论述-4-3.1、可行流-4-3.2最大流-5-3.3最大流算法-6-3.3.1增广路径-6-3.3.2沿增广路径增广-7-3.3.3样例:-8-3.3.4定理:-13-3.3.5算法的实现:-13-3.3.6优化-16-4算法应用-18--19-1算法提出背景一个通信网络,在理想条件下,将网络平面化,并假设网络中各节点及其之间的任意通信链路均无流量限制,在这种情况下,就无需使用最大流最小割算法,只需要寻找一条最短路由即可。但是在现实

2、生活中,我们不可能拥有这样理想的网络条件,作为正常的通信网络,不管是用户,还是基站,或者是他们之间的不管是无线或者有线信道,其容量都不可能是无限的。我们的任务是:在一定的限制条件下,对一个具有广泛意义的网络求解其最大流,并进行流量分配。以及如何对网络弧进行修改以达到网络最优化最大化。随着计算机网络业务的日益繁忙,通信流量激增而致使网络发生拥塞出现瓶颈部位,甚至造成网络停滞或瘫痪,所以对大型网络拓扑结构的优化设计是网络规划的首要任务。网络的优化通常采用扩充网络最大容量和网络增强性连接来优化网络设计。要解决网络拥塞的问题,首要找出网络流通中的阻塞部分即是网络流通图的最小割集,通过扩充

3、最小割集中饱和弧的容量来改善整个网络的流通能力。2问题实例及解决有一自来水管道输送系统,起点是S,目标是T,途中经过的管道都有一个最大的容量。-19-3算法论述3.1、可行流每条弧(u,v)上给定一个实数f(u,v),满足:有0<=f(u,-19-v)<=c(u,v),则f(u,v)称为弧(u,v)上的流量。如果有一组流量满足条件:源点s:流出量=整个网络的流量汇点t:流入量=整个网络的流量中间点:总流入量=总流出量那么整个网络中的流量成为一个可行流。区分:容量和流量3.2最大流在所有的可行流中,流量最大的一个流的流量如:图2中可行流7也是最大流。最大流可能不只一个。-19-3.

4、3最大流算法Ford-Fulkerson(福特-福克森)算法:步骤:(1)如果存在增广路径,就找出一条增广路径(2)然后沿该条增广路径进行更新流量(增加流量)3.3.1增广路径从s到t的一条简单路径,若边(u,v)的方向与该路径的方向一致,称(u,v)为正向边,方向不一致时称为逆向边。简单路:1à3à2à4à5中。(1,3)(2,4)(4,5)是正向边。(3,2)是逆向边。增广路径:若路径上所有的边满足:-19-  ①所有正向边有:f(u,v)0则称该路径为一条增广路径(可增加流量)两条增广路径:1à3à51à3à2à4à5增加流量

5、=?3.3.2沿增广路径增广1)先设d为为正无穷(可增加流,余流量)若(u,v)是正向边d=min(d,c(u,v)–f(u,v))若(u,v)是逆向边d=min(d,f(u,v))-19-2)对与该增广路径上的边若(u,v)是正向边,f(u,v)=f(u,v)+d;若(u,v)是逆向边,f(u,v)=f(u,v)–d;      增广后,总流量增加了d3.3.3样例:开始流量为:sum=0-19-一条增广路径:1à2à3à5,d=min{4,2,4}=2,增加流量:2Sum=2-19-一条增广路径:1à2à4à5,d=min{4-2,3,5}=2,增加流量:2Sum=2+2=4

6、-19-一条增广路径:1à3à2à4à5,d=min{6,2,3-2,5-2}=1增加流量:1,Sum=4+1=5-19-一条增广路径:1à3à5,d=min{6-1,4-2}=2增加流量:2Sum=5+2=7-19-3.3.4定理:可行流f为最大流,当且仅当不存在关于f的增广路径证:若f是最大流,但图中存在关于f的增广路径,则可以沿该增广路径增广,得到的是一个更大的流,与f是最大流矛盾。所以,最大流不存在增广路径。Ford-Fulkerson方法(增广流)求最大流(福特-福克森):步骤:(1)如果存在增广路径,就找出一条增广路径DFS,BFS(2)然后沿该条增广路径进行更新流量

7、增加流量)While有增广路径do更新该路径的流量迭代算法3.3.5算法的实现:c[u,v]:容量f[u,v]:流量B[i]:保存找到的增广路径,记录路径上结点i的前驱结点。Sum:最大流量。假定:1是源点S;n是汇点T。1):DFS找增广路径functionfindflow(k:integer):boolean;{找结点k的后继结点-19-i}vari:integer;beginifk=nthenexit(true);{找到了一条增广路径}fori:=1tondoif(b[i]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。