收藏 分享(赏)

第七章 图与网络分析.doc

上传人:dzzj200808 文档编号:2300519 上传时间:2018-09-10 格式:DOC 页数:28 大小:975.50KB
下载 相关 举报
第七章  图与网络分析.doc_第1页
第1页 / 共28页
第七章  图与网络分析.doc_第2页
第2页 / 共28页
第七章  图与网络分析.doc_第3页
第3页 / 共28页
第七章  图与网络分析.doc_第4页
第4页 / 共28页
第七章  图与网络分析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、第七章 图与网络分析图与网络分析(Graph Theory and Network Analysis) ,是近几十年来运筹学领域中发展迅速、而且十分灵活的一个分支。由于它对实际问题的描述,具有直观性,故广泛应用与物理学、化学、信息论、控制论、计算机科学、社会科学、以及现代经济管理科学等许多科学领域。图与网络分析的内容十分丰富。本章只介绍图与网络的基本概念以及图论在路径问题、网络流问题等领域中应用。重点讲明方法的物理概念、基本概念及计算步骤。1 图与网络的基本概念 定义 1 图是由表示具体事物的点(顶点)的集合 V=v 1,v2,,v n和表示事物之间关系边的集合 E=e 1,e2,,e m所组

2、成,且 E 中元素 ei 是由 V 中的无序元素对v i,vj表示,即 ei=vi,vj,记为 G=(V ,E) ,并称这类图为 无向图。例如,图 7-1 中,有条边,个顶点,即 V=v 1,v2,v6;E=e 1,e2,e8其中e1 = v1 , v2 = v2 , v1;e7 = v2 , v5 = v5 , v2;e2 = v2 , v3 = v3 , v2;e6 = v4, v5 = v5 , v4.定义 ()顶点数和边数:图 G(,) 中,中元素的个数称为图的顶点数,记作 p(G)或简记为 p;中元素的个数称做图的边数,记为 q(G),或简记 q。()端点和关联边:若 ei=vi,v

3、j,则称点 vi,vj 是边 ei 的端点,边 ei 是点 vi 和 vj的关联边。()相邻点和相邻边:同一条边的两个端点称为相邻点,简称邻点;有公共端点的两条边称为相邻边,简称邻边。()多重边与环:具有相同端点的边称为多重边或平行边;两个端点落在一个顶点的边称为环。()多重图和简单图:含有多重边的图称为多重图;无环也无多重边的图称为简单图。()次:以 vi 为端点的边的条数称为点 vi 的次,记作 d(vi)。()悬挂点和悬挂边:次为的点称为悬挂点:与悬挂点相联的边称为悬挂边。()孤立点:次为零的点称为孤立点。()奇点与偶点:次为奇数的点称为奇点;次为偶数的点称为偶点。例如,图 7-1 中,

4、p(G)=8,q(G)=6;e 3=v4,v3,v 4 与 v3 是 e3 的端点, e3 是 v4 和 v3 的关联边;v2 与 v5 是邻点,e 3 与 e2 是邻边;e 7 与 e8 是多重边,e 4 是一个环;图.是一个多重图;v1 是悬挂点,e 是悬挂边;v 是孤立点;v 是奇点,v 是偶点。定理 图(,)中,所有点的次之和是边数的两倍。即。定理是显然的,因为在计算各点的次时,每条边都计算两次,于是图中全部顶点的次之和就是边数的倍。定理 任一图(,)种,奇点的个数为偶数。证 设 , 分别是中奇点和偶点的集合,由定理可知(7.)因为 是偶数,而 也是偶数,故 也必是偶数,由于偶数个奇数

5、才能导致偶数,所以有奇点的个数必须为偶数。定义()链在一个图(,)中,一个由点与边构成的交错序列(v i1,ei1, vi2,ei2,,v ik-1,eik-1,vik)如果满足 ei t= eit, ei t+1 (t=1,2,k-1), 则称此序列为一条联结 vil, eik,的链,记为 = (v i1,vi2,,v ik),则称点 vi ,vi3, vik-1 为链的中间点。()闭链与开链:若链 中 vi1v ik 即始点与终点重合,则称此链为闭链(圈) 。否则称之为开链。()简单链与初等链:若链 中,若含的边数均不相同,则称之为简单链;若链 中,顶点 vi1,vi2,,v ik 都不相

