1、OR3,1,第六章 图与网络分析,A,B,C,D,E,引论 : 哥尼斯堡七桥问题,OR3,2,铁路交通图,此图是我国北京,上海等十个 城市间的交通图,反映了这 十个城市间的铁路分布情况. 点表示城市,点间的连线表示 两个城市间的铁路线. 诸如此类问题还有电话线分 布图或煤气管道分布图等.,OR3,3,球队比赛图,五个球队比赛,比过的两个队之间用连线相连,还没有比赛的队之间没有连线,OR3,4,6.1 图的基本概念,图是由点和线构成的。点代表所研究的对象,线表示对象间的关系。 1、图的分类:无向图,有向图 无向图:由点和边所组成的图。表示为G=(V,E). 有向图:由点和弧所组成的图。表示为D=
2、(V,A)点的集合用V表示,V=vi 2、图上的基本概念: (1) 边:图中不带箭头的连线叫做边(edge),边的集合记为E= ej ,一条边可以用两点 vi,vj 表示,ej= vi,vj .弧:图中带箭头的连线叫做弧(arc),弧的集合记为A,A= ak ,一条弧也是用两点表示,ak= vi,vj ,弧有方向:vi为始点,vj为终点,OR3,5,例1.,v7,e7,a9,环:两端点相同的边。 多重边:若两点之间有多于一条边,则称这些边为多重边。 简单图:无环、无多重边的图。 多重图:无环,但允许有多重边的图。,e7,OR3,6,(2)次:以点u为端点的边的条数,叫做点u的次。悬挂点:次为1
3、的点叫做悬挂点;孤立点:次为0的点叫做孤立点;奇点:次为奇数则称奇点;偶点:次为偶数则称偶点。 基本定理: 1、图G=(V,E)中,所有点的次之和是边数的两倍,即2、任一图中,奇点的个数为偶数。,OR3,7,(3)链:点边交替序列称为链;圈:首尾相连的链称为圈; 初等链:链中各点均不同的链; 初等圈:圈中各点均不同的圈; 简单链:链中边均不同的链; 简单圈:圈中边均不同的圈。 (4)连通图:任意两点之间至少有一条链的图。 连通分图:对不连通的图,每一连通的部分称为一个连通分图。 支撑子图:对G=(V,E),若G=(V,E),使VV, E包含于E,则G是G的一个支撑子图。 赋权图:在图中,如果每
4、一条边(弧)都被赋予一个权值wij,则称图G为赋权图。 (5)路:在有向图中,如果链上每条弧的箭线方向与链行进方向相同,则称之为路。 回路:首尾相接的路称回路,OR3,8,6.2 树与最小生成树,1、树的概念与性质 树:无圈的连通图称为树。 定理: 定量3:设图G=(V,E)是一个树,p(G) 2,则G中至少有两个悬挂点。 定量4:图G=(V,E)是一个树的充要条件是G不含圈,且恰有p1条边。 定量5:图G=(V,E)是一个树的充要条件是G是连通图,并且q(G)= p(G) -1. 定量6:图G=(V,E)是一个树的充要条件是任意两个顶点之间恰好有一条链。,OR3,9,2、图的支撑树支撑树:设
5、T=(V,E)是图G=(V,E)的支撑子图,如果T是一个树,则称T为G的支撑树。定理7:图G有支撑树的充要条件是图G是连通的。 求支撑树的方法:破圈法:即任取一个圈,从圈中去掉一条边,对余下的图重复这个步骤,直至图中不含圈为止。避圈法:在图中每次任取一条边,与已经取得的任何一些边不够成圈,重复这个过程,直到不能进行为止。,OR3,10,3、最小支撑树 最小支撑树:当一个连通图的所有边都被赋权,则取不同边构成的支撑树具有不同的总权数,其中总权数最小的支撑树称为最小支撑树。 求最小支撑树的方法:破圈法:在连通图中任取一个圈,去掉一条权数最大的边,在余下的图中重复上述步骤,直至无圈为止。避圈法:将连
6、通图所有边按权数从小到大排序,每次从未选的边中选一条权数最小的边,并使之与已选的边不能构成圈,直至得到最小支撑树。,OR3,11,避圈法的基本步骤P259,第一步:令i1,E0空集。 第二步:选一条边eiEEi-1,使ei是使 (V, Ei-1e)不含圈的所有边e(e EEi-1)中权最小的边。令EiEi-1 ei,如果这样的边不存在,则T=(V, Ei-1)是最小树。 第三步:把i换成i1,转入第2步。,OR3,12,6.3 最短路问题,引例: 单行线交通网:v1到v8使总费用最小的旅行路线。 最短路问题的一般描述:对D=(V,A),a=(vi,vj),w(a)=wij,P是vs到vt的路,
7、定义路P的权是P中所有弧的权的和,记为w(P),则最短路问题为:,V2(v1,6),路P0的权称为从vs到vt的距离,记为:d( vs,vt ),最短路:赋权有向图D=(V,A)中,从始点到终点的 权值最小的路称为最短路。,OR3,13,最短路算法 Dijkstra算法 :有向图 ,wij0 一般结论:Dijkstra算法基本思想: 采用标号法: P标号和T标号 P标号:已确定出最短路的节点(永久性标号)。 T标号:未确定出最短路的节点,但表示其距离的上限(试探性标号)。 算法的每一步都把某一点的T标号改为P标号直至改完为止. Si:P标号节点的集合。,OR3,14,Dijkstra算法的基本
8、步骤:,1:给vs以P标号, P(vs)=0,其余各点均给T标 号,T(vi)=+ 2:若vi 点为刚得到P 标号的点,考虑这样的点vj (vi,vj) A,且 vj为T标号. 3:对vj的T标号进行如下更改:4:比较所有具有T标号的点,把最小者改为P标号.当存在两个以上最小值时,可同时改为P标号. 若全部改为P标号,则停止.否则转回(2).,OR3,15,用Dijkstra算法求图中v1到v8的最短路,OR3,16,OR3,17,OR3,18,OR3,19,OR3,20,最短路问题的算法:Bellman算法,适用范围:有向图,且图中有wij0。 假设前提:任意两点vi, vj之间都有一条弧。
9、(若无,则添加一条虚拟的弧,且其权值为。) 公式来源分析:,OR3,21,基本思路:用逐次逼近来求网络中的最短路:每次求出从始点到网络中其余各点有限制的最短路。 若第一次逼近即得最短路,则限制其最短路只有一条弧,其路长记为 ; 若第二次逼近即得最短路,则限制其最短路不超过两条弧,其路长记为 ; 依此类推,第k次逼近得最短路,则限制其不超过k条弧。 一般的,最多逼近n-1次即得到最短路。,OR3,22,为了求得公式的解可以运用以下公式: 令:,OR3,23,基本步骤: 1、令 ,其中,若v1与vj间没弧,则记w1j=+。 2、当计算到第k步时,若有 成立,则停止计算。 即为从v1到各点的最短路。
10、,OR3,24,举例:求v1到各点的最短路,OR3,25,计算过程见下表:,0,2,5,-3,0,-2,4,0,6,4,0,0,-3,0,4,7,2,0,3,-1,0,0,2,5,-3,0,2,0,-3,6,11,0,2,0,-3,6,6,15,0,2,0,-3,3,6,14,10,0,2,0,-3,3,6,9,10,0,2,0,-3,3,6,9,10,OR3,26,当计算到第六步时,计算结果与第五步相同,则表中第六列的数字分别表示点v1到其它各点的最短路。 寻找最短路径的方法:反向追踪法。,OR3,27,OR3,28,最短路问题的应用(使总费用最小的问题),奎克公司获悉它的一个竞争对手计划将
11、把一种很有销售潜力的新产品投放市场。奎克公司也一直在研制一种类似的产品,并计划在20个月后投放市场。但是,研究临近结束,奎克公司的管理者希望迅速推出产品去参与竞争。现在还有四个没有时间重叠的阶段没有完成,包括正以正常速度进行剩下的研究工作。然而,每个阶段的实施水平可以从正常水平提高为优先水平或应急水平,使之能够加速完成;而且最后三个阶段中都可以考虑提高实施水平。,OR3,29,OR3,30,当网络中实际行进在多于一个节点结束时,在每个这样的节点和虚拟目标地之间插入一条长度为0的弧,从而使得网络中仍然只有一个目标地。,OR3,31,6.4 最大流问题,1、掌握可行流、增广链、截集、截量等基本概念
12、 2、掌握基本定理8及其证明 3、掌握求最大流的标号法,OR3,32,引例:如下输水网络,南水北调工程,从vs到vt送水,弧旁数字前者为管道容量,后者为现行流量,如何调运输水最多?,vs,vt,v2,v1,v4,v3,(3,3),(5,1),(1,1),(4,3),(1,1),(2,2),(3,0),(2,1),(5,3),OR3,33,最大流问题的基本概念,1、容量网络如果有向连通网络图D=(V,A)的每一条弧(vi,vj)上都被赋予一个非负数,以表示通过该弧的最大通行能力,称为弧的容量,则称这样的网络为容量网络,记作D=(V,A,C)。,OR3,34,2、流在D=(V,A,C)中,如果实际
13、通过每一弧(vi,vj)的流量是fij,则称集合f=fij为网络D=(V,A,C)上的一个流。,OR3,35,3、可行流对给定的D=(V,A,C),把满足下列两个条件1),2)的流称为可行流。 1)容量限制条件 :对D中的每一条弧(vi,vj) ,有0 fij cij; 2)平衡条件:对中间点vi ,流入量等于流出量,即 ;对发点vs,有 ;对收点vt,有 .是可行流的流量,是发点的净输出量,是收点的净入量。注意:任一D=(V,A,C)都存在可行流。如零流就是一个可行流。如果D=(V,A,C)中没有给出弧上的流量fij,可认为fij0。,OR3,36,4、最大流 使得从网络发点到收点得总流量(
14、W)达到最大得可行流f=fij称为最大流。 最大流问题就是求一个流f=fij使其流量 达到最大,并且满足:注意:寻求网络中的最大流就相当于求线性规划模型的最优解。,OR3,37,5.截集、截量、最小截量截量:截集( , )中所有弧的容量之和称为该截集的截量,记为c( , ). 最小截集:在D=(V,A,C)的所有截集中,截量最小的截集称为最小截集,记为( )。,OR3,38,注意:容量网络图D的截集不是唯一的,截集个数是有限的。如果在图D中把任何一个截集中的弧丢掉,那么从发点就不能通往收点。所以,截集是从发点到收点的必经之道。从而,有任何一个可行流的流量都不会超过任意截集的截量。,OR3,39
15、,6、增广链 在容量网络D=(V,A,C)中,若 为网络中从vs到vt的一条链,给链 定方向为从vs到vt,上与 同方向的弧称为前向弧,与 反方向的弧称为后向弧,前向弧和后向弧的集合分别用 和 来表示。设 是一个可行流,如果满足:则称 为从vs到vt的(关于f的)增广链。,OR3,40,增广链的实际意义:沿着这条链从vs 到 vt输送的流,还有潜力可挖,只需按照定理证明中的调整方法,就可以把流量提高;调整后的流,在各点仍满足平衡条件及容量限制条件,即仍为可行流。这样,就得到了一个寻求最大流的方法:从一个可行流开始,寻求关于这个可行流的增广链,若存在,则可以经过调整,得到一个新的可行流,其流量比
16、原来的可行流要大,重复这个过程,直到不存在关于该流的增广链时就的得到了最大流。,OR3,41,7、 最大流量最小截量定理 定理8:可行流 是最大流的充要条件是不存在从vs到vt的关于 的增广链。 重要结论:任一容量网络D=(V,A,C)中,最大流的流量等于最小截集的截量。,可行流f 是最大流的充分必要条件是不存在从,到,可行流f 是最大流的充分必要条件是不存在从,到,可行流f 是最大流的充分必要条件是不存在从,OR3,42,定理8可行流 是最大流的充要条件是不存在从vs到vt的关于 的增广链证明:,先证明:若可行流 是最大流,则 中不存在关于 的增广链。,若 是最大流,设D是 的增广链。令:,
17、由增广链的定义可知 ,令:,不难验证该流是一个可行流,且其最大流量比原流大 。 则,证明原可行流不是最大流,与假设矛盾。,OR3,43,再证明:若D中不存在关于 的增广链,则该流是最大流。,利用下面的方法来定义V1:,OR3,44,求最大流的方法:标号法,方法很简单:首先找到一条增广链,沿此进行最大可能调整,再找增广链,再调整,直到没有增广链为止。如何找增广链? 如何调整? 设已有一个可行流f(若网络中没有给定f,则可以设f是零可行流),通过标号过程来找到增广链,通过调整过程来对增广链上的流量进行调整。 第一步 标号过程,通过标号来寻找可增广链; 第二步 调整过程,沿可增广链调整f,以增加流量
18、。,OR3,45,标号法的基本方法介绍,1.标号过程 在这个过程中,网络中的每个标号点的标号由两个标号组成:第一个标号表明该点的标号是从哪一点得到的,以便找到增广链;第二个标号是为确定增广链上的调整量用的。,OR3,46,标号过程,1)给发点以标号(0,+) 。 2)选择一个已标号的顶点vi,对于vi的所有未给标号的邻接点按下列规则处理:若弧( vi, vj )上,fijcij,则令l(vj)minl(vi), cij- fij,并给vj以标号( vi , l(vj) )。若弧( vj , vi )上, fji0 ,则令l(vj)minl(vi), fji并给vj以标号( vi , l(vj)
19、 )。重复第2)步,直到收点被标号或不再有顶点可标号时为止。若收点得到标号,说明存在增广链,转调整过程。若收点未获得标号,标号过程已无法进行时,说明f已是最大流。,OR3,47,调整过程,1)按上一步的第一个标号用反向追踪法找出增广链。 2)令调整量 l(vt),且令:然后去掉所有标号,回到标号过程,对可行流 重新标号。,OR3,48,举例1:解水网最大流问题,OR3,49,OR3,50,OR3,51,OR3,52,最大流应用举例,有四个人,四项任务,甲可以承担A,C,乙可以承担A,丙可以承担A.C,丁可以承担B,C,D,限量每人只能承担一项任务,每项任务也只需要一人承担,问最多能安排几个人工作?如何安排?,OR3,53,令所有弧的容量均为1,该问题即求网络最大流及流量问题。,