收藏 分享(赏)

网络流理论及其应用.doc

上传人:weiwoduzun 文档编号:4297935 上传时间:2018-12-21 格式:DOC 页数:22 大小:2.78MB
下载 相关 举报
网络流理论及其应用.doc_第1页
第1页 / 共22页
网络流理论及其应用.doc_第2页
第2页 / 共22页
网络流理论及其应用.doc_第3页
第3页 / 共22页
网络流理论及其应用.doc_第4页
第4页 / 共22页
网络流理论及其应用.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、网络流及其应用1网络流及其应用bernie中国科学技术大学网络流及其应用2摘要网络流理论最初由 Ford 和 Fulkerson 于 1956 年创立,包括理论与算法两部分。网络流理论的关键是在网络中引入了“流”的概念。在我们的日常生活中有大量的网络,如电网、水管网、交通运输网、通讯网等,这些网络中, “流”都是普遍存在的。近年来在解决网络方面的有关问题时,网络流理论发挥了重要作用。在网络流理论中,可行流是整个体系的关键。流及其相关概念都与图论有着密切关系,因此,为了更好地介绍网络流理论,本文首先将介绍图论的基本概念和网络的相关基础。在网络流理论中,最大流问题是其中的重要部分。在求解最大流问题

2、方面,利用可增路逐步增加流量是得到最大流的基本思路。标号算法、Dinic 算法都是在可增路的基础上对最大流问题进行求解的。这些算法都能独立解决最大流问题,需要根据实际情况进行选择。在实际网络中,网络的费用问题也需要考虑,为此,除了最大流之外,最小费用流也应该受到关注,本文将介绍最小费用问题的最小费用路算法。网络流理论不仅能用于物质流,也能用于现代通信领域。物质流与信息流在某些形式上是相同的,但是在存储和处理上也有一些特殊的性质。针对这些特殊性质,需要在信息流中加以区分和利用,充分利用信息流的特性,尽可能提高网络效率。网络流理论在计算机网络领域有着广泛的应用,本文将以延时容忍网络为例进行分析。延

3、时容忍网络的主要特点是端到端的路径不能得到保证,因此,在延时容忍网络中,节点需要采用先存储后转发的机制,这将可能导致同一数据会在网络中的多个节点中出现,造成信息冗余。本文将利用网络流理论对这样的信息冗余的必要性进行分析。本文的主要内容安排如下。首先介绍网络流理论的背景;随后,在第二章中介绍图论的基础知识和网络的基本概念;第三章将介绍网络的最大流与最小割;在第四章中,我们对网络流的扩展问题进行描述和介绍,包括最小费用流问题和信息流理论;最后,我们将介绍网络流在延时容忍网络中的应用。网络流及其应用3目录第 1 章 引言 1第 2 章 图论基础和网络基本概念 .12.1 图论基本概念 .12.2 网

4、络的基本概念 .32.3 网络的可行流 .42.4 最大流与最小割 5第 3 章 网络最大流问题求解 .53.1 可增路 .63.2 最大流问题的标号算法 73.3 最大流问题的 Dinic 算法 .9第 4 章 最大流问题的扩展 .134.1 最小费流 .134.2 信息流理论 .16第 5 章 应用举例 175.1 延时容忍网络介绍 .175.2 单份拷贝和多份拷贝方式选择问题分析 17网络流及其应用1第 1 章 引言在日常生活中,网络是一个非常常见的概念,例如电网、水管网、交通运输网、通讯网等。在这些网络中,会遇到各种各样的问题,如网络的容量和费用问题等。近年来,在解决网络方面的有关问题

5、时,网络流理论起到了越来越大的作用。我们可以用一个简单的实例来看网络流问题。假设有一个简单的交通网络,该网络只有一个入口和一个出口,其它道路均形成回路返回网络之中。网络中每条道路用它的车道数作为道路的权重,它们反映道路在单位时间内可能通过的最大车流量。我们把单位时间内能通过的车流量称为道路的容量。现在,一些车辆从入口进入网络,经由相同或不同的道路后从出口驶出,这就形成一个实际的流动,称为流。分析这种实际流动,有如下性质:(1 )实际流动是一个有向的流动;(2 )每条道路上单位时间内通过的流量不可能超过该道路的容量;(3 )每个内部节点处流入节点的流量等于流出节点的流量;(4 )流入入口的车流量

6、应等于流出出口的车流量,这一流量就是实际流动的车流量。当车流量进一步加大后,由于受道路宽度的限制,加到一定的流量后,再也加不进去了,这就是此交通网络能通过的最大流量。网络流理论正是从这些实际问题中提炼出来的。本文将从图论和网络流的基本概念开始介绍,着重对最大流问题进行分析,并利用网络流理论分析计算机网络特别是延时容忍网络中的流量问题。对于计算机网络来说,网络的容量是一个重要的指标,它给出了网络的最大承载能力。Shannon 信息论给出了信道容量的极限。但是,由于每条链路上的容量并不相同,对于网络中的流来说,仅仅知道链路容量并不能解决实际问题。为此,需要有效地利用链路容量,从而承载尽可能多地网络