6、同,则称此链为初等链。除非特别交代,以后我们讨论的均指初等链。例如,图 7-1 中, 1= ( v2,e2, v3,e3, v4,e6, v5) 是一条链,由于链 1 里所含的边和点均不相同,故是一条初等链;而 2= ( v1,e1, v2,e2, v3,e3, v4,e5,v2,e1,v1) 是一条闭链。定义()回路:一条闭的链称为回路。()通路:一条开的初等链称为通路。()简单链回路和初等回路;若回路中的边都不相同,则称为简单回路;若回路中的边和顶点都互不相同,则称为初等回路或圈。定义 一个图的任意两顶点之间,如果至少有一条通路将它们连接起来,则这个图就称为连通图,否则称为不连通图。例如,

7、图 7-1 中,v 1 与 v6 没有一条通路把它们连接起来,故此图是不连通图。本章以后讨论的图,除特别声明外,都是指连通图。定义 ()子图:设 1 1, 1 2 2, 2如果 1 V2,又 1 E2,则称 1 为G2 的子图。()真子集:若 V1 V2,E1 E2 即 G1 中不包含 G2 中所有的顶点和边,则称 G1 是 G2 的真子图。()部分图:若 V1=V2,E1 E2,即 1 中不包含 G2 中所有的边,则称 G1 是 G2 的一个部分图。()支撑子图:若 G1 是 G2 的部分图,且 G1 是连通图,则称 G1 是 G2 的支撑子图。()生成子图:若 G1 是 G2 的真子图,且

8、 G1 是不连通图,则称 G1 是 G2 的生成子图。例如,图 7-2 中, (b)是(a)的真子图,(c) 是(a) 的部分图,(d)是(a)上午支撑子图,(e)是(a)的生成子图。定义 7 设 G=(V , E)中,对任意一条边 eE,如果相应都有一个权值 w(e),则称 G为赋权图。w(e) 称为边 e 的 权。图 7-2 是一个赋权图。e1 = v1 , v2 , w(e1) = 1 ; e2 = v1 , v3 , w(e2) = 4 ; e3 = v2 , v3 , w(e3) = 2e4 = v2 , v4 , w(e4) = 3 ; e5 = v3 , v4 , w(e5) =

9、 1 ; e6 = v2 , v5 , w(e6) = 5e7 = v4 , v5 , w(e7) = 2 ; e8 = v2 , v5 , w(e8) = 3可见,赋权图不仅指出各点之间的邻接关系,而且也表示各点之间的数量关系。所以赋权图在图的理论及其应用方面有着重要的地位。在很多实际问题中,事物之间的联系是带有方向性的。例如图 7-4 所示。v 1 表示某一水系的发源地,v 6 表示这个水系的入海口,图中的箭头则表示各支流的水流方向,图 7-4是水系流向图。可见图 7-4 中的边是有方向的,称这类图为 有向图。定义 8 设 V=v 1,v2, ,v n是由 n 个顶点组成的非空集合,A=a

10、 1,a2,,a m是由 m 条边组成的集合,且有 A 中元素 ai 是 V 中一个有序元素对 (vi,vj),则称 V 和 A 构成一个有向图,记作 G= (V , A),ai=(vi,vj)表明 vi 和 vj 分别为 ai 边的起点和终点,称有方向的边 ai 为弧(在图中用带有箭头的线表示) 。例如,图 7-4 中,(v 1,v2),(v1,v3),(v2,v5)都是 A 中的元素,A 是弧的集合。在有向图的讨论中,类似无向图,可以对多重边、环、简单图、链等概念进行定义,只是在无向图中,链与路、闭链与回路概念是一致的,而在有向图中,这两个概念不能混为一谈。概括地说,一条路必定是一条链。然

11、而在有向图中,一条链未必是一条路,只有在每相邻的两弧的公共结点是其中一条弧的终点,同时又是另一条弧的始点时,这条链才能叫做一条路。例如,图 7-4 中, v 1,(v1,v2),v2,(v2,v5),v5,(v5,v6),v6是一条链,也是一条路。而v 1,(v1,v2),v2,(v2,v5),v5,(v3,v5),v3是一条链但不是一条路。我们还会碰到这样一类有向图(见图 7-5) ,这是某地区的交通运输分布、走向及相应费用示意图。箭头表示走向,箭头旁边的数字表示费用,称这类图为赋权有向图。定义 9 设在有向图 G= ( V,A )中对任意一条弧 aijA ,如果相应都有一个权值w(aij)

12、则称 G 为赋权有向图。 W(aij)称为弧 aij 的权。简记为 wij(权可以表示距离、费用和时间等) 。在实际工作中,有很多问题的可行解方案都可以通过一个赋权有向图表示,例如:物流渠道的设计、物资运输路线的安排、装卸设备的更新、排水管道的铺设等、所以赋权图被广泛应用于解决工程技术及科学管理等领域的最优化问题。通常我们称赋权图为网络,赋权有向图为有向网络,赋权无向图为无向网络。本章将在后面几节逐一介绍。2 树及最小树问题树是图论中一个重要概念,由于树的模型简单实用,它在企业管理、线路设计等方面都有很重要的应用。2.1 树与树的性质例 1例 1 某企业的组织机构如下所示四 车 间三 车 间二

13、 车 间锻 压 车 间铸 造 车 间车 间生 产 办 公 室 行 政 科财 务 科供 销 科工 艺 组设 计 组技 术 科生 产 计 划 科行 政 办 公 室厂 长如果用图表示,见图 7-6 是一个呈树枝形状的图, “树”的名称由此而来。图 7-6定义 10 一个无回路(圈)的连通无向图称为树。 树的性质(1)必连通,但无回路(圈) ;(2)n 个顶点的树必有 n-1 条边;(3)树中任意两点间,恰有一条初等链;(4)树连通,但去掉任意一条边,必变为不连通;(5)树无回路(圈) ,但不相邻顶点连一条边,恰得一回路(圈) 。2.2 支撑树与最小树定义 11 设图 ),(11EVG是图 ),(1E

14、V的支撑子图,如果是一棵树 1G,记 ),(1EVT。则称 T是 的一棵支撑树。定理 3 图 G 有支撑树的充分必要条件是图 G 是连通的。证 必要性是显然的。充分性:设 G 是连通图。(i)如果 G 不含圈,由定义 10 可知,G 本身就是一棵树,从而 G 是它自身的支撑树。(ii)如果 G 含圈,任取一圈,从圈中任意去掉一条边,得到图 G 的一个支撑子图G1。如果 G1 不含圈,那么 G1 是 G 的一棵支撑树(因为易见 G1 是连通的) ;如果 G1 仍含圈,那么从 G1 中任取一个圈,从圈中再任意去掉一条边,得到图 G 的一个支撑子图 G2,如此重复,最终可以得到 G 的一个支撑子图

15、Gk,它不含圈,则 Gk 是图 G 的一棵支撑树。由以上充分性的证明中,提供了一个寻求连通图的支撑树的方法。称这种方法为“破圈法” 。例 2 在图 7-2(a)中,用破圈法求出图的一棵支撑树。解: 取一圈 v1 e1 v2 e3 v3 e2 v1去掉 e3;取一圈v 1 e1 v2 e4 v4 e5 v3 e2 v1去掉 e5;取一圈v 2 e4 v4 e7 v5 e6 v2去掉 e7;取一圈v 1 e1 v2 e6 v5 e8 v3 e2 v1去掉 e6;如图 7-7 所示,此图是图 7-2(a)的一个支撑子图,且为一棵树(无圈) ,所以我们找到一棵支撑树 T1=V,E 1 ,其中 E1=e

16、 1,e4,e2,e8 。7-2(a)不难发现,图的支持树不是唯一的,对于上例若这样做:取一圈v 1 e1 v2 e3 v3 e2 v1去掉 e3;取一圈 jv 1 e1 v2 e4 v5 e5 v3 e2 v1去掉 e4;取一圈v 1 e1 v2 e6 v5 e8 v3 e2 v1去掉 e6;取一圈v 4 e7 v5 e8 v3 e5 v4去掉 e8。如图 7-8 所示,得到图 7-2(a)的另一棵支撑树 T2=V,E 2 ,其中,E 2=e 1,e2,e5,e7 。求图 G 的支撑树还有另一种方法 “避圈法” ,主要步骤是在图中任取一条边 e1,找出一条不与 e1 构成圈的边 e2,再找出

17、不与e 1,e2构成圈的边 e3。一般地,设已有e 1,e2,,e k ,找出一条不与 e1,e2,,e k构成圈的边 ek+1,重复这个过程,直到不能进行下去为止。这是,由所有取出的边所构成的图是图 G 的一棵支撑树。定义 12 设 T=(V, E)是赋权图 G=(V,E)的一棵支撑树,称 E中全部边上的权数之和为支撑树 T 的权,记为 w(T)。即Tvijjiw,)(7.2)如果支撑树 T*的权 W(T*)是 G 的所有支撑树的权中最小者,则称 T*是 G 的最小支撑树,简称最小树。即 T)(min*)(7.3)式中对 G 的所有支撑树 T 取最小。求最小树通常用以下两种方法。(1).破圈

