570 likes | 691 Views
第八章 图与网络分析. 一、图与网络的基本知识 二、树 三、最短路问题 四、最大流问题. 引 言. 图论是应用非常广泛的运筹学分支,它已经广泛地应用于物理学控制论,信息论,工程技术,交通运输,经济管理,电子计算机等各项领域。对于科学研究,市场和社会生活中的许多问题,可以同图论的理论和方法来加以解决。例如,各种通信线路的架设,输油管道的铺设,铁路或者公路交通网络的合理布局等问题,都可以应用图论的方法,简便、快捷地加以解决。. 北京. 天津. 太原. 石家庄. 塘沽. 济南. 青岛. 郑州. 徐州. 连云港. 重庆. 武汉. 南京. 上海.
E N D
第八章 图与网络分析 一、图与网络的基本知识 二、树 三、最短路问题 四、最大流问题
引 言 图论是应用非常广泛的运筹学分支,它已经广泛地应用于物理学控制论,信息论,工程技术,交通运输,经济管理,电子计算机等各项领域。对于科学研究,市场和社会生活中的许多问题,可以同图论的理论和方法来加以解决。例如,各种通信线路的架设,输油管道的铺设,铁路或者公路交通网络的合理布局等问题,都可以应用图论的方法,简便、快捷地加以解决。
北京 天津 太原 石家庄 塘沽 济南 青岛 郑州 徐州 连云港 重庆 武汉 南京 上海 图8.1 一、图与网络的基本知识 在实际的生产和生活中,人们为了反映事物之间的关系,常常在纸上用点和线来画出各式各样的示意图。 例1:图8.2是我国北京、上海、重庆等十四个城市之间的铁路交通图,这里用点表示城市,用点与点之间的线表示城市之间的铁路线。
v2 v4 v6 v1 v3 v5 图8.2 一、图与网络的基本知识 例2:有六支球队进行足球比赛,我们分别用点v1…v6表示这六支球队。它们之间的比赛情况,也可以用图反映出来,已知v1队战胜v2队,v2队战胜v3队,v3队战胜v5队,如此等等。这个胜负情况,可以用图8.3所示的有向图反映出来。
一、图与网络的基本知识 从以上的几个例子可以看出,我们用点和点之间的线所构成的图,反映实际生产和生活中的某些特定对象之间的特定关系。一般来说,通常用点表示研究对象,用点与点之间的线表示研究对象之间的特定关系。由于在一般情况下,图中的相对位置如何,点与点之间线的长短曲直,对于反映研究对象之间的关系,显的并不重要,因此,图论中的图与几何图,工程图等本质上是不同的。
一、图与网络的基本知识 (一)图与网络的基本概念 1、图及其分类 定义1一个图是由点集V={vi}和V中元素的无序对的一个集合E={ek}所构成的二元组,记为G=(V,E),V中的元素vi叫做顶点,E中的元素ek叫做边。 当V,E为有限集合时,G称为有限图,否则,称为无限图。本章只讨论有限图。 图论中的图是由点和点与点之间的线所组成的。通常,我们把点与点之间不带箭头的线叫做边(无向边),带箭头的线叫做弧(有向边)。
一、图与网络的基本知识 如果一个图是由点和边所构成的,那么,称为为无向图,记作G =(V,E),其中V表示图G的点集合,E表示图G的边集合。连接点vi,vjV的边记作[vi,vj],或者[vj,vi]。 如果一个图是由点和弧所构成的,那么称为它为有向图,记作D =(V,A),其中V 表示有向图D的点集合,A表示有向图D的弧集合。一条方向从vi指向vj的弧,记作(vi,vj)。 两个点u,v属于V,如果边(u,v)属于E,则称u,v两点相邻。u,v称为边(u,v)的端点。 两条边ei,ej属于E,如果它们有一个公共端点u,则称ei,ej相邻。边ei,ej称为点u的关联边。
v2 v1 图8.4 v3 v4 一、图与网络的基本知识 例如.图8.4是一个无向图G=(V,E) 其中V={v1,v2,v3,v4} E={[v1,v2],[v2,v1],[v2,v3], [v3,v4],[v1,v4],[v2,v4], [v3,v3]}
v3 v5 v7 v1 v6 图8.5 v2 v4 一、图与网络的基本知识 图8.5是一个有向图D=(V,A) 其中V={v1,v2,v3,v4,v5,v6,v7} A={(v1,v2),(v,v3),(v3,v2), (v3,v4),(v2,v4),(v4,v5), (v4,v6),(v,v3),(v5,v4), (v5,v6),(v6,v7)}
一、图与网络的基本知识 常用的名词: 一个图G或有向图D中的点数,记作P(G)或P(D),简记作P,边数或者弧数,记作q(G)或者q(D),简记作q。 如果边[vi,vj]E,那么称vi,vj是边的端点,或者vi,vj是相邻的。如果一个图G中,一条边的两个端点是相同的,那么称为这条边是环,如图8.4中的边[v,v3]是环。如果两个端点之间有两条以上的边,那么称为它们为多重边。
一、图与网络的基本知识 定义3每一对顶点间都有边相连的无向简单图称为完全图。有n个顶点的无向完全图记作Kn。 有向完全图则是指每一对顶点间有且仅有一条有向边的简单图。 定义2一个无环,无多重边的图称为简单图,含有多重边的图称为多重图。如不特别说明,都是简单图。 定义4图G=(V,E)的点集V可以分为两个非空子集X,Y,即X∪Y=V,X ∩Y= Ø,使得E中每条边的两个端点必有一个端点属于X,另一个端点属于Y.则称G为二部图(偶图),有时记作G=(X,Y,E)。
一、图与网络的基本知识 2、顶点的次 定义5以点v为端点的边的个数称为点v的次(度),记作d(v),如图8—4中d(v1)=3, d(v2)=4,d(v3)=4,d(v4)=3。 次为零的点称为弧立点,次为1的点称为悬挂点。悬挂点的边称为悬挂边。次为奇数的点称为奇点,次为偶数的点称为偶点。 端点的度d(v):点 v 作为边端点的个数; 奇点:d(v)=奇数;偶点:d(v)=偶数; 悬挂点:d(v)=1;悬挂边:与悬挂点连接的边; 孤立点:d(v)=0;空图:E = ,无边图
一、图与网络的基本知识 定理8.1 任何图中,顶点次数的总和等于边数的2倍。 定理8.2 任何图中,次为奇数的顶点必为偶数个。 定义6有向图中,以vi为始点的边数称为点vi的出次,用d+(vi)表示,以vi为终点的边数称为点vi的入次,用d-(vi)表示。vi点的出次与入次之和就是该点的次。容易证明有向图中,所有顶点的入次之和等于所有顶点的出次之和。
一、图与网络的基本知识 3、子图 定义7 图G=(V,E),若E’是E的子集,V’是V的子集,且E’中的边仅与V’中的顶点相关联,则称G’=(V’,E’)是G的一个子图。特别地,若V’=V,则G’称为G的生成子图(支撑子图)。 4、网络 点或边带有某种数量指标的图称为网络(赋权图)。 网络分为有向网络和无向网络。
一、图与网络的基本知识 (二)连通图 定义8 链:由两两相邻的点及其相关联的边构成的点边序列;如: v0 ,e1 ,v1 ,e2 ,v2,e3 ,v3 ,…,vn-1, en , vn; v0,vn分别为链的起点和终点; 初等链:链中没有重复点和重复边者称为初等链; 有向图中,链上的边方向相同时称为道路;
一、图与网络的基本知识 定义9 圈:起点和终点相同的链; 初等圈:圈中没有重复点和重复边者称为初等圈; 定义10一个图中任意两点间至少有一条链相连,则称此图为连通图。任何一个不连通图都可以分为若干个连通子图,每一个称为原图的一个分图。 有向图中,圈中边方向相同时称为回路;
一、图与网络的基本知识 (三)图的矩阵表示 用矩阵表示图对研究图的性质及应用常常是比较方便的.图的矩阵表示方法有权矩阵、邻接矩阵、关联矩阵、回路矩阵、割集矩阵。 定义11网络(赋权图)G=(V,E),其边(vi,vj)有权wij,构造矩阵A=(aij)n╳n,其中 称矩阵A为网络G的权矩阵。
一、图与网络的基本知识 用矩阵表示图对研究图的性质及应用常常是比较方便的.图的矩阵表示方法有权矩阵、邻接矩阵、关联矩阵、回路矩阵、割集矩阵等,这里只介绍其中两种常用矩阵。 定义12对于图G=(V,E),|V|=n,构造一个矩阵A=(aij)n╳n,其中 称矩阵A为图G的邻接矩阵。
一、图与网络的基本知识 (四)欧拉回路和中国邮路问题 1.欧拉回路与道路 定义13 连通图G中,若存在一条道路,经过每边一次且仅一次,则称这条路为欧拉道路。若存在一条回路,经过每边一次且仅一次,则称这条回路为欧拉回路。 具有欧拉回路的图称为欧拉图(E图)。哥尼斯堡七桥问题就是要在图中寻找一条欧拉回路。 定理3 无向连通固G是欧拉图,当且仅当G中无奇点。 定理4 连通有向图G是欧拉图,当且仅当它每个顶点的出次等于入次。
一、图与网络的基本知识 2.中国邮路问题 这个问题是我国管梅谷同志在1962年首先提出的。因此国际上通称为中国邮路问题。用图论的语言描述:给定一个连接图G,每边有非负权l(e),要求一条回路过每边至少一次,且满足总权最小。 由定理3知,如果G没有奇点,则是一个欧拉图,显然按欧拉回路走就是满足要求的过每边至少一次且总权最小的回路。 如果G中有奇点,要求连续走过每边至少一次,必然有些边不止一次走过,这相当于在图G中对某些边增加一些重复边,使所得到的新图G*没有奇点且满足总路程最短。
一、图与网络的基本知识 中国邮路问题也可以转为如下问题: 在连通图G=(V,E)中,求一个边集E1∈E,把G中属于E1的边均变为二重边得到图G*=G+E1,使其满足G*无奇点,且L(E1)=∑l(e)最小。 定理5 己知图G*=G+E1无奇点,则L(E1)=∑l(e)的最小的充分必要条件为: (1)每条边最多重复一次; (2)对图G中每个初等圈来讲,重复边的长度和不超过圈长的一半。
v2 v1 v2 v1 v3 v5 v3 v5 v6 v4 v6 v4 图8-8 第二节 树 一、树及其性质 在各种各样的图中,有一类图是十分简单又非常具有应用价值的图,这就是树。树在自然科学和社会科学,特别是在计算机科学领域中有广泛的应用。 例8.3:已知有六个城市,它们之间要架设电话线,要求任意两个城市均可以互相通话,并且电话线的总长度最短。 六个城市的一个电话网就作成一个图。 这个图必须是连通图。 这个图必须是无圈的。 图8.8是一个不含圈的连通图,代表了一个电话线网。
总经理 常务副总经理 学术总监 市场总监 市场总 学术总 研发部 人事部 教质部 A B C D E F G H 第二节 树 再比如,乒乓球单打比赛抽签后的对阵形式以及企业的组织结构图等。
图8-9 第二节 树 树的性质可用以下定理表示: 定理6图T=(V,E),|V|=n,|E|=m,则下列关于树的说法是等价的: 1 T是一个树。 2 T无圈,且m=n-1。 3 T连通,且m=n-1。 4 T无圈,但每加一新边即得惟一一个圈。 5 T连通,但任舍去一边就不连通了。 6 T中任意两点,有惟一链相连。 定义14连通且不含圈的无向图称为树。 树中次为1的点称为树叶,次大于1的点称为分枝点。
v3 v5 v5 v3 v1 v1 图8.10 v6 v6 v2 v4 v2 v4 a b 第二节 树 二、图的生成(支撑)树 定义15 设图K=(V,E’)是图G=(V,E)的一生成(支撑)子图,如果图K=(V,E’)是一个树,那么称K是G的一个生成树。 G中属于生成树的边称为树枝,不在生成树上的边称为弦。 例如,图8.10b 是图8.10a 的一个生成树。 显然,如果图K=( V, E’ )是图G=(V, E)的一个生成树,那么K 的边数是n(G)-1,G中不属于生成树K的边数是m(G)-n(G)+1。
第二节 树 证明: 必要性显然; 充分性:设图G是连通的,若G不含圈,则按照定义,G是一个树,从而G是自身的一个生成树。 若G含圈,则任取G的一个圈,从该圈中任意去掉一条边,得到图G的一生成子图G1。若G1不含圈,则G1是G的一个生成树。 若G1仍然含圈,则任取G1的一个圈,再从圈中任意去掉一条边,得到图G的一生成子图G2。依此类推,可以得到图G的一个生成子图GK,且不含圈,从而GK是一个生成树。 定理7 图G=(V,E)有生成树的充要条件是G是连通图。
V2 e7 e1 e4 e3 V1 V4 V5 e8 e5 e2 e6 V3 图8-11 第二节 树 图的生成树的求法1: 定理7充分性的证明,提供了一个寻找连通图生成树的方法,叫做“破圈法”。就是从图中任取一个圈,去掉一条边。再对剩下的图重复以上步骤,直到不含圈时为止,这样就得到一个生成树。 例8.4:用破圈法求出图8-11的一个生成树。
v2 V2 e1 e7 e1 e4 v1 e8 e3 V1 V4 V5 e8 v4 e5 e2 e2 e5 e6 v3 V3 图8-12 第二节 树 圈(v1,v2,v3,v1)去e3; 圈( v1,v2,v4,v3,v1 )去e4; 圈( v3,v4 v5,v3 )去e6; 圈( v1,v2,v5,v4,v3,v1 )去e7; 得到生成树,如图所示。
第二节 树 图的生成树的求法2: “避圈法”或“加边法”。 就是在已给出的图G中,每步选出一条边使它与已选边不构成圈,直到选够n-1条边为止。 根据边的选法不同,找图中生成树的方法可分为深探法和广探法。 (1)深探法。步骤: A:在点集V上任取一点v,给v以标号0; B:若某点u已得标号i,检查一端点为u的各边,另一端点是否均已标号。 若有(u,w)边之w未标号,则给w以标号i+1,记下边(u,w)。令w代u,重复B。 若这样的边的另一端点均已有标号,就退到标号为i-1的r点,以r代u,重复B。直到全部点得到标号为止。
V2 e7 e1 e4 e3 V1 V4 V5 e8 e5 e2 e6 V3 第二节 树 例8.5:用深探法求出下图的一个生成树。 1 0 2 4 3
V2 e7 e1 e4 e3 V1 V4 V5 e8 e5 e2 e6 V3 第二节 树 (2)广探法。步骤: A:在点集V上任取一点v,给v以标号0; B:令所有标号为i的点集为Vi,检查[Vi ,V\Vi]中的端点是否均已标号。对所有未标号之点均标以i+1,记下这些边。 C:对标号i+1的点重复B,直到全部点得到标号为止。 例8.5:用广探法求出下图的一个生成树。 1 2 2 0 1
第二节 树 三、最小生成树问题 定义16 连通图G =(V,E),每条边上有非负权L(e)。一棵生成树所有树枝上权的总和,称为这个生成树的权。具有最小权的生成树称为最小生成树(最小支撑树),简称最小树。 这里所指的权,是具有广义的数量值。根据实际研究问题的不同,可以具有不同的含义。例如长度、费用、流量等等。 如前所述,在已知的几个城市之间联结电话线网,要求总长度最短或总建设费用最少,这个问题的解决可以归结为最小支撑树问题。再如,城市间交通线的建造等,都可以归结为这一类问题。
v5 v3 5 6 4 7 v6 v1 3 1 4 5 2 v2 v4 图8.13a 第二节 树 求最小生成树的常用方法有破圈法和生长法(避圈法)。 破圈法: ① 在网络图中寻找一个圈。若不存在圈,则已经得到最短树或网络不存在最短树; ② 去掉该圈中权数最大的边; 反复重复 ① ② 两步,直到得到最小生成树。 例8.5 某六个城市之间的道路网如图8.13a所示,要求沿着已知长度的道路联结六个城市的电话线网,使得电话线的总长度最短。
v5 v3 5 6 4 7 v6 v1 3 1 v3 v5 1 3 4 5 v1 v6 5 4 2 v2 v4 2 v2 v4 图8.13b 图8.13a 第二节 树 解:这个问题就是求赋权图的最小支撑树。用破圈法求解。
v5 v3 5 6 4 7 v6 v1 3 1 4 5 2 v2 v4 图8.13a 第二节 树 生长法(避圈法) 从网络图中依次寻找权数较小的边,寻找过程中,节点不得重复,即不得构成圈。注意在找较小权数的边时不考虑已选过的边和可能造成圈的边。如此反复进行,直到得到最短树。 用“生长法”求解例8.5。 依次取权较小的边(v2 ,v3), ( v2 ,v4 ) , ( v4 ,v5 ), ( v4 ,v6 ) , ( v1 ,v2 )得最小支撑树。
第二节 树 课后P279 T8.8 分别用避圈法和破圈法求最小树。
第二节 树 课后P279 T8.8 用破圈法求最小树。
三、最短路径问题 (一)引言 最短路径问题是图论中十分重要的最优化问题之一,它作为一个经常被用到的基本工具,可以解决生产实际中的许多问题,比如城市中的管道铺设,线路安排,工厂布局,设备更新等等。也可以用于解其它的最优化问题。
v2 v5 2 6 v9 2 6 1 6 3 3 4 10 3 2 v8 4 1 v1 v7 2 v4 10 v6 三、最短路径问题 例: 如图8.14所示的单行线交通网,每个弧旁边的数字表示这条单行线的长度。现在有一个人要从v1出发,经过这个交通网到达v8,要寻求是总路程最短的线路。
三、最短路径问题 一般意义下的最短路问题:设一个赋权有向图D =(V,A),对于每一个弧a =(vi,vj),相应地有一个权wij。vs,vt是D中的两个顶点,P是D中从vs到vt的任意一条路,定义路的权是P 中所有弧的权的和,记作S(p)。最短路问题就是要在所有从vs到vt的路P中,寻找一个权最小的路P0,亦即S(P0)=minS(p)。P0叫做从vs到vs的最短路。P0的权S(P0)叫做从vs到vt的距离,记作d(vs,vt)。由于D是有向图,很明显d(vs,vt)与d(vt,vs)一般不相等。
三、最短路径问题 (二)Dijkstra算法 下面介绍在一个赋权有向图中寻求最短路的方法——Dijkstra算法,它是在1959年提出来的。目前公认,在所有的权wij≥0时,这个算法是寻求最短路问题最好的算法。并且,这个算法实际上也给出了寻求从一个始定点vs到任意一个点vj的最短路。
三、最短路径问题 Dijkstra算法的基本思想是从vs出发,逐步向外寻找最短路。在运算过程中,与每个点对应,记录一个数,叫做一个点的标号。它或者表示从vs到该点的最短路权(叫做P 标号),或者表示从vs到该点最短路权的上界(叫做T 标号)。算法的每一步是去修改T 标号,把某一个具有T 标号的点改变为具有P 标号的点,使图D 中具有P 标号的顶点多一个。这样,至多经过P -1步,就可求出从vs到各点vj的最短路。
三、最短路径问题 以例1为例说明这个基本思想。在例1中,S=1。因为Wij ≥0,d(v1,v1)=0。这时,v1是具有P标号的点。现在看从v1出发的三条弧(v1,v2),(v1,v3)和(v1,v4)。如果一个人从v1出发沿(v1,v2)到达v2,这时的路程是d(v1,v1)+w12=6单位。如果从v1出发,沿(v1,v3)到达v3,则是d(v1,v1)+w13=3单位。同理,沿(v1,v4)到达v4,是d(v1,v1)+w14=1单位。因此,他从v1出发到达v4的最短路必是(v1,v4),d(v1,v4)=1。这是因为从v1到达v4的任一条路P,假如不是(v1,v4),则必先沿(v1,v2)到达v2,或者沿(v1,v3)到达v3,而这时的路程已是6或者3单位。
v2 v5 2 6 v9 2 1 6 6 3 3 4 10 3 2 v8 4 1 P(V1) v7 2 P(V4) 10 v6 三、最短路径问题 • 看从v1出发的三条弧(v1,v2),(v1,v3)和(v1,v4),min{d(v1,v1)+w12 ,d(v1,v1)+w13 , d(v1,v1)+w14 }= d(v1,v4)=1。
三、最短路径问题 由于所有的权wij≥0,因此,不论他如何再从v2或者v3到达v4,所经过的总路程都不会比1少,于是就有d(v1,v4)=1。这样就使V4变成具有P标号的点。现在看从v1和v4指向其余点的弧。如上所述,从V1出发,分别沿(v1,v2),(v1,v3)到达v2,v3,经过的路程是6或者3单位。从v4出发沿(v4,v6)到达v6,经过的路程是d(v1,v4)+w46=1+10=11单位。而min{d(v1,v1)+w12,d(v1,v1)+w13,d(v1,v4)+w46}=d(v1,v1)+w13=3单位。根据同样的理由,可以断定,从V1到达V3的最短路是(v1,v3),d(v1,v3)=3。这样,又使点v3变为具有P 标号的点,不断重复以上过程,就可以求出从vs到达任一点vj的最短路。
v2 v5 2 6 v9 2 6 6 3 3 4 10 3 2 v8 4 1 v7 2 P(V4) 10 v6 三、最短路径问题 • 再看从v1和v4指向其余点的弧, min{d(v1,v1)+w12,d(v1,v1)+w13,d(v1,v4)+w46}=d(v1,v1)+w13=3 。 1 P(V1) P(V3)
三、最短路径问题 在下述的Dijkstra算法中,以P,T 分别表示某一个点的P 标号,T 标号。Si表示在第i步时,具有P 标号点的集合,为了在算出从vs到各点的距离的同时,也找出从vs到各点的最短路,于是,给每一个点v一个λ值。当算法结束时,如果λ(v)= m,则表示在从vs到v 的最短路上,v 的前一个点是vm。如果λ(v)=M,则表示在图D 中不含有从vs 到达v 的路。λ(v)=0,表示v=vs。 Dijkstra算法的步骤如下:
三、最短路径问题 开始(i=0) 令S0={vs},P(vs)=0,λ(vs)=0,对每一个v ≠vs,令T(v)=+∞,λ(v)=M ,令k=s; (1)如果Si=V,则算法结束,对每一个vSi,d(vs,v)=P(v)。否则转入(2); (2)考察每一个使(vi,vj)A,且vj不属于Si的点vj,如果T(vj)>P(vk)+wkj,则把T(vj)改变为P(vk)+wkj,把λ(vj)改变为k,否则转入(3);
三、最短路径问题 (3)令(vji)=min{T(vj)vjSi},如果T(vji)<+∞,则把vji的T 标号改变为P 标号P(vji)=T(vji),令Si+1=Si∪{vji},k=ji,把i换成i+1,转入(1);否则结束。 这时,对每一个vSi,d(vs,v)=P(v)。对每一个v不属于Si,d(vs,v)=T(v)。
三、最短路径问题 • 现在用Dijkstra算法求例1中从vs到各个点的最短路,此时 • S=1。i=0:S0={v1},P(v1)=0,λ(v1)=0,T(vi)=+∞,λ(vi)=m,i=2,3,…9,k=1。 • (2)因为(v1,v2)∈A,v2不属于S0,P(v1)+w12<T(v2),故将T(v2)改变为P(v1)+w12=6,λ(v2)改变为1。同理,将T(v3)改变为P(v1)+w13=3,λ(v3)改变为1,将T(v4)改变为P(v1)+w14=1,λ(v4)改变为1。