7、流,这就是网络流理论需要解决的问题。对于计算机网络来说,仅仅考虑流量最大并不能完全符合实际情况,在某些场合,需要考虑链路的开销问题,这就是网络的费用问题,引入费用问题后,网络流的求解变得更为复杂,需要新的方法解决;另一方面,由于不同流中包含的消息可能会有冗余量,这些冗余的消息不能带来信息量的增加,因此,仅仅考虑流的大小也是不科学的,如何尽可能的传输更多有用信息才是网络最终所需要的。为了解决这些问题,我们将从网络流理论的基础知识开始介绍,通过最大流、最小费用流、信息流问题的分析,提炼出计算机网络最大化信息流的有用知识,并将这些知识用于延时容忍网络的流分析和转发策略选择中。第 2 章 图论基础和网

8、络基本概念2.1 图论基本概念1. 图论介绍图论是一门古老而又具有丰富生命力的学科,它是组合数学的分支,具有极其广泛的应用。图论来源于欧拉的工作,他成功的解决了著名的格尼斯堡七桥问题,从而奠定了图论的基础。基尔霍夫发展了树图理论,并且成功地将其应用到电网络中,这就是著名的基尔网络流及其应用2霍夫电压定律和电流定律。随着计算机技术和计算机网络的发展,图论也被越来越多地用于计算机网络领域。图论中的流理论的很多概念与计算机网络的重要元素能很好的对应,例如路、流等概念恰恰是计算机网络中最重要的因素,因此,流理论相关研究受到了很多计算机网络领域学者的关注。2. 图的基本概念一集元素以及他们之间的某种关系

9、称为图。图可以用一个二元组 G(V,E)表示,其中集合 V 称为顶点集,其元素就是图的顶点,集合 E 称为边集,它是顶点集 V 中元素组成的某些无序对的集合,边用 (i,j)或(j ,i)形式表示,其中,i, jV。特别的,如果边的两个端点是同一个顶点,则称这条边为环边。图的顶点又称为节点、点和连接点等;边又称为连线、线、支路、弧、链路等。通常,连接顶点 i 与顶点 j 的边用( i,j)表示,而顶点 i 和 j 称为边( i,j)的端点。如果图的边具有方向性,则这样的图称为有向图。在有向图中,(i,j )表示从顶点 i 指向顶点 j 的边。3. 图的图示通常,图的顶点可以用平面上的一个点来表

10、示,边可以用平面上的线段或曲线表示。图 2.1.1 是一个具有 4 个顶点和 5 条边的图。其中,顶点 v2 和 v4 是边 e3 的端点,而连接顶点 v2 和 v3 的边有两条,分别是 e4 和 e5,这两条边称为并行边(重边) 。v 1v 2v 3v 4e 1e 2e 3e 4e 5图 2.1.1 图的图示4. 一些术语在图论中,有一些专业术语,为了后续讨论方便,我们把后面章节中用到的术语做一个简单的介绍。点与边的关联:在图 G 中,如果点 v 是边 e 的一个端点,则称点 v 与边 e 关联。点与点的相邻:如果在图 G 中有一条边同时连接两点 u 和 v,则称点 u 和 v 在图 G 中

11、是相邻的。入邻点和出邻点:对于有向图,点与点的相邻分为出邻点和入邻点,如果有一条从 u指向 v 的边,则称 v 为 u 的出邻点,u 为 v 的入邻点。边与边的相邻:如果两条边有一个公共端点,则称这两条边在图 G 中相邻。简单图:既没有环边也没有重边的图称为简单图。完全图:任意两点之间都有一条边的简单图称为完全图。顶点 v 的度:图 G 中与顶点 v 关联的所有边的数目(环边计算两次)称为顶点 v 的度。在有向图中,需要区分指向顶点 v 的边和相反方向的边,指向顶点的边的数目称为顶点 v的入度,反之称为顶点 v 的出度。底图:如果把一个有向图的每一条有向边的方向都去掉,得到的无向图称为的原有向

12、图的底图。途径(walk ):图 G 中点边连续交替出现的序列称为 G 的一条途径。网络流及其应用3迹(trail):图 G 中边不重复出现的途径称为迹。实际上,格尼斯堡七桥问题就是求给定的图(七座桥可以看作七条边)的迹。路:图 G 中顶点不重复出现的迹称为路。将图论应用到计算机网络时,路是一个非常重要的概念,在计算机网络中,路对应于网络的一条路由。而求网络的路由是计算机网络的一个核心问题。因此,在后续讨论中,路的概念会反复出现。2.2 网络的基本概念实际应用中经常需要考虑网络和网络上的流,网络是一个很宽泛的概念,例如:油气管道、交通网、因特网等。这些网络往往具有方向性,并且网络的每条边上都有

13、传输能力的限制。定义:一个网络 N=(V,A)是指一个连通无环且满足下列条件的有向图:(1) 有一个顶点子集 X,其每个顶点的入度都是 0;(2) 有一个与 X 不相交的顶点子集 Y,其每个顶点的出度都为 0;(3) 每条弧都有一个非负的权值,称为弧的容量。上述网络 N 可以记作 N=(V,X,Y,A,C),其中,X 称为网络的源点集,Y 称为网络的汇点集,V 和 A 分别为顶点集和弧集,网络中的除源点和汇点之外的顶点称为中转点。源点和汇点在实际网络中对应于网络的入口和出口,或者说计算机网络的源节点和目的节点。C 为网络的容量函数,容量函数是定义在弧集 A 上的非负函数。在实际网络中,它对应于

14、相应路线上的通行能力,如公路的宽度、计算机网络的带宽等。x 136325 243v 1v 2y 1y 2x 2图 2.2.1 网络示例例如,在图 2.2.1 所示的网络中,x 1,x2是源点集,y 1,y2是汇点集。其他节点是中转节点,弧上的数字表示弧的容量。如果一个网络中的源点集和汇点集都只包含一个顶点,我们称该网络为单源单汇网络。事实上,对于任意网络 N=(V,X,Y,A,C),在经过一定的处理后,都可以转变为一个单源单汇网络。处理的方法为:(1) 给网络 N 添加两个新的顶点 s 和 t;(2) 对任意 xX,从 s 向 x 添加一条弧,其容量为(或 ) ;(),vNxc(3) 对任意

15、yY,从 y 向 t 添加一条弧,其容量为 (或 。()uy其中,N +(x)表示顶点 x 的出邻点集合u|(x ,u)A,N -(y)表示顶点 y 的入邻点集合u |(u,y) A。新添加的顶点 s 和 t 分别称为人工源和人工汇。简单的说,只需要在原有非单源单汇网络中添加一个新的源点和一个新的汇点,并且添加从新的源点指向原有源点的弧,再添加从原有汇点指向新的汇点的弧,就能得到一个单源单汇网络。网络流及其应用4对图 2.2.1 所示的网络添加人工源和人工汇后,将变为图 2.2.2 所示的单源单汇网络。x 1x 236325243v 1v 2y 1y 2st671 05图 2.2.2 单源单汇

16、网络单源单汇网络是一种特殊的网络,它在各种网络问题的求解方面比非单源单汇网络更为简单。由于任意网络都可以转化为单源单汇网络,后续章节中对网络流的讨论都可以只考虑单源单汇网络。在一些实际应用中,需要考虑弧和顶点都有容量限制的网络。例如,在某些网络中,需要考虑节点的缓存大小,此时节点的转发能力会受到限制。节点能力的限制并不能直接在图上体现出来,对于这样的情况,可以做一个转换,其方法为:将中转能力受限的节点分裂为两个节点,并且在这两个节点之间加入一条弧,这样就可以利用这条新加入的弧来表示节点的转发能力受限。经过转化为单源单汇网络并将节点能力的受限转化为弧的受限后,实际网络问题可以转化为图论中的网络问

17、题。2.3 网络的可行流在网络流理论中,各种流问题是其中的关键,包括最大流、最小费用流等。要研究网络流理论,首先需要明确什么是可行流。可行流的定义为:网络 N=(V,X,Y,A,C)中的一个可行流是指定义在 A 上的一个整值函数 f,使得:(1) 对任意 aA,0f(a)c( a),(容量约束) ;(2) 对任意 vV-(XY) ,f -(v)=f+(v), (流量守恒) 。其中,f -(v)表示点 v 处入弧上的流量之和,即流入 v 的流量之和,f +(v)表示点 v 处出弧上的流量之和,即从 v 流出的流量之和。也就是说,可行流满足两个条件:一是容量约束,即可行流在某一弧上的流量小于该弧的

18、容量;二是流量守恒,即流入某一中转点的流量等于流出该点的流量。需要强调的是,可行流总是存在的,如果 f(a)=0,这个流称为零值流。对于网络 N 中任意可行流 f 和任意顶点子集 S,从 S 中流出的流量记为 f+(S),它表示从 S 中顶点指向 S 外顶点的弧上的流量之和;流入 S 的流量记为 f-(S),表示从 S 外顶点指向 S 中顶点的弧上流量之和。对于可行流 f 来说,流量是一个重要指标,它的定义为:设 f 是网络 N=(V,X,Y,A,C)中的一个可行流,则必有 f+(X)=f-(Y)。f +(X)(或 f-(Y))称为流 f的流量,记为 Val f。流是网络中的重要概念,在实际网

19、络问题中,经常需要求解与流相关的问题,例如网络的最大流等。网络流及其应用52.4 最大流与最小割所谓最大流,是指网络 N 中流量最大的可行流。网络的最大流对于实际应用具有重要意义,例如,公路网络中获得最大的运输量、计算机网络中获得最大的转发增益等等。为了得到网络的最大流,L. R. Ford 和 D. R. Fulkerson 在 1956 年提出了著名的最大流最小割定理,巧妙地将流与割对应起来,将最大流问题转化为最小割问题。1. 割与割的容量定义:设 N=(V,x,y,A,C)是一个单源单汇网络。假设网络中的某些顶点组成集合S, SV, 。我们用( S, )表示尾在 S 中而头在 中的所有弧

20、的集合(即从 S 中的顶= 点指向 S 之外顶点的所有弧的集合) 。如果 xS,而 y ,则称弧集( S, )为网络 N 的一个 割。一个割( S, )的容量是指( S, )中各条弧的容量之和,记为 Cap(S, )。 例如,在图 2.2.2 中所示的单源单汇网络 N 中,令 S=s,x1,x2,v2,则割( S, )=x1v1, x2v1,v2y1,v2y2,割的容量 Cap(S, )=11。 对网络 N 中的任意流 f 和任意割( S, ),流 f 的流量等于流出 S 的流量与流入 S 的流量 之差,即 Val f= f+(S)-f-(S)。网络 N 可能存在多个割,各个割的容量并不一定相

21、等,其中容量最小的一个割称为网络 N 的最小割。即:如果网络 N 不存在割 K使得 Cap KA,则称此弧为 u-v 路 P的一条正向弧(或称前向弧、顺向弧) ,若弧A,则称此弧为 u-v 路 P 的一条反向弧(或称后向弧、逆向弧) 。将 u-v 路 P 所经过的弧(无论正向弧还是反向弧)称为路 P 上的弧。在图 3.1.1 中的网络 N 中,x-y 路 P=xv1v3v4y 上,所有弧都是正向弧;而在 x-y 路Q=xv2v4v3y 上,弧 和是正向弧,而和是反向弧。可以看出,对于同一条弧,在路 P 中为正向弧,而在路 Q 中为反向弧。可见,一条弧是正向弧还是反向弧与路的选择有关。xv 1v

22、 2v 3v 4y路 P图 3.1.1 正向弧与反向弧示例在计算机网络中,路由的选择与每条链路的容量相关,为了选择合适的路由,需要考虑包括正向弧和反向弧以及弧的容量。有了上面对路和正向弧反向弧的介绍,我们可以对可增路做明确的定义。假设 f 是网络 N=(V,X,Y,A,C)中的一个可行流, u 是 N 中任意一点,P 是网络 N 中的一条x-u 路,如果对路 P 上的任一条弧 a,都有:(1) 若弧 a 是 P 的正向弧,则 c(a)-f(a)0;(2) 若弧 a 是 P 的反向弧,则 f(a)0, 。则称 P 是 N 的一条 f 可增 x-u 路。特别的,N 中的一条 f 可增 x-y 路可

23、简称为 N 的一条f 可增路。对于 N 中任意一条 f 可增路 P 和 P 上任意一条弧 a,假设()=()(), 是 的正向弧(), 是 的反向弧 沿路 P 可增加的流量为 ,这一值称为 f 可增路 P 上流的增量(可()=()增量) 。网络流及其应用7xv 1v 2v 3v 4y1 ( 6 )2 ( 3 )5 ( 5 )0 ( 4 )图 3.1.2 网络的可增路在图 3.1.2 中,每条弧上括号内的数字为弧的容量,括号外的数字为当前流在弧上的流值。图中的虚线表示 x-y 路。由于 =6-1=5、 =2、 =5、 =4-(,2) (2,4) (4,3) (3,)0=4,可增量为 =5,2,5

24、,4=2。因此,路 P 是 N 中的 f 可增路,其可增量为 2。增流后()的网络如图 3.1.3 所示。xv 1v 2v 3v 4y3 ( 6 )0 ( 3 )3 ( 5 )2 ( 4 )图 3.1.3 增流后的网络可增量在求解网络的最大流问题时非常重要,求解网络最大流问题的几种常用算法都是基于可增量方法的。下面,我们介绍最大流问题求解的两种经典算法:标号算法和 Dinic 算法。3.2 最大流问题的标号算法在上一节中,我们介绍了可增路的概念,根据可增路的求解过程,可以使网络的流增大。因此我们可以利用可增路来求解网络的最大流。标号算法就是由可增路的概念得到的。其基本原理为:对于一个网络 N

25、中的一个可行流 f,如果能找到 N 中的一条 f 可增 x-y 路 P,则可沿着P 修改流的值,得到一个流量更大的可行流 f。修改后流的流量为 Val f=Val f+f(P)。如果反复找 N 中的可增路,沿着可增路将流量扩大,直到找不出可增路为止,就可以达到最大流。那么,怎样判断可行流 f 的可增路是否存在呢?或者说怎样找 f 的可增路?解决这一问题需要使用 Ford-Fulkerson 标号法,标号过程如下。设网络 N=(V,x,y,A,C)中当前可行流为 f。从源点 x 开始,首先给 x 标上 ,即 l(x)=(x网络流及其应用8称为已标未查顶点,其他顶点称为未标未查顶点) 。任选一已标

26、未查顶点 u,检查其所有尚未标号的邻点:(1 ) 对 u 的尚未标号的出邻点 v(即A) ,若 c(u,v)f(u,v),则给 v 标号:, (v 称为已标未查顶点) ;()=(),(,)(,)否则,不给 v 标号(2 ) 对 u 的尚未标号的入邻点 v(即A) ,若 f(u,v)0,则给 v 标号:, (v 称为已标未查顶点)()=(),(,)否则,不给 v 标号。当检查完 u 的所有邻点之后,u 称为已标已查顶点。反复进行上述操作,最终结果有两种情况:1) 汇点 y 获得标号,此时已经得到了 f 的可增流2) y 点没有获得标号,并且已经没有已标未查顶点。此时当前的流 f 就是最大流。v