18、法:在给定连通图 G 中,任取一圈,去掉一条最大权边(如果有两条或两条以上的边都是权最大的边,则任意去掉其中一条边) ,在余图中(是图 G 的支撑子图)任取一圈,去掉一条最大权边,重复下去,直到余图中无圈为止,即可得到图 G 的最小树。例 3 用破圈法求解图 7-3 的最小树。解: 取一圈v 1 e1 v2 e3 v3 e2 v1去掉 e2;取一圈v 2 e6 v5 e8 v3 e3 v2去掉 e6;取一圈v 2 e4 v4 e5 v3 e3 v2去掉 e8;取一圈v 4 e7 v5 e8 v3 e5 v4去掉 e8。如图 7-9 所示,得到一棵支撑树,即为所求最小树 T*,w(T*)=1+2

19、+1+2=6。( 2)避圈法( kruskal 算法):在连通图 G 中,任取权值最小的一条边(若有两条或两条以权数相同且最小,则任取一条) ,在未选边中选一条权值权值最小的边,要求所选边与已选边不构成圈,重复下去,直到不存在与已选边不构成圈的边为止。已选边与顶点构成的图 T 就是所求最小树。算法的具体步骤如下:第 1 步:令 i=1,E 0=(空集) 。第 2 步:选一条边 eiEE i,且 ei 是使图 Gi=(V , Ei-1e) 中不含圈的所有边中权最小的边 e(eEE i)。如果这样的边不存在,则 T=(V,Ei-1)是最小树。第 3 步:把 i 换成 i+1,返回第 2 步。例 4

20、 用避圈法求图 7-3 的最小树。解 在e 1,e2,,e 8中权值最小的边有 e1,e5,从中任取一条 e1;在e 2,e3,,e 8中选取权值最小的边 e5;在e 2,e2,,e 8中权值最小的边有 e3,e7,从中任取一条边 e3;在e 2,e4,e6,e7,e8中选取 e7;在 e2,e4,e6,e8中选取 e4,e8。但 e4 与 e8 都会与已选取边构成圈,故停止。得到与图 7-9 一样的结果。结果。3 最短路问题最短路问题是网络分析中的一个基本问题,它不仅可以直接应用于于解决生产实际的许多问题,若管道铺设、线路安排、厂区布局等,而且经常被作为一个基本工具,用于解决其它的优化问题.

