最 大 流 算 法
院系:年级:姓名:学号: 红河学院数学学院
2012级 陈松艳 201202991203
1、算法提出背景
一个通信网络,在理想条件下,将网络平面化,并假设网络中各节点及其之间的任意通信链路均无流量限制,在这种情况下,就无需使用最大流最小割算法,只需要寻找一条最短路由即可。
但是在现实生活中,我们不可能拥有这样理想的网络条件,作为正常的通信网络,不管是用户,还是基站,或者是他们之间的不管是无线或者有线信道,其容量都不可能是无限的。我们的任务是:在一定的限制条件下,对一个具有广泛意义的网络求解其最大流,并进行流量分配。以及如何对网络弧进行修改以达到网络最优化最大化。
随着计算机网络业务的日益繁忙,通信流量激增而致使网络发生拥塞出现瓶颈部位,甚至造成网络停滞或瘫痪,所以对大型网络拓扑结构的优化设计是网络规划的首要任务。网络的优化通常采用扩充网络最大容量和网络增强性连接来优化网络设计。要解决网络拥塞的问题,首要找出网络流通中的阻塞部分即是网络流通图的最小割集,通过扩充最小割集中饱和弧的容量来改善整个网络的流通能力。
2、问题实例及解决
有一自来水管道输送系统,起点是S,目标是T,途中经过的管道都有一个最大的容量。
3、算法论述
3.1、可行流
每条弧 ( u, v )上 给定一个实数f(u,v),满足:有 0 <= f ( u, v ) <= c( u,
v ),则f(u,v)称为弧( u, v )上的流量。
如果有一组流量满足条件:
源点s : 流出量 = 整个网络的流量 汇点t : 流入量 =整个网络的流量
中间点:总流入量 = 总流出量 那么整个网络中的流量成为一
个可行流。
区分:容量和流量
3.2 最大流
在所有的可行流中, 流量最大的一个流的流量 如: 图2中可行流7也是最大流。
最大流可能不只一个。
3.3最大流算法
Ford-Fulkerson 步骤:
(福特-福克森)算法: (1)如果存在增广路径,就找出一条增广路径
(2)然后沿该条增广路径进行更新流量 (增加流量) 3.3.1增广路径
从 s 到 t 的一条简单路径,若边 ( u, v ) 的方向与该路径的方向一致,称 ( u, v ) 为正向边,方向不一致时称为逆向边。
简单路:13 245中。
(1,3)(2,4)(4,5)是正向边。(3,2)是逆向边。 增广路径:
若路径上所有的边满足:
①所有正向边有:f ( u, v ) < c ( u, v) ②所有逆向边有:f ( u, v ) > 0
则称该路径为一条增广路径(可增加流量)
两条增广路径: 135
13 245 增加流量=?
3.3.2沿增广路径增广
1) 先设d为为正无穷(可增加流,余流量)
若( u, v ) 是正向边
d = min ( d, c ( u, v ) – f (u, v ) ) 若( u, v ) 是逆向边
d = min ( d, f ( u, v ) ) 2 ) 对与该增广路径上的边
若( u, v ) 是正向边,f ( u, v ) = f ( u, v ) + d; 若( u, v ) 是逆向边,f ( u, v ) = f ( u, v ) – d;
增广后,总流量增加了d
3.3.3样例:
开始流量为:sum=0
一条增广路径: 1235 ,d=min{4,2,4} =2 ,增加流量: 2 Sum=2
一条增广路径: 1245,d=min{4-2,3,5} =2 ,增加流量: 2 Sum=2+2=4
一条增广路径: 13 2 4 5,d=min{6,2,3-2,5-2} =1 增加流量: 1,Sum=4+1=5
一条增广路径: 13 5,d=min{6-1,4-2} =2 增加流量: 2 Sum=5+2=7
3.3.4定理:
可行流 f 为最大流,当且仅当不存在关于f 的增广路径
证:若 f 是最大流,但图中存在关于 f 的增广路径,则可以沿该增广
路径增广,得到的是一个更大的流,与f 是最大流矛盾。所以,最大流不存在增广路径。
Ford-Fulkerson方法(增广流)求最大流(福特-福克森): 步骤:
(1)如果存在增广路径,就找出一条增广路径 DFS,BFS (2)然后沿该条增广路径进行更新流量增加流量)
While 有增广路径 do 更新该路径的流量
迭代算法
相关推荐: