第5章 通信网中的流量优化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(三)、算法复杂度
在一次迭代中,标记过程需比较: (n−1)+(n−2)+…+1=0.5n(n −1)次; 在增广过程的第2步需进行加法/减法运算为:≤(n-1)次; 若网络可增的最大流量为fst,则算法复杂度为O(fst•n2)。
M算法推广
1. 无向网和混合网中的最大流 无向网和混合网中的最大流 在无向图或混合网G‘中,无向边(x, y)可理解为:C(x, y)=c(y, x);c(x, y)≥f(x, y), c(x, y)≥f(y, x)且 f(x, y)•f(y, x)=0。 求无向网或混合网G’中最大流的一般过程为: 1).先将混合网G’(V, E’, c’, f)中的每条无向边变换成一 对有向边(x, y)和(y, x);且c(x, y)= c(y, x)=c’(x, y)。
5.1 流量优化的一般性问题
用有向图 G (V , E ) 表示通信网。其中端集: V {v1 , v2 ,, vn } 。对于各边,设为有向边,其中e 表示从 Vi到Vj的边。每条边能够通过的最大流量称为边的容量, 以Cij表示;而这条边上实际的流量记为fij。一组流量的安 排{fij}称为网内的一个流。 若这个流使得从源端到宿端有总流量F,则,fij必须满足以 下条件: (1)非负性和有限性
= aij f ij
eij E
最小。
更复杂的问题是: 流量fij可以调整;容量Cij可选择,但边有容量的限制;各 端有转接容量的限制;源端和宿端可能有多个;各边中单 位容量的费用βij;各端中转接容量的费用βii;
则转接容量 Cij= f ji ; j 目标函数即总费用: =
C
例:图5-6负价环求最佳流的N算法。
V1 3,2 V2
7,2 Vs
6
5,6 V3 3,1 7,4 Vt
V1
1
V2
Vs 5
1 6 V3 (b)fij 可行流 Vt
(a)Cij ,aij容量和费用
6,-2 V1 Vs 1,2 5,-6 V3
1,-2 V2 2,2 2,1 1,-1 1,4 Vt 6,-4
e ji E}
具有m条边、n个端的图共有2m+n-1个限制条件,其 中包括:m个非负性条件,因为m条边的非负性;m个有 限性条件,因为m条边的有限性;n-1个连续性条件,因 为对应于n个端的n个等式,有一个不是独立的,故只有n -1个端的连续性。则满足(1)和(2)条件的称为可行 流。
不同的流量分配可得不同的可行流。一般有两种优化可行 流的问题: (1)最大流问题:研究变更可行流中各fij值,使得总流量 最大。 (2)最佳流问题(即最小费用流):由于各条边的参数 中,有容量Cij的规定,费用aij的差别,即单位流量所需的 费用。调整fij使得总费用:
求节点-弧限容量的一般过程: 1.在节点-弧限容量网G(V,E,c,f)中的每一节点i,对应仅有 弧限的容量网G’(V’,E’,c’,f’)中的两点i’,i’’, 其中i’,i’’∈V’; 2.G网中的弧(i,j)∈E,则对应G’中的弧(i’, j’’)∈E’;同时, G’网中弧容量为:C’(i’, j’’)=C(i,j); C(i’’,i’)=h(i), i∈V; 3.对弧限网G’,用前面介绍的福特-福克森算法求G’网中 s’’到t’的最大流fmax,这即是网G的最大流。
(b).对所有(y,x)∈E的未标记节点y,若f(y,x)>0,则对节点 y标记(−, x, w(y)),其中w(y) = min[w(x), f(y, x)];在x 的标记 + 或 - 上加上圆圈,x就成为已检查的标记节点。 第3步:A.若节点t被标记,则转至算法的增广过程; B.若节点t虽然未被标记,但标记过程不能继续下去,就结 束算法;否则,就返回标记过程的第2步。 2.增广过程 第1步:设节点Z = t,转至下面的第2步; (逆向增广) 第2步:若Z的标记(+, q, w(z)),或(⊕, q, w(z)),将流f(q, z)变成f(q, z)+ w(z);若Z标记(−, q, w(z)),或(Θ, q, w(z)), 将流f(z,q)变成 f(z,q) −w(z); 第3步:若 q = s,取消网G中所有节点的标记,并转至算 法标记过程第1步,进行下一次迭代过程;若 q ≠ s,设q = Z,返回增广过程第2步。
3. 多源多宿最大流问题 将Vs与网络内所有源端用容量为∞的有向边相连接;z将Vt 与网络内所有宿端用容量为∞的有向边相连接;上2步将多 源多宿问题转变为单源单宿问题;如何使用介绍的M算法, 求Vs到Vt的最大流量方法也就解决了多源多宿总流量最大 的问题。
5.3 最佳流问题
给定网络的结构:G=(V,E);边容量Cij;eij为流量, 其边费用aij;总流量要求Fst,计算总的 Φ=Σaijcij最小。 最佳流的算法,一般使用负价环算法(N算法): 如果网络的源宿端之间有两条以上的径,则源宿之间的可 行流在保持总量不变的情况下,总有改变流量分配的可能 性,即按照不同的路径分配流量。由于各路径的可行流不 同,将使得总经费(或其它参数)最佳。
6 Vs
V1
3
V2
3 3 6 V3 (d)降低费用后的可行流 Vt
(c)补图和负价环
补图:调整网络中路径的可行流,使得网络的运行状况改 变。此图对于原图,称为补图。 负价环:补图上如果存在一个有向环,环上各边的aij之和 是负数,则称此环为负价环。 负价环的特性:若网络沿负价环方向增流,并不破坏环上 诸端的流量连续性,也不破坏各边的非负性和有限性。结 果得到一个Fst不变的可行流,其总费用将有所降低。 由此可见,降低任一可行流的总费用,可归结为在该流的 补图上寻找负价环。当一个可行流的补图上不存在负价环 时,此流就是最佳流或者是最小费用流。 若在补图上存在零价环(补图各边之和为0),则在环上 增流可得到总费用相同的另外一组可行流。 最佳流可以有几种,但是总费用是一样的。
由于和流量必不大于容量,得
f ( X , X ) c( X , X )
再由流量的非负性和,得(2)
F c( X , X )
饱和边: fij=Cij的前向边称为饱和边; fij<Cij的前向边称 为非饱和边;反向边则分为零流量和非零流量: 可增流路:从Vs→Vt的一条路径P中,如果所有的前向边 都未饱和,所有的反向边都是非零流量,则此条路径称为 可增流路。 可增流路的性质: 在可增流路上,所有正向边的流量均可增加不致破坏流量 的有限性;所有反向边上均可减流不致破坏非负性;可减 流路上的减流相当于正向边上增流; 含有多条边的可增流链路上的增流(包含反向边上减流) 的最小值,应当是:
对所有X中的 vi 求和,可得
vi X v j V
f
ji
vi X v j V
f
ij
F
求和时一项为正,一项为负而抵消,所以可得
vi X v j X
f ji
vi X v j X
f ij F
根据定义可得 (1),如下
f ( X , X ) f ( X , X ) F
第5章 通信网中的流量优化
引言
网的作用主要是将业务流从源端送到宿端。为了充分 利用网资源,包括线路、转接设备等,总希望合理的分配 流量,以使从源到宿的流量尽可能大,传输代价尽可能小 等。流量分配的好坏将直接关系到网的使用效率和相应的 经济效益,是网运行的重要指标之一。 网内流量的分配并不是任意的,它受限于网的拓扑结 构、边和端的容量,所以流量分配实际上是在某些限制条 件下的优化问题。
vi X ,v j X
源宿端的总流量F符合两个关系:
(1) (2)
F f ( X , X ) f ( X , X ) F c( X , X )
vi
证明:由连续性公式,对于
X ,有
v j V
f
ij
v j V
F f ji 0
vi =vs vi vs
2).为了保证混合网G’(V, E’, c’, f)的无向边的流量只在 一个方向上流动,即在有向网G(V, E, c, f)中,满足: max[f(x, y),f(y, x)]= f’(x, y),且f(x, y)•f(y, x) = 0; 3).应用前面介绍的求最大流方法,求有向网G的最大 流fmax。 4). 应用公式f’(x, y) = max[0, |f(x, y)-f(y, x)|],构造原网 G’可行流型。 2. 节点—弧限容量网的流 求节点-弧限容量网最大流方法:把节点弧容量网G转化为 弧限容量网G’,在G’中求出最大流,即是G网的最大流。 对每个节点和弧有: 可行流存在的条件; h i f i, v , i t , i, v E; h t f t, v , t, v E
1. 未标记节点:所有未赋标记的节点; 2. 未检查的标记节点:如果节点 x 已有标记,但其邻接节 点y 没有完全标记,则x称为未检验的标记节点; 3.已检查的标记节点:若节点 x 已标记, x 所有邻接的节 点都 已标记,则x 称为已检验的标记节点;
标记:(+,x,w)或(−,x,w)表示,其中x∈V,w是标记 值。 M算法中图G的节点标记有三种情况: (1). 未标记节点:所有未赋标记的节点; (2). 未检查的标记节点:如果节点 x 已有标记,但其邻 接节点y没有完全标记,则x称为未检验的标记节点; (3).已检查的标记节点:若节点 x 已标记 x 所有邻接 的节点都已标记,则x 称为已检验的标记节点; 1.标记过程 第1步:对源节点S标记(+, s, ∞); 第2步:任选一个未检查的标记节点x,对与x邻接未标记 节点y: (a).对所有(x, y)∈E的未标记节点y,若f(x, y)<C(x, y),则 对节点y标记(+, x, w(y)),其中w(y) = min[w(x), c(x, y) − f(x, y)] 。
算法步骤 M0:初始,令fij=0,标出其相邻端的流量、方向;选择任一链路; M1: 标源端为(+,s,∞); M2:查已标、未查端Vi,标出其所有的邻端.
方法:若eij在已标域E,且cij> fij,即可增流,则标(+,i,ei),表示i -j有边,可增流ei 其中ej=min(Cij-fij,ei);
min(min(cij fij ), min f ji )
eij P e ji P
此处eij代表链路中的正向边,eji代表反向边。可增流路在 增流以后(反向边上减流),可得一新的可行流并使源宿 端间的流量增加。
如果可行流{fij}已经使得源宿端间的流量得到最大值, 则从Vs-Vt的每一条路上,至少有一个饱和的前向边,或 一个零流的反向边,也就是不存在一条可增流(可减流) 的路。 最大流量-最小割量定理:当源宿间的流量达到最大,每 个割集( X , X )中的前向流量 f ( X , X )都等于最大流量Fmax, 并且总存在这样一个割集,其每条正向边都是饱和的,其 割量在各个割集中达到最小值,并且也等于Fmax,也可以 看出,这个最小割量的割集影响到这个网络的最大流量。 最大流量的标志算法称M算法 基本思想:寻找源—宿端流可增广路径,使网络流的流量 得到增加,直到最大流为止。算法分2个过程:1是标记过 程,通过标记过程找到一条可增广路径;2是增广过程, 即沿增广路径增加网络流量的过程。
ij
0 fij cij
(2)连续性
i j
其中,
v j ( vi )
fij
v j 、 vi ) (
j i
F 若vi为源端vs fij F 若vi为源端vd 0 其它
( vi )={v j : ij
( vi )={v j :
、
e E}
ij i, j
ij
。
5.2 最大流量问题
有向图G =(V,E),设X是端集V的一个真子集,并且 源端Vs∈X,宿端Vt∈G-X;(X, X )表示X和 X 的界上的边集,这个边集是把Vs和Vt分开的一个割集(最 小割边集)。取Vs-Vt的方向为割集的方向。与割集方向 一致的边,称为前向边;与割集方向相反的边,称为反向 边;显然,前向边的集合可以割断Vs-Vt的通路。定义割 集中前向边容量之和为其割容量,或简称割量。记 为 c( X , X ) cij ;