21、定义 13 给定一个赋权有向图 D = (V,A),记 D 中每一条弧 ),(jiijva上的权为 ijijwa)(。给定 D 中一个起点 sv和 t终点,设 P 是 D 中从 s到 t的一条路.则定义路 P 的权是 P 中所有弧的权之和.记为 )(Pw,即)(),(jivw(7.4)又若 P*是 D 图中 s到 t的一条路,且满足 .|)(min* 的 路到为 tsvPp(7.5)式中对 D 的所有从 sv到 t的路 P 取最小,则称 P*为从 sv到 t的最短路, )(*Pw为 sv从 t到的最短距离.在一个图 D=(V,A)中,求从 s到 t的最短路和最短距离的问题就称为最短路问题.3.

22、1 Dijkstra 标号法下面介绍在一个赋权有向图中寻求最短路的方法,这种方法实际上求出了从给定 sv到任一个顶点 ijv的最短路.如下事实是经常要利用的,即如果 P 是 D 中从 iv到 j的最短路, iv是 P 中的一点,那么从 s沿 P 到 i路也是从 sv到 i的最短路.事实上,如果这个结论不成立,设 Q 是从s到 i的最短路,令 P/是从 沿 Q 到达 i,再从 i沿 P 到达 j的路,那么 P/的权就比 P的权小,这与 P 是从 s到 j的最短路矛盾.Dijkstra 算法是没有前公认最好的方法,它适合所有的 0ijw的情形.Dijkstra 算法是一种标记法,它的基本思路是从起

23、点 sv出发,逐步向外探寻最短路,执行过程中,给每一个顶点 jv标号 .,jl.其中 j是正数,它表示获得此标号的前一点的下标; jl或表示从起点 s到该点 jv的最短路的权(称为固定标号,记为 P 标号)或表示从起点 sv到该点 j的最短路的权的上界(称为临时标号,记为 T 标号).方法的每一步是去修改 T 标号,并且把某一个具有 T 标号的点改变为具有 P 标号的点,从而使 D 中具有标号的顶点数为多一个 .这样至多经过 p-1 步,就可以求出从 sv到 t及各点的最短路.再根据每一点的第一个数 j反向追踪找出最短路径.用 P,T 分别表示某个顶点的 P 标号、T 标号, iS表示在第 i

24、 步已具有 P 标号点的集合.Dijkstra 算法的具体步骤:(1)开始时,令 ,)(,0,0 jsjss vTvvpvsi 令对 每 个.,skj(1)如果 VSi,算法终止.这时,对每个 ;ijL;否则转下一步。(2) 设 kv是刚获得 P 标号的点.考察每个使 )(,),( jjijjk vTsvAv将的 点且 修改为即 kwPT)(mn((7.6)如果 ,)(kjjwvPT则把 T(vj)修改为 kjwvP)(,把 j修改为 k;否则不修改.(3)令 )(min)(jsvjji. (7.7)如果 T,则把 ijv的 T 标号变为 P 标号,即令 )(iijjvTP,令 ijiiS1,

25、k=ji,把 i 换成 i+1,返回(1) ;否则终止,这时对每一个 ,js有 )(jjvPl;而对每一个 ijs,有 jjvl.例 1 如图 7-10 所示是某地区交通运输的示意图.试问:从 1v出发,经哪条路线到达 5才能使总行程最短?用 Dijkstra 算法求解.解 开始时 10,vSsi, 0)(,11vp,令 ,)(jvT1j(j=2,3,,8) ,k=1.即给起点 标(0,0) ,给其余的点表(1, ).这时 为获得 P 标号的点,其余均为 T 标号点考察与 1相邻的点 432,v(见图 7-11):因 0221,),(SvA,故把 2v的临时标号修改为122)(,min)(wv

26、PT30,这时 2。同理,得 ,5,i)( 33 v,16n44T.(见图 7-11).其余点的 T 标号不变 .在所有的 T 标号中,最小的为 3)(2vT, 于是令2,3)( 12012 kvSvP.i=1:这时 为刚获得 P 标号的点,考察与 相邻的点 365,v(见图 7-12):因 1552,),(SvA,故把 5v的临时标号修改为25)(,min)(wvPT1073。这时 5,同理得 2,413,5in)()(,i33 66 vTv在所有的 T 标号中,最小的为 )(,于是令 ,P321312,vvS,k=3.i=2:这时 为刚获得 P 标号的点,考察与 3v相邻的点 64,v(见

27、图 7-13).因 2443,SvA)( ,故把 4v的临时标号修改为 3444)(,min)(wvPTv3,51,6in同理得 27)(66vT.在所有的 T 标号中,最小的为 ( 3)=5,于是令 )(4v321423 ,S,k=4.i=3:这时 4v为刚获得 P 标号的点.考察与 3v相邻的点 76(见图 7-14).因为 3664,),(SvA。故把 6v的临时标号修改为 46)(,min)(wvPT35.这时 6v的临时标号不修改,故 6=3,同理得 ,10,i)( 77v在所有的临时标号中,最小的为 6)(.6vT于 是 令 , 634vS.,64321kvvi=4:这时 为刚获得

28、 P 标号的点,考察与 6v相邻的点 875,(见图 7-15):因为 ),(4556SA故把 5的临时标号修改为655)(,min)(wPT8210.这时 65,同理得 ,7,i)(7v.6596n8T在所有的临时标号中,最小的为 7,于是令 )(7vP,,1745vS,6432kv。i=5:这时 7v为刚获得 P 标号的点,考察与 7v相邻的点 8(见图 7-16):因为 588,),(SvA,故把 8的临时标号修改为78)(,min)(wPT1257,min。这时 78.这所有的临时标号中,最小的为 8)(5vT,于是令 ,8)(5vP2156,vS, ,7643k.i=6:这时 为刚获

29、得 P 标号的点,考察与 5相邻的点 8(见图 7-17):因为 6885,),(SvA.故把 8v的临时标号修改为58)(,min(wPT12.这时 8v的临时标号不修改,故 78. 最后只剩下 8一个临时标号,故令7,)(888vTP。至此已找到从起点 1v到终点 的最短距离为 12.再根据第一个标号 j反向追踪求出最短路径为:.87632v事实上,按照这个算法,也找出了起点 1到各个中间点的最短路径和最短距离.例如51v就是从 1v到 5最短路径,距离为 8.为了简化计算,还可以采用每次只记录从起点 到各点的最短距离或上界的方法.为此我们引入记号),()(21inii LL表示在第 i

30、次标号中各点的距离和上界 .例如上例中,我们也可以接如下方式进行: .0有“*”号的点表示 P 标号点. ;),653,(21*1 v7432L;,0, 4*3)65( 634 v;,17,8, 7*5)20(566L;,3, 87*7 v最后按后面的轨迹记录反向追踪可求得从起点 1v到终点 2的最短路,且最后一轮标号 7L中所表示的就是从起点 1v到各点的最短距离.另外,本算法在给某个点标号时,也可以通过找该点的各个来源点的方法来实现,具体作法如下:开始时,给起点 5v标(0,0 ) ,即 .0)(,1svl一般地,在给起点 j标号时,要找出所有与 j有弧相联且箭头指向 jv的各点(称为jv

31、的来源点),不妨设 imi,21 是 j的来源点,其标号为)(,)(21 jwvllimiij为弧 ),(),(,21 jijiji vvm 的权值 ,则给点 jv标以( k,l(jv),其中 ),(),),(),()in)( 2211 jimijiijiij wlwlvll .,jkkv根据别尔曼优化原理,由始点 到 j的最短路径必是由 1v到某个 k的最短路径再加上弧(kv, j)的权值。 k是 1到 j最短路径的点,且是 j的来源点,显然, )jvl是 1到 j最段路径的长度,所以给每个顶点以标号 ,2,)(,nvljk即可获得最短路径和长度的信息.下面,以图 7-10 为例,说明标号法

32、的具体过程 .首先给始点 v标号,第一个标号表示的是来源点,第二个标号表示 )(1vl.由于 1是始点,故令始点的第一个标号为 0,令 )(1vl,于是得到始点 1v的标号(0,0) .2点的来源是 1,且 2l可由 (7.8)计算即30min),()min)(211 wl得到 v的标号( ,3).3点的来源点有 21,v,计算41,6i),(),()i)( 322313vlvll ,得到 3的标号( 2,4).4v的来源点有 1,v,计算5,0min),(),()min)( 4334114 wlll于是得到 的标号( ,5).5的来源有 2, 6,但 还未标号,而 6v的来源点 2,v, 都

33、已经获得标号,故可计算),(),(),()in)( 64463322 vllvlvl 54,3。因而得到 6的标号( ,6).计算82,7min),(),()mi) 5665225 vwlll故 5v的标号为( v,8).7的来源点是 4, 6,计算716,5min),(),()min)( 7667447 vwlvlvl ,得到 7的标号( 6,7).最后终点 8的来源点是 5, 6, 7,计算),(),(),()i) 87786685 vllwvll129,8n,所以在终点 8v处标上( 7,12),标号过程结束,见图 7-18 所示.我们沿着第一个标号,由终点反向跟踪,很容易求得该网络最短