27、1v 2v 3v 4y0 ( 7 )0 ( 9 )0 ( 2 )0 ( 5 )x( x , + , )0 ( 8 )( x , + , 8 )0 ( 5 )0 ( 6 )0 ( 1 0 )( x , + , 7 )( v 1 , + , 8 )( v 2 , + , 7 )( v 4 , + , 7 )0 ( 9 )(a) 初始状态零值流v 1v 2v 3v 4y7 ( 7 )7 ( 9 )0 ( 2 )0 ( 5 )x( x , + , )0 ( 8 )( x , + , 8 )0 ( 5 )0 ( 6 )7 ( 1 0 )( v 1 , + , 5 )( v 1 , + , 8 )( v

28、3 , + , 5 )0 ( 9 )(b) 第一次增流v 1v 2v 3v 4y7 ( 7 )7 ( 9 )0 ( 2 )5 ( 5 )x( x , + , )5 ( 8 )( x , + , 3 )0 ( 5 )0 ( 6 )7 ( 1 0 )( v 1 , + , 3 )( v 1 , + , 3 )( v 2 , + , 2 )( v 4 , + , 2 )5 ( 9 )(c) 第二次增流网络流及其应用9v 1v 2v 3v 4y7 ( 7 )9 ( 9 )0 ( 2 )5 ( 5 )x( x , + , )7 ( 8 )( x , + , 1 )2 ( 5 )0 ( 6 )9 ( 1

29、0 )( v 1 , + , 1 )( v 1 , + , 1 )5 ( 9 )(d) 第三次增流最大流图 3.1.1 标号算法示例图 3.1.1 演示了网络 N 从零值流开始,利用标号算法求最大流的过程。在每条弧上,括号外的数字表示当前流值,括号里的数字表示弧的容量。在每个顶点旁边有一组三元标号。在这个三元标号中,第一个元素表示该点的标号值是通过哪个点获得的,它用于反向追踪可增路;第二个元素的正或者负表示标号的前一个点是通过正向弧还是反向弧连接到当前点的,它用于标识在增流时应该在弧上增加流值还是减小流值;第三个元素为该顶点的标号数值,表示从源点 x 到该点通过当前找到的可增路可以增加的流值。

30、在图 3.1.1(a)中,网络中的流是零值流。标号结束后,汇点 y 获得的标号为( v4,+,7)。标号的第一项为当前点的前一个点,根据这一点我们可以反向追踪得到可增路 xv2v4y;标号的第三项表示可以增加的流值,也就是说可以增加 7 个单位的流量。据此,我们可以对网络进行增流,得到图 3.1.1(b)。在图 3.1.1(b)中,标号结束后 y 获得的标号为(v 3,+,5)。根据标号的第一项可以反向追踪得到可增路 xv1v3y,这条可增路能增加的流值为 5。增流后可以得到图 3.1.1(c)。同样,我们可以从图 3.1.1(c)再次增流,得到图 3.1.1(d),此时,已经没有已标未查点了

