运筹学胡运权第五版课件(第6章)_第1页
运筹学胡运权第五版课件(第6章)_第2页
运筹学胡运权第五版课件(第6章)_第3页
运筹学胡运权第五版课件(第6章)_第4页
运筹学胡运权第五版课件(第6章)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章图与网络分析GraphandNetworkAnalysis

图是一种模型,如公路铁路交通图,水或煤气管网图,通讯联络图等。

图是对现实的抽象,用点和线的连接组合表示。§6.1图的基本概念和模型

图不同于几何图形。一、基本概念1、图(graph):由V,E构成的有序二元组,用以表示对某些现实对象及其联系的抽象,记作G={V,E}。 其中V称为点集,记做V={v1,v2,···,vn}

E称为边集,记做E={e1,e2,···,em}点(vertex):表示所研究的对象,用v表示;边(edge):表示对象之间的联系,用e表示。网络图(赋权图):点或边具有实际意义(权数)的图,记做N。零图:边集为空集的图。v1v2v3v4v5e1e2e3e4e5e6e7e8特别的,若边e的两个端点重合,则称e为环。

若两个端点之间多于一条边,则称为多重边。2、图的阶:即图中的点数。例如右图为一个五阶图3、若图中边e=[vi,vj],则vi,vj称为e的端点,

e称为vi,vj的关联边。若vi与vj是一条边的两个端点,则称vi与vj相邻;若边ei与ej有公共的端点,则称ei与ej相邻。简单图:无环、无多重边的图。例如:e6=[v2,v3]4、点v的次(或度,degree)与点v关联的边的条数,记为dG(v)或d(v)。v1v2v3v4e1e2e3e4e5e6e7v5

悬挂点次为1的点,如v5

悬挂边悬挂点的关联边,如e8e8

孤立点次为0的点

偶点次为偶数的点,如v2

奇点

次为奇数的点,如v55、链:图中保持关联关系的点和边的交替序列,其中点可重复,但边不能重复。路:点不能重复的链。圈:起点和终点重合的链。回路:起点和终点重合的路。连通图:任意两点之间至少存在一条链的图。完全图:任意两点之间都有边相连的简单图。

n阶完全图用Kn表示,边数=注意:完全图是连通图,但连通图不一定是完全图。v1v2v5v6v7v3v4e1e2e4e3e5e6e7e8e9如图(v1,e1,v2,e2,v3,e3,v4,e5,v5,e6,v3,e7,v6,e8,v7)是一条链,但不是路(v1,e1,v2,e2,v3,e7,v6,e8,v7)是一条路(v1,e1,v2,e2,v3,e3,v4,e4,v1)是一个回路(v4,e4,v1,e1,v2,e2,v3,e6,v5,e9,v7,e8,v6,e7,v3,e3,v4)是一个圈本图是一个连通图。7、已知图G1={V1,E1},G2={V2,E2},若有V1V2,E1E2,则称G1是G2的一个子图;若V1=V2,E1E2且

E1≠E2

,则称G1是G2的一个部分图。6、偶图(二分图):若图G的点集V可以分为两个互不相交的非空子集V1和V2,而且在同一个子集中的点均互不相邻,则图G称为偶图。完全偶图:V1中的每个点均和V2中的每个点相邻的偶图。若完全偶图中V1有m个点,V2有n个点,则该图共有mn条边。注意:部分图是子图,子图不一定是部分图。二、应用例有甲、乙、丙、丁、戊、己六名运动员报名参加A、B、C、D、E、F六个项目的比赛。如表中所示,打“√”的项目是各运动员报名参加比赛的项目。问:六个项目的比赛顺序应如何安排,才能做到使每名运动员不连续地参加两项比赛?甲乙丙丁戊己项目人A B C D E F√√√√√√√√√√√√√√√√解:构造一个六阶图如下:

点:表示运动项目。边:若两个项目之间有同一名运动员报名参加,则对应的两个点之间连一条边。ABCDEFA—C—B—F—E—D为满足题目要求,应该选择不相邻的点来安排比赛的顺序:或D—E—F—B—C—A§6.2树图和图的最小部分树1、树(tree):无圈的连通图称为树图,简称为树,用T(V,E)或T表示。一、树图的概念2、树的性质(1)树中必有悬挂点。证明(反证法):设树中任何点的次均不为1.