34、路径 321v876vv,而终点 8的第二个标号就是此最短路长度.上述标号过程中,不仅可以求得 1v到 8的最短路,而且从 1v到 j( =2,3,4,5,6,7)的最短路都可求得.例如, 1到 5的最短路是 5632,最短路长度为 8.归纳上述例子,可以总结标号法一般步骤如下:(1) (1) 始点 5v标以(0.0) ;(2) (2) 考虑需要标号的顶点 jv,设 j的来源点 imiv,21 均已获得标号,则 j处应标以 )(,jkl,其中 )(kl按(7.8)式确定.(3) (3) 重复第( 2)步,直至终点 t也获得标号为止, )(jl就是最短路径的长度.(4) (4) 确定最短路径,从

35、网络终点的第一个标号反向跟踪,即得到网络的最短路径.以上例 1 是非负权(即 0),(jivw)网络最短路径的求解,对于含有负权(即)0,(jivw网络的情形,此标号法也是适用的,请看下面例题.例 2 求图 7-19 所示从始点 1到各点的最短路径.解 首先在始点 1v标以(0,0) ,然后在处标以( 1v,-2),由于;5)3(2),(0min),(),()min)( 23322 wvllvl 7444所以在和 处依次标以( 3,-5)和( ,-7),然后在 6处标以( 3,-1).由于 ),(),(),()i) 566535225 vwlvllvl;1,n,i( 744737667 llv

36、wll )(,1m所以在 5v和 处分别标以( 3v,-4)和( 4,-5)最后由于),(),(),()in) 8778668558 vwlvlvll 371,所以在终点处 v应标以( 7,3).所有点都获得标号,标号结果见图 7-20,反追踪得到 1至 8的最短路为 31v874.长度为 3.4 网络最大流问题网络最大流问题是网络的另一个基本问题。许多系统包含了流量问题。例如交通系统有车流量,金融系统有现金流,控制系统有信息流等。许多流问题主要是确定这类系统网络所能承受的最大流量以及如何达到这个最大流量。4.1 基本概念与定理1 1 网络与流定义 14 (1)网络:例 1 如图 7-20 是