31、,而汇点 y还没有获得标号,因此,当前网络流已经是最大流了。在标号算法中,有可能出现每次只能增加一个单位流量的情况,这时,如果弧的容量为 m,需要 2m 次增流才能达到最大流。可见,标号算法的计算量不完全依赖于问题的规模(顶点数和弧数) ,还依赖于弧的容量。我们把计算量虽然是问题规模的多项式,但是还依赖于其他参量的算法称为伪多项式算法。Ford-Fulkerson 标号算法就是一种伪多项式算法。标号算法不是一个多项式算法,其复杂度还依赖于弧的容量,因此,我们需要复杂度更低的算法。Dinic 算法就是一种改进的算法。3.3 最大流问题的 Dinic 算法利用可增路可以求解最大流问题,但是直接用可

32、增路进行求解的话,在复杂度方面存在一定的缺陷。为此,Dinic 提出了一种对增量网络进行分层的思想。利用增量网络,可以得到网络的最大流。1. 增量网络对于网络 N=(V,x,y,A,C)和 N 上的一个可行流 f,构造一个新的网络 N(f)=(V,x,y,A(f),C),其中 A(f)及容量函数 C定义如下:(1) 若A 并且 f(u,v)A( f),并且 c(u,v)=c(u,v)-f(u,v);(2) 若A 并且 f(u,v)0,则 A(f),并且 c(u,v)=f(u,v)。这样构造的网络 N(f)称为网络 N 关于流 f 的增量网络。网络流及其应用10简单的说,对应于 N 中一条非饱和

33、流,N (f)中有一条正向弧,其容量值为 N 中弧的容量与流量之差;对应于 N 中一条非零流弧,N (f)中有一条反向弧,其容量值为 N 中弧的流量。图 3.2.1 显示了一个网络和它的增量网络。在 3.2.1(a)中的网络 N 中,有一条饱和弧,因此,在对应的增量网络 3.2.1(b)中,只有一条与之方向相反的弧与之对应;在网络 N 中,有 2 条零流弧和,因此在增量网络中也有与它们对应的弧和;而对于网络 N 中的非零流非饱和弧,增量网络中将有正反两条弧与之对应。增量网络 N(f)中每条弧的容量恰好是 N 中对应弧的流可增量。v 1v 2v 3v 4y1 ( 2 )1 ( 3 )0 ( 2

34、)2 ( 3 )x2 ( 2 )0 ( 1 )1 ( 3 )2 ( 3 )(a) 网络 N 及其可行流 fv 1v 2v 3v 4y1221x212112112(b) 增量网络 N(f)图 3.2.1 网络 N 与增量网络 N(f)在增量网络 N(f)中,我们把从 x 到 y 的有向路称为增量网络 N(f)的 x-y 有向路。N( f)的x-y 有向路是与网络 N 中的 x-y 路对应的,它是 N 的 f 可增路。因此,我们可以用在增量网络 N(f)中找 x-y 有向路的方法来寻找网络 N 的 f 可增路。这一转换关系正是 Dinic 算法的依据。为了更快地得到最大流,我们需要对增量网络进行分

35、层并且得到辅助网络。2. 网络顶点的分层和辅助网络在网络 N=(V,x,y,A,C)中,令:V i=vV|N 中 x 到 v 的最短有向路的长度为 i。假设 x 到y 的最短有向路的长度为 n,则:(1) xV, yVn;(2) Vi Vj= , (ji)。网络流及其应用11Vi 中的顶点称为网络 N 的第 i 层顶点。上述有向路的长度是指路上有向边的数目,而两点间最短有向路指两点间有向边最少的有向路。v 1v 2v 3v 4yx图 3.2.2 待分层的网络 N按照上述分层原则,我们可以对图 3.2.2 中的网络 N 进行分层。V0 = x, V1 = v1,v2, V2 = y,v3,v4分