因为树无孤立点,所以树的点的次≥2.

不妨设树有n个点,记为v1,v2,…,vn

因为d(v1)≥2,不妨设v1与v2,v3相邻。又因为树没有圈,且d(v2)≥2,可设v2与v4相邻,…,依次下去,vn必然与前面的某个点相邻,图中有圈,矛盾!注意:树去掉悬挂点和悬挂边后余下的子图还是树。(2)n阶树必有n-1条边。证明(归纳法):当n=2时,显然;设n=k-1时结论成立。当n=k时,树至少有一个悬挂点。去掉该悬挂点和悬挂边,得到一个k-1阶的树,它有k-2条边,则原k阶树有k-1条边。即n=k时结论也成立。综上,n阶树有n-1条边。

(3)任何有n个点、n-1条边的连通图是树。证明(反证法):假设n个点,n-1条边的连通图中有圈,则在该圈中去掉一条边得到的子图仍连通,若子图仍有圈,则继续在相应圈中去掉一条边,…,直到得到无圈的连通图,即为树。但是该树有n个点,边数少于n-1,矛盾!

注意:①树是边数最多的无圈图。②树是边数最少的连通图。在树中不相邻的两个点之间添上一条边,则恰得到一个圈。

从树中去掉一条边,则余下的图不连通。3、图的最小部分树(1)部分树:若G1是G2的一个部分图,且G1为树,则称G1是G2的一个部分树(或支撑树)。G2:ABCD547365576G1:ACBD注意:图G有部分树的必要条件是G是连通图。部分树不是唯一的。(2)最小部分树(或最小支撑树)图G为网络图,若T是部分树中权和最小者,则称T是G的最小部分树(或称最小支撑树).二、最小部分树的求法1、原理(1)图中与点v关联的最短边(即权最小的边)一定包含在最小部分树中。(2)将图中的点分成两个互不相交的非空子集,则两个子集之间连线的最短边一定包含在最小部分树中。SABCDET252414317557即求图中的最小部分树例:要在下图所示的各个位置之间建立起通信网络,试确定使总距离最佳的方案。2、求法方法一:避圈法将图中所有的点分V为V两部分,

V——最小部分树中的点的集合

V——非最小部分树中的点的集合⑴任取一点vi加粗,令vi∈V,其他点在V中 ⑵在V与V相连的边中取一条最短的边(vi,vj),加粗(vi,vj),令vj∈V ,并在V中去掉vj⑶重复⑵,至所有的点均在V之内。“取小边”SABCDET252414317557最小部分树长Lmin=14例:要在下图所示的各个位置之间建立起通信网络,试确定使总距离最佳的方案。SABCDET252414317557××

××××最小部分树长Lmin=14方法二:破圈法⑴任取一圈,去掉其中一条最长边;⑵在余下的图中重复(1),直至图中没有任何圈为止。“去大边”§6.3最短路问题1、最短路问题从已知的网络图中找出两点之间距离最短(即权和最小)的路。2、相关记号(1)dij表示图中两个相邻点i和j之间的距离(即权)。易见dii=0

约定:当i和j不相邻时,dij=∞(2)Lij表示图中点i和j之间的最短距离(即最小权和)。易见Lii=0

即在已知的网络图中,从给定点s出发,要到达目的地t。问:选择怎样的行走路线,可使总行程最短?3、狄克斯屈拉(Dijkstra)标号算法(1)适用范围用于求某两个点之间的最短距离。(2)原理最短路上任何片段是最短路。v1v2v3v4v5(3)思想按离出发点s的距离由近至远逐步标出最短距离Lsi以及最佳行进路线。SABCDET2524143175575例求图中S到T的最短路及最短距离。(4)步骤在网络图中求s到t的最短路。第一步从s出发,将Lss=0标记在s旁边的方框内(表示点s已标记);第二步找出与s相邻且距离最小的点,设为r,计算Lsr=Lss+dsr,并将结果标记在r旁边的方框内(表示点r已标记),同时标记边sr;第三步从已标记的点出发,找出这些点的所有未标记邻点,分别计算已标记点的方框数与其邻点的距离之和,利用“叠加最小”的原则确定下一个被标记点,设为p,并将最小的和标记在p旁边的方框内(表示点p已标记),同时标记相应边;第四步重复第三步,直到t得到标记为止。SABCDET25241431755702447891413594最短路:SABEDT最短距离:LST=13例求图中S到T的最短路及最短距离。V1V2V3V4V5V6V752276742136例求图中v1到v7的最短路。05277610例求图中任意两点之间的最短距离。V1V2V3V4V6V7522767421364、矩阵算法