37、连结某产品产地 和销地 的交通图。弧 表示从 到 的运输线,弧旁的数字表示这条运输线的最大通过能力 ,括号内的数字表示该弧上的实际流 。现要求制定一个运输方案,使从 运到 的产品数量最多。可行流与最大流在运输网络的实际问题中,我们可以看出,对于流有两个基本要求: 一是每条弧上的流量必须是非负的且不能超过该弧的最大通过能力(即该弧的容量) ;二是起点发出的流的总和(称为流量) ,必须等于终点接收的流的总和,且各中间点流入的流量之和必须等于从该点流出的流量之和,即流入的流量之和与流出的流量之和的差为零,也就是说各中间点只起转运作用,它既不产出新的物资,也不得截留过境的物资。因此有下面所谓的可行流的

38、定义。定义 14 对于给定的网络 D=(V,A,C)和给定的流 ,若 满足下列条件:(1) (1) 容量限制条件:对每一条弧 ,有(7.9)(2)平衡条件:对于中间点:流出量=流入量,即对于每一个 i (is,t),有(7.10)对于出发带点 ,有(7.11)对于收点 ,有(7.12)则称 为一个可行流, 称为这个可行流的流量。注意,我们这里所说的出发点 是指只有从 发出去的弧,而没有指向 的弧;收点 是指只有弧指向 ,而没有从它的发出去的弧。可行流总是存在的。例如令所有弧上的流 ,就得到一个可行流, (称为零流) ,其流量 。如图 7-20 中,每条弧上括号内的数字给出的就是一个可行流 ,它

39、显然满足定义中的条件(1)和(2) 。其流量 。所谓网络最大流问题就是求一个流 ,使得总流量 达到最大,并且满足定义 15 中的条件(1)和(2) ,即max (7.13)网络最大流问题是一个特殊的线性规划问题。我们将会看到利用图的特点,解决这个问题的方法较直线性规划的一般方法要简便和直观的多。例 2 写出图 7-20 所表示的网络最大流问题的线性规划模型。解 设 ,则其线性规划模型为max 3. 增广链 在网络 D=(V,A,C)中,若给定一个可行流 ,我们把网络中使 的弧称为饱和弧,使 的弧称为非饱和弧。把 的弧称为零流弧,把 的称为非零流弧。如图 7-20 中的弧都是非饱和弧,而弧 为零

40、流弧。若 是网络中联结发点 和收点 的一条链,我定义链的方向是从 到 S ,则链上的弧被分为两:一类是:弧的方向与链的方向一致,我们称此类和为前向弧,所有前向弧的集合记为 。另一类是:弧的方向与链的方向一致,我们称此类弧为后向弧,所有后向弧的集合记为 。如图 7-20 中,设是一条从 到 的链,则, 定义 15 设 是网络 D=(V,A,C)上的一个可行流, 是从 到 的一条链,若 满足下列条件:(1)在弧 (vi,vj) +上,即 中的每一条弧都是非饱和弧;(2)在弧 上,即 中的每一条弧都是非零流弧。则称 是关于 的一条增广链。如前面所说的链就是一条增广链。因为其中 +上的弧均非饱和,如(

41、v s,v2) +,fs2=50, 。显然这样的增广链不止一条。4.截集与截量定义 16 给定网络 D=(V,A,C),若点集 V 被分割成两个非空集合 V1 和 V2,使得V=V1+V2,V1 V2=(空集) ,且 vsV 1,vtV 2,则把始点在 V1,终点在 V2 的弧的集合称为分离 vs 和 vt 的一个截集,记为 (V1,V2)。如图 9.26 中,设 V1=v s,v2,v5 ,V 2=v 3,v4,v6,vt则截集为,而弧(v 3,v2)和(v 4,v5)不是该集中的弧。因为这两条弧的起点在 V2 中,与定义 17 不符。显然,一个网络的截集是很多的(但只有有限个) ,例如在图

42、 7-20 中,还可以取 , ,则截集为另外,若把网络 D=(V,A,C)中某截集的弧从网络 D 中去掉,则从 vs 到 vt 便不存在路,所以直观上说,截集是从 vs 到 vt 的必经之路。定义 17 在网络 D=(V,A,C)中,给定一个截集(V 1,V2),则把该截集中所有弧的容量之和,称为这个截集的容量,简称为截量,记为 c(V1,V2),即C(V1,V2)=(7.16)例如在上面我们所举的两个截集中,有而显然,截集不同,其截量也不同。由于截集的个数是有限的,故其中必有一个截集的容量是最小的,称为最小截集,也就是通常所说的“瓶颈” 。不难证明,网络 D=(V,A,C)中,任何一个可行流