36、层后的网络如图 3.2.3 所示。v 1v 2v 3v 4yx图 3.2.3 网络 N 的分层很容易看出,网络顶点分层后,弧有三种可能性:从第 i 层顶点指向第 i+1 层顶点;从第 i 层顶点指向第 i 层顶点;从第 i 层顶点指向第 j 层顶点( j(,)(,)也就是说,流 f 的费用是流的各段弧上的费用的总和。在网络中引入费用问题之后,最小费用流就是一个需要关注的问题。所谓最小费用流,是指对于网络 N=(V,x,y,A,C,w)和一个给定的数 v00,求 N 中流量为 v0 且费用最小的可行流。实际上,最小费用流的求解与前面介绍的最大流问题的求解有些类似,也采用流量逐渐增大的方式,只是增

37、流的原则由“最大流”变为最小费用。也就是说,可以从一个流量较小的最小费用流开始,逐步增大流量,使之达到给定的流量值,在增流的过程需要保证可行流的费用在等流量的可行流中是最小的。问题的关键在于,怎样保证增流后费用仍然最小。一个自然的想法就是沿着增量网络N(f)中的最小费用 x-y 有向路来增流,这就是下面我们介绍一种典型的算法最小费用路算法。最小费用路算法的基本思想是:先从流量较小最小费用流(比如零值流)开始,构造增量网络 N(f),求 N(f)的最小费用路 P,然后沿着 P 对 f 增流。反复进行这样的操作就可以得到流量为 v0 的最小费用流。增流时,要防止流量超过给定的流量值 v0。为了说明

38、算法的执行过程,我们以图 4.1.1 中的网络为例来进行增流。图中弧上括号内的两个数字分别为弧的容量和费用。假设我们要求这个网络中流量为 3 的最小费用流。v 1v 2v 3v 4y( 2 , 3 )( 3 , 2 )( 2 , 1 )( 2 , 1 )x( 2 , 2 )( 1 , 2 )( 1 , 2 )( 3 , 2 )( 3 , 4 )图 4.1.1 网络 N 及弧的容量和费用首先,我们从零值流 f0 开始,构造出增量网络 N(f0),对零值流来说,增量网络仍然为网络 N 本身。从网络 N 中找出一条最小费用有向路,如图 4.1.2 所示。需要说明的是,找出最小费用有向路可以采用最小路

39、算法。网络流及其应用15v 1v 2v 3v 4y( 2 , 3 )( 3 , 2 )( 2 , 1 )( 2 , 1 )x( 2 , 2 )( 1 , 2 )( 1 , 2 )( 3 , 2 )( 3 , 4 )4.1.2 找出 N(f0)的一条最小费用有向路然后,按照图 4.1.2 中的最小费用路增流,得到新的流,如图 4.1.3 所示。图中,弧上括号外的数字为流量值。v 1v 2v 3v 4y2 , ( 2 , 3 )0 , ( 3 , 2 )2 , ( 2 , 1 )2 , ( 2 , 1 )x0 , ( 2 , 2 )0 , ( 1 , 2 )0 , ( 1 , 2 )0 , ( 3

40、 , 2 )0 , ( 3 , 4 )图 4.1.3 增流后的网络紧接着,需要对增流后的网络构造流 f1 的增量网络 N(f1),并求出一条最小费用路。如图 4.1.4 所示。v 1v 2v 3v 4y( 2 , - 3 )( 3 , 2 )( 2 , - 1 )( 2 , - 1 )x( 2 , 2 )( 1 , 2 )( 1 , 2 )( 3 , 2 )( 3 , 4 )图 4.1.4 增量网络 N(f1)及一条最小费用路增流后,流量为 3,已经满足要求,算法结束。因此,最终的最小费用流如图 4.1.5 所示。v 1v 2v 3v 4y2 , ( 2 , 3 )1 , ( 3 , 2 )2

41、 , ( 2 , 1 )2 , ( 2 , 1 )x1 , ( 2 , 2 )1 , ( 1 , 2 )0 , ( 1 , 2 )1 , ( 3 , 2 )0 , ( 3 , 4 )网络流及其应用164.1.5 流量为 3 的最小费用流我们来看看算法的复杂度。在算法计算过程中,每次增流至少 1 个单位,因此,最多经过 v0 次就可以找到最小费用路。找到最小费用路后,要么判定网络 N 中没有流量为 v0 的可行流,要么获得符合要求的最小费用流。而每次求最小费用有向路可以采用最短路算法,计算量不超过 O(v3),因此,最终的算法复杂度为 O(v0v3)。在上述求解的过程中,给定了流量的限制。如果不

42、对流量进行限制,会一直求解,直至得到最大流,此时得到的流称为最小费用最大流。4.2 信息流理论我们在前面讨论的是通用的网络最大流理论,它适用于多种形态的网络。对常用的物质流和现代通信中的信息流,他们在某些形式上是相同的,都需要遵循一定的规则,但是,在某些方面又有些不同,信息流本身具有一些特殊性质。在处理通信网络问题时,需要考虑信息流的这些特殊性质主要是信息的存储和处理方面。我们以计算机网络为例说明信息流与物质流的区别。在计算机网络中,中转节点(路由器)具有转发数据的能力,在转发数据时,他可以对数据进行一些操作,例如复制、编码等。也就是说,一份数据经过某个中转节点后,可能变成了两份数据,或者两份

43、数据经过中转节点后可能变成一份数据。而在物质流中,这样的情况是不存在的。显然,在信息流中仅仅考虑数据的数量已经不能完全衡量信息的多少。为此,需要考虑信息量有多少,这就是信息流的特点。数据的复制虽然不能带来信息量的增加,但是在流媒体中,可以利用这一点减少数据的传递,这就是多播技术。例如,在一个非单源单汇网络中,源点 S 需要发送同样的数据给汇点 A 和 B,他们通过中转点 C 转发,此时,如果不考虑信息流的特点,直接转发,则在(S,C)弧上需要将同样的数据传递两次,而如果将数据在节点 C 上进行一次复制,便可以减少(S,C)弧上的传递量。如图 4.2.1 所示。SABCSABC单播方式多播方式复

44、制图 4.2.1 多播示例在数据的编码方面,最为典型的是网络编码技术,如图 4.2.2 所示,在无线自组织网络中,节点 A 需要向节点 C 传递数据,同时,节点 C 也要向节点 A 传递数据,在传统方式下,两次传递分别进行,一种需要进行 4 次传递。如果采用网络编码技术,在 C 点对两份数据进行异或操作,然后利用无线信道的天然广播特性将数据同时发送到 A 和 B,A 和 B 接收到数据后,再次进行异或操作就能得到所需的数据。这项,在 3 次传递后就将数据传递到目的节点。A BC普通方式 网络编码方式A BC图 4.2.2 网络编码示例网络流及其应用17由上面的两个例子可以看出,信息的复制和编码

45、虽然不能增加原有信息的信息量,但是,在特定场合下能起到较大的作用,如减少传输次数、提高传输成功率等。但是,复制和编码也会占用网络资源,如何选择恰当的时机进行复制和编码是我们需要解决的问题。在下一章中,我们将以延时容忍网络为例,对复制的时机进行举例说明和分析。第 5 章 应用举例前面对网络信息流理论进行了较为详细的介绍和分析,本章将利用网络流理论对延时容忍网络(DTN )的容量进行分析。5.1 延时容忍网络介绍在计算机网络中,传统的网络如以太网、无线自组织网等都有一个基本假设,那就是存在一条端到端的路径。在这一假设下,可以先寻找一条路由,再按照路由进行转发。但是,在挑战性网络环境下,端到端的路径

46、并不一定存在,此时,需要一定的策略来保证转发成功率,其中的一种策略就是消息的泛洪。泛洪机制的基本原理是,节点为了确保数据能到达目的节点,每当该节点与其他节点相遇,都会将数据转发给对方,这样的方式能提高转发成功的概率,但却会加重网络负担。按概率转发的方式是对泛洪机制的改进,在节点与其他节点相遇时,先判断对方节点是否比自己更容易将数据转发到目的节点,再按概率进行转发,这样可以减小网络负担。在泛洪机制或者按概率转发的方式下,节点会将数据发送多次,使得网络中存在该数据的多份拷贝,这一转发方式我们称之为多份拷贝(Multiple Copy)的方式。与之对应的是单份拷贝(Single Copy)方式,即网

47、络中只存在一个数据包的一份拷贝。显然,如果只考虑单个数据包,多份拷贝方式下转发成功率会更高。但是多份拷贝方式的代价是会使网络中充斥着多份相同的数据,随着各节点需要发送的数据包增加,转发成功率会明显下降。对比两种转发策略可以发现,单份拷贝方式所发送的报文数量较少,但是报文到达率低;而多份拷贝方式具有更高的成功率,但是需要传递的报文数量更多,并且对缓存的要求也更大。在缓存资源有限的情况下,随着数据量的上升,多份拷贝方式的性能下降较为明显。因此,在可以使用单份拷贝方式达到给定要求的时候,应该尽量选用单份拷贝方式。5.2 单份拷贝和多份拷贝方式选择问题分析对于 DTN 网络来说,链路容量可以认为是一个

48、固定的量,不会因为选择单份拷贝或者多份拷贝策略而改变,因此,我们可以采用网络流的方法对网络的流量进行分析,得到一个最适合的转发策略。在 DTN 网络性能方面,主要需要考虑转发成功率和延时。在满足转发成功率和延时要求的前提下,我们应尽量传递更多信息,也就是说,需要使信息流最大。对转发成功率和延时条件的要求我们可以合并为一个条件:在所允许的延时时间内,转发成功率大于给定值。我们可以看一个简单的例子。如图 5.2.1 所示,网络中有 4 个节点,节点 S 和节点 D固定,节点 A 和 B 以一定的规律运动,他们与节点 S 和节点 D 在给定的时间内相遇的概率网络流及其应用18各为 0.5(由于对延时

49、有一定限制,超过这一时间后数据将被丢弃,因此后面再遇到目的节点也无法转发成功) ,每次相遇只能转发一份数据。由于 A 和 B 与 S、D 是以一定概率相遇的,我们在图中用虚线表示这两个节点。在这样的网络中,如果节点 S 需要发送一些数据给节点 D,应该采用何种策略?是转发一次之后就删除本节点的缓存,还是转发成功后继续尝试?S DBA图 5.2.1 网络分布示意图由于转发成功率对一条路的各条弧来说是具有相乘关系的,如果对转发成功率取对数,就能得到一个相加的量,这与费用函数的定义是一致的。同时,我们所需的是使成功率最大,如果在取对数之后再加上负号,就能对应为使费用函数了。即:设 p 为弧上的转发成功率,费用函数的定义为 w=-log2p。在进行这样的转换后,可以变为求最小

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 网络与通信

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报