一.网络与流
1.基本概念与术语
(1)网络:G是一个简单有向图, 。满足三个条件:
1)有一个源点S(入度为0:发点)
2)有一个汇点T(出度为0:收点)
3)每条边(?,?)都有一个非负容量cap(?,?)≥0
满足上述条件的图G称为网络流图。
(2)网络流:定义在边集E上的一个非负函数
(3)可行流:
1)对每条边
2)对中间点:总流入量=总流出量
3)对源点S:流出量=整个网络的流量
对汇点T:流入量=整个网络的流量
(4)边流
(5)最大流
最大流问题即求网络G中的一个可行流,使其流量?达到最大
即????满足
且
一个最大流
二.增广路算法
1.基本思想
从s到t的一条简单路径,若边的方向与该路径的方向一致,称为正向边,方向一不致时称为逆向边。
简单路:13245 ,(是正向边。是逆向边。
可增广路:
1.所有正向边有:
2.所有反向边有:
可增广路是残流网路中一条容量大于0的路
设????是网络G中的一个可行流,如果不存从到关于的可增广路,则是网络G的一个最大流。
2.算法步骤
1)使不属于可增广路的边上的流量保持不变。
2)可增广路上的所有边上的流量按下述规则变化:
在正向边上,
在逆向边上,
例子:
step1.开始时流量为:
找到一条增广路为(上图红色路径):1235
增加流量:
step2.增广一次后流量为:
找到 一条增广路为(上图红色路径): 1245
增加流量:
step3.增广两次后流量为:
找到一条增广路 为13245
增加流量:
step4.增广三次后流量为:
找到一条增广路为:135
增加流量:
最后,得到最大流为:
算法的计算得杂性
增广路算法的效率由两个因素确定:
(1)整个算法找可增广路的次数
(2)每次找可增广路所需的时间
给定网络中有n个顶点和m条边,每条边的容量不超过M。易证明,增广路算法中找可增广路的次数不超过nM次。
对于最短增广路算法,最坏情况下计算时间为、。
对于最大容量增广路算法,最坏情况下找可增广路次数不超过。
次,找一次需时间,那么总计算时间为、