43、 f=f ij的流量 V(f),都不会超过任一截集的容量,即v( f ) c(V 1,V2) (7.17)如果存在一个可行流 f*=f* ij ,网络 D=(V,A,C)中有一个截集 ,使得(7.18)则 必是最大流,而 必是 D 中的最小截集。为了求网络最大流 f*,我们也说明下面的重要定理。定理 4 在网络 D=(V,A,C)中,可行流 是最大流的充要条件是 D 中不存在关于 f*的增广链。证 先证必要性。用反证法。若 f*是最大流,假设 D 中存在着关于 f*的增广链 ,令(7.19)由增广链的定义可知 0,令(7.20)不难验证 是一个可行流,且有这与 f*是最大流的假定矛盾。再证充分

44、性:即证明设 D 中不存在关于 f*的增广链,f *是最大流。用下面的方法定义:令 若 ,且有 ,则令 ;若 ,且有 ,则令 。因为不存在着关于 的增广链,故记 ,于是得到一个截集(V *, )。显然有所以 V(f*)=c ,于是 f*必是最大流。定理得证。由上述证明中可见,若 是最大流,则网络必定存在一个截集 ,使得(7.18)式成立。定理 5 (最大流 最小截集定理)对于任意给定的网络 D=(V,A,C),从出发点vs 到收点 vt 的最大流的流量必等于分割 和 的最小截集 的容量,即由定理 4 可知,若给定一个可行流 ,只要判断网络 D 有无关于 的增广链。如果有增广链,则可以按定理 4

45、 前半部分证明中的办法,由公式(7.19)求出调整量Q,再按式(7.20)的方法求出新的可行流。如果流有增广链,则得到最大流。而根据定理4 后半部分证明中定义 的办法,可以根据 vt 是否属于 来判断 D 中有无关于 f 的增广链。在实际计算时,我们是用给顶点标号的方法来定义 的,在标号过程中,有标号的顶点表示是 中的点,没有标号的点表示不是 中的点。一旦有了标号,就表明找到一条从 vs 到 vt 的增广链;如果标号过程无法进行下去,而 vt 尚未标号,则说明不存在从vs 到 vt 的增广链,于是得到最大流。这时将已标号的点(至少有一个点 vs)放在集合 中,将未标号点(至少有一个点 vt)放

46、在集合 中,就得到一个最小截集 。4.2 寻求最大流的标号法(Ford , Fulkerson)从一个可行流出发 (若网络中没有给定 ,则可以设 是零流) ,经过标号过程与调整过程。1) 1) 标号过程在这个过程中,网络中的点或者是标号点(又分为已检查和未检查两种) ,或者是未标号点,每个标号点的标号包含两部分:第一个标号表明它的标号是从哪一点得到的,以便找出增广链;第二个标号是为确定增广链的调整量 用的。标号过程开始,总先给 vs 标上(0,+) ,这时 vs 是标号而未检查的点,其余都是未标号点,一般地,取一个标号而未检查的点 vi,对一切未标号点 vj:(1) 在弧上 , ,则给 vj

47、标号 。这里 。这时点 vj 成为标号而未检查的点。(2) 若在弧 上, ,给 vj 标号 。这里 。这时点 vj 成为标号而未检查的点。于是 成为标号而已检查过的点,重复上述步骤,一旦 被标上号,表明得到一条从 到 的增广链 ,转入调整过程。若所有标号都是已检查过,而标号过程进行不下去时,则算法结束,这时的可行流就是最大流。2) 2 调整过程首先按 及其它点的第一个标号,利用“反向追踪”的办法,找出增广链 。例如设 vt 的第一个标号为 (或 ) ,则弧 (或相应地 )是 上的弧。接下来检查 的第一个标号,若为 (或 ) ,则找出 (或相应地 ) 。再检查 的第一个标号,依此下去,直到 为止。这时被找出的弧就构成了增广链 。令调整量 是 ,即 的第二个标号。令 去掉所有的标号,对新的可行流 ,重新进入标号过程。下面,以例题说明此算法求解过程。例 3 用标号法求图 7-20 所示网络最大流。弧旁的数是 解 :对图 7-20 中各顶点进行标号。首先给 标(0,+),即 检查 :在弧 上,因为 ,又有,所以给 标 ;在弧上

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

当前位置:首页 > 高等教育 > 大学课件

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


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

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

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