求任意两点间最短距离的方法v1v2v3v4v5v6v7V1052∞∞∞∞V250∞27∞∞V32∞07∞4∞V4∞27062∞V5∞7∞6013V6∞∞42106v7∞∞∞∞360⑴构造任意两点间直接到达的最短距离矩阵记做D(0)=dij(0)其中dij(0)=dij注意:D(0)是一个对称矩阵,且对角线上的元素全是0.D(0)=其中dij(1)=min{

dir(0)+drj(0)}

irjdir(0)drj(0)r⑵构造任意两点间直接到达、或者最多经过1个中间点到达的最短距离矩阵D(1)=dij(1)即dij(1)为D(0)中第i行和第j行对应元素之和的最小值D(1)=v1v2v3v4v5v6v7V10527126∞V250727410V327065410V47260328V512753013V66442104v7∞10108340其中dij(2)=min{

dir(1)+drj(1)}irjdir(1)drj(1)r⑶构造任意两点间最多可经过3个中间点到达的最短距离矩阵D(2)=dij(2)即dij(2)为D(1)中第i行和第j行对应元素之和的最小值D(2)=v1v2v3v4v5v6v7V105277610V25072548V32706548V47260326V57553013V66442104v710886340其中dij(3)=min{

dir(2)+drj(2)

}irjdir(2)drj(2)r⑷构造任意两点间最多可经过7个中间点到达的最短距离矩阵D(3)=dij(3)即dij(3)为D(2)中第i行和第j行对应元素之和的最小值D(3)=v1v2v3v4v5v6v7V105277610V25072548V32706548V47260326V57553013V66442104v710886340=D(2)故D(2)中的元素就是图中相应两点之间的最短距离。说明:一般的对于D(k)=dij(k),其中dij(k)=min{dir(k-1)+drj(k-1)},(k=0,1,2,3,…)最多可经过2k-1个中间点收敛条件:当D(k+1)=D(k)时,计算结束;设网络图有p个点,即最多有p-2个中间点,则2k-1-1<p-22k-1

k-1<log2(p-1)k∴k<log2(p-1)+1,即计算到k=lg(p-1)/lg2+1时,计算结束。注意狄克斯屈拉算法矩阵算法优点既可以求两点之间的最短距离,又可以确定最短路求任意两点之间的最短距离缺点求某两点之间的最短距离不能确定相应两点之间的最短路

例:下图中v1—v7表示7个村子,需要联合建立一所小学,已知各村小学生的人数分别为v1—30人,v2—40人,v3—25人,v4—20人,v5—50人,v6—60人,v7—60人。问:学校应建在哪一个村子,可使学生总行程最少?V1V2V3V4V6V752276742136v1v2v3v4v5v6v7V105277610V25072548V32706548V47260326V57553013V66442104v710886340解:用矩阵算法得到任意两个村子之间的最短距离如下:

先将每一行的元素乘以该村子的学生人数,得到小学建在相应村子时,该村学生上学时单程所走的路程。再将每一列的元素累加,得到小学建在相应村子时,七个村子的学生上学时单程所走的总路程。小学建在下列村子时,七个村子的学生上学时单程所走的路程v1v2v3v4v5v6v701506021021018030020002808020016032050175015012510020014040120060401203502502501500501503602402401206002406004804803601802400总路程17001335143010708357701330故小学应该建在v6村。v1Sv2v3v4T§6.4网络的最大流v1Sv2v3v4T一、基本概念和基本结论2、图的分类(1)无向图(简称图)记做G=(V,E),V、E分别为点集和边集。(2)有向图记做D=(V,A),V、A分别为点集和弧集。注意:以下讨论的是有向图。3、弧的容量(简称容量):弧(vi,vj)上可通过负载的最大能力。用c(vi,vj)或cij表示。1、图中两点vi与vj之间的连线有两种情况(1)边(edge):未规定方向的连线,记做vi,vj,其中vi,vj称为端点(2)弧(arc):规定方向的连线,记做(vi,vj),其中vi称为起点,vj称为终点4、容量网络(简称网络):每条弧都有容量的网络。8v1Sv2v3v4T799265105例如:5、容量网络中点的分类发点(源点):用S表示,“只出不入”收点(汇点):用T表示,“只入不出”中间点:“有入有出”注意:任意容量网络总可以转换为只有一个发点和一个收点的情况。6、流(flow):加在网络中弧(vi,vj)上的一组负载量,用f(vi,vj)或fij表示。8(8)v1sv2v3v4t7(5)9(4)9(9)2(0)6(1)5(5)10(8)5(4)其中cij(fij)该流为可行流10、网络的最大流:即使V(f)达到最大的可行流。8、零流:加在每条弧上的流量全为0。易见:零流一定是可行流。每个容量网络都有可行流。9、总流量:从发点s到收点t的流量,记做V(f)7、可行流(记做f):能够在网络中通过的流,必须满足以下两个条件: ①容量限制条件:对所有弧,0

fijcij②中间点平衡条件:对任何一个中间点,流入量=流出量

12、割的容量:割集中各弧的容量之和。13、最小割:所有割集中容量之和最小的一个割集。11、割集(简称割):一组弧的集合,割断这些弧能使从s到t的流中断。定理:网络的最大流量等于它的最小割集的容量。8(8)v1sv2v3v4t7(5)9(4)9(9)2(0)6(1)5(5)10(8)5(4)例如:割集={(v1,v3),(v2,v4)}割的容量=9+9=1814、前向弧(或正向弧):在从发点s到收点t的一条链中,指向为s到t的弧称为前向弧,记做μ+。16、增广链:对于从s到t的一条链,如果在前向弧上满足流量小于容量,即fij<cij(即前向弧不饱和),后向弧上满足流量大于0,即fij>0(即后向弧不为0),则称这样的链为增广链。15、后向弧(或逆向弧):在从发点s到收点t的一条链中,指向为t到s的弧称为后向弧,记做μ-。st6(4)5(3)4(4)8(7)μ+μ+μ+μ-这是一条增广链定理:当网络中不存在增广链时,网络达到最大流状态。二、网络最大流的求法

标号算法(Ford-Fulkerson标号算法)1、基本思想:寻找增广链;若无增广链,则已经得到最大流和最小割,结束;若有增广链,则改善流量分布,再重复寻找,直到不存在增广链为止。2、点v的标号v(x,ε(v))

其中x是使v得到标号的已标号点,

ε(v)是从x到v的流量的最大可调值。标号算法下规定:前向弧是已标号点指向未标号点的弧,后向弧是未标号点指向已标号点的弧.3、步骤:①对发点s标号:s(0,+∞)

从已标号点i出发,看与其相邻的未标号点j之间的弧, 对前向弧μ+若满足fij<cij,则对点j标号(i,ε(j)),其中ε(j)=min{ε(i),cij-fij}对后向弧μ-若满足fji>0,则对点j标号(i,ε(j)),其中ε(j)=min{ε(i),fji}(注:若有多个可标号点,可任选。)若出现其他情况,则点j不标号。前向弧不饱和,要标号后向弧不为0,要标号③当t得到标号时,从t开始沿已标号点用反向追踪法得到增广链,利用ε(t)调整流量:对前向弧μ+,新流量fij=fij+ε(t)

对后向弧μ-,新流量fij=fij-ε(t)

其余弧上的流量不变。④去掉所有标号,重复①。

若标号中断,即t没有得到标号,则该流为所求的网络最大流(此时最小割集为已标号点与未标号点之间的前向弧),结束;否则重复②,继续标号,直到收点t得到标号,转③。8(8)v1sv2v3v4t7(5)9(4)9(9)2(0)6(1)5(5)10(8)(0,+∞)(s,2)(v2,2)(v1,2)(v3,1)(v4,1)5(4)cijfij例求网络的最大流。最大可调量为17(6)5(3)9(5)6(0)10(9)8(8)v1sv2v3v4t7(6)9(5)9(9)2(0)6(0)5(5)10(9)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论