赋权图的最短路与关键路的算法与实现
赋权图的最短路与关键路的算法与实现
赋权图的最短路与关键路的算法与实现赋权图的最短路与关键路的算法与实现摘要:图形是由点和线构成的集合.赋权图的最短路就是任意两个节点之间的权值之和最⼩的路径.最短路不仅仅指⼀般地理意义上的距离最短,还可以引申到其它的度量, 如时间、费⽤、线路容量等.本⽂介绍了如何求最短路的有效算法: Dijkstra算法.它能求出赋权图的任何两个节点之间权值之和的最⼩路径. 关键路径通常总是决定项⽬⼯期的进度活动序列.它是项⽬中从发点到收点的最长路径.关键路径法(Critical Path Method,CPM)是⼀种通过分析哪个活动序列(哪条路线)进度安排的总时差最少来预测项⽬⼯期的⼀门⽹络分析技术.关键路径法,能推算出项⽬的最短完成时间和项⽬各项活动的可能开始和结束时间.关键词: 图的邻接矩阵; 最短路径; Dijkstra算法; 关键路径The algorithm and implementation of the Shortest Path andthe Critical PathAbstract: Graphics are constituted by the sets of points and lines. The shortest path of the weighted graph is the minimum sum of the weight between any two vertices. The shortest path not only refers to the shortest distance, but also can be extended to other metrics, such as time, cost, line capacity and so on. Dijkstra’s algorithm was the most efficient algorithm for how to find the Shortest Path of weighted graph, which is studied in this paper. Dijkstra’s algorithm was used to calculate the m inimum value of weighted graph between any two vertices. The critical path is usually used to obtain the progress of the project in activities. It is the longest path of a project from the starting point to the ending point. The critical path method (Critical Path Method, CPM) which analysis a sequence of the least time in activities or predict (which route) the schedule better. The critical path method can be used to calculate the shortest completion time, starting and ending times in project activities.Keywords: Adjacency matrix of the graph; The Shortest Path; Dijkstra’s algorithm; The Critical Path⽬录第⼀章绪论 (1)1.1 课题的背景 (1)1.2 课题的⽬的 (1)1.3 课题的国内外研究状况 (1)1.4 课题的意义和研究⽅法 (1)1.5 课题的构成及主要研究内容 (2)第⼆章基础知识 (3)2.1 集合的概述 (3)2.2 图论基础 (4)第三章赋权图最短路的算法与应⽤ (9)3.1 最短路的概念 (9)3.2 最短路算法 (10)3.3 Dijkstra算法 (11)3.4 赋权图最短路算法在舰船通道路线设计中的应⽤ (14)第四章关键路径法与应⽤ (16)4.1 关键路径法的基本原理 (16)4.2 ⽹络计划的特点 (17)4.3 ⽹络计划的分类 (18)4.4 ⽹络计划关键路径的应⽤ (18)4.4.1 搭接⽹络计划⽰例 (18)4.4.2 搭接⽹络中的连接关系 (19)4.4.3 搭接⽹络计划的时间参数计算⽰例 (19)第五章⽹络计划优化 (25)5.1 ⼯期优化 (26)5.1.1 ⼯期优化的计算步骤 (26)5.1.2 宜缩短持续时间的关键⼯作的选择 (26)5.1.3 按要求⼯期优化⽹络计划的⽅法 (26)5.1.4 ⼯期优化⽰例 (27)5.2 资源优化 (29)5.2.1 资源优化的种类 (29)5.2.2 资源优化的原则 (30)5.3⼯期费⽤优化 (31)5.3.1 ⼯期与成本的关系 (31)5.3.2 ⼯期与成本优化⽰例 (34)总结 (41)参考⽂献 (42)致谢 (44)附录A (45)附录B (50)第⼀章绪论1.1 课题的背景当前社会发展迅猛, ⼈们为了顺应时代的发展, 对于实际问题在认识并处理的过程中, 探索到的解决问题的办法. 像在求解⽹络图上节点间最短路径, ⼯程进度计划的问题等. 所以我们提出了这⼀课题的研究. 特别是通过光纤⽹络经过⼗⼏年的⾼速建设与发展, ⽹络的规模越来越⼤, 业务也越来越丰富, ⽹络建设已趋向成熟. 在这种背景下, 光纤⽹络资源的管理问题也就迫在眉睫了. 因此对应我们找到了解决问题的正确并且⽅便的答案. ⽽且现在的理论依据已经⽇趋完善, 也为了符合的当前的形势. 所以提出了这⼀课题.1.2 课题的⽬的为了解决当前社会活动过程中的现实问题. 运⽤先进的计算机⼿段, 实现从⼯程规划设计到资源管理的全⾯图形化、可视化管理,并提供多层⾯的⽹络性能分析与优化⼿段. 利⽤其从多个⾓度对最短路径算法进⾏联合优化. ⽣产出有便携式GPS导航设备是集嵌⼊式技术、全球定位系统GPS、地理信息系统GIS、智能交通系统ITS、计算机科学技术、多媒体技术和现代通信技术于⼀体的⾼科技产品.1.3 课题的国内外研究状况现在国内外研究依然很热, 像基于AOE⽹络的关键路径⽅法研究, 主要⽤于数字技术研究⽅向. ⽤关键路径法在挣值分析⽅法的研究, 资源约束的扩展关键路径法的研究. 在全球定位系统GPS导航⽅向的研究. 基于蚁群算法的最短路径搜索⽅法研究. 公交换乘最短路径算法研究, 基于GIS最短路径算法研究. 随机时间依赖⽹络的K期望寿命最短路径算法研究. ⽽在此我们主要研究的是图的最短路径和关键路径⼀系列问题. 建设项⽬管理是每个项⽬者所关⼼的重要内容之⼀. 就⼯程项⽬建设⽽⾔, 项⽬管理贯穿于项⽬建设的全过程. 关键路径法⾃20世纪60年代传⼊中国后, 在⽣产中得到了应⽤,它符合⼯程施⼯的要求,特别适⽤于⼯程管理. 从国内外的情况看, 应⽤这种⽅法最多的是⼯程施⼯单位. 同国外发达国家相⽐, ⽬前我国在理论⽔平与应⽤⽅⾯相差⽆⼏, 但在应⽤管理上, 基本上停留在计划的编制上. 因此, 提⾼关键路径法在⼯程项⽬管理中的应⽤显得尤为重要.1.4 课题的意义和研究⽅法研究⽆线传感器⽹络中单、多跳通信⽅式的能耗规律, 结合Dijkstra最短路径递增的思想形成最⼩能耗路径拓扑的⽣成规则, 建⽴了⼀种基于最短路径树的拓扑结构模型, 获得了每个节点到⽬的节点的最⼩能耗路径.从多个⾓度对最短路径算法进⾏联合优化.⽣产出有便携式GPS导航设备是集嵌⼊式技术、全球定位系统GPS、地理信息系统GIS、智能交通系统ITS、计算机科学技术、多媒体技术和现代通信技术于⼀体的⾼科技产品.以电信光纤⽹络管理为核⼼, 运⽤先进的计算机⼿段, 实现从⼯程规划设计到资源管理的全⾯图形化、可视化管理, 并提供多层⾯的⽹络性能分析与优化⼿段.在求解⽹络图上节点间最短路径的⽅法中, ⽬前国内外⼀致公认的较好算法有迪杰斯特拉(Dijkstra)算法. 这种算法中, ⽹络被抽象为⼀个图论中定义的有向或⽆向图, 并利⽤图的节点邻接矩阵记录点间的关联信息. 在进⾏图的遍历以搜索最短路径时, 以该矩阵为基础不断进⾏⽬标值的最⼩性判别, 直到获得最后的优化路径. Dijkstra算法是图论中确定最短路的基本⽅法, 也是其它算法的基础. 为了求出赋权图中任意两结点之间的最短路径, 通常采⽤这种⽅法, 是每次以⼀个结点为源点, 重复执⾏Dijkstra算法n 次.使⽤关键路径法(Critical Path Method,CPM)是⼀种通过分析哪个活动序列(哪条路线)进度安排的灵活性(总时差)最少来预测项⽬⼯期的⽹络分析技术. 具体⽽⾔, 该⽅法依赖于项⽬⽹络图和活动持续时间估计, 通过正推法计算活动的最早时间,通过逆推法计算活动的最迟时间, 在此基础上确定关键路线, 并对关键路线进⾏调整和优化, 从⽽使项⽬⼯期最短, 使项⽬进度计划最优.1.5 课题的构成及主要研究内容这篇论⽂可以进⾏如下的构成:第⼀章由绪论引⼊是开端, 包括毕业设计(论⽂)课题的背景及⽬的、国内外研究状况、课题的意义、研究⽅法、理论依据和具备的条件、毕业设计(论⽂)课题的构成及主要研究内容等.第⼆章简明扼要的概述了集合的相关理论以及图论的⼀些相关知识.第三章介绍图论中的最短路算法和应⽤.第四章介绍了关键路径法以及它的⼀些应⽤实例等内容.第五章着重介绍了⽹络计划的优化的三个⽅⾯:(1) 在现有条件的限制下,求⼯期最短;(2) 在规定的⼯期内,要求资源最均衡;(3) 加快⼯期⽽费⽤最少.第⼆章基础知识2.1集合的概述定义1 集合⽤于对象在⼀起的组. ⼀般情况下,是⼀组有相似的性质对象. ⼀个⽆序的⼀组对象我们定义为集合A, 其中的对象称为元素或集合的成员. ⽤a∈A来表⽰元素a是集合A当中的元素. ⽤a?A表⽰元素a不是集合A当中的元素.集合⼀般是使⽤⼤写字母来表⽰. ⼩写字母通常⽤来表⽰元素的集合. 有多种⽅法来描述集合:列举法、维恩图、描述法等. 但是最常采⽤的是列举法和维恩图⽅法. 例如: 元⾳字母在英⽂字母可以写成集合V = { a, e, i, o, u }. 通过维恩图来表⽰集合之间的关系的. 如下例:例2.1 画⼀维恩图⽤V表⽰, 在英⽂字母中集合⽤元⾳字母.解我们绘制⼀个矩形来表⽰通⽤集U, 这是组26个英⽂字母. 在这个矩形中我们画⼀个圆代表V. 在这个圈⼦, 我们指⽰V点为元⾳字母元素(见图1).图2-1维恩图元⾳集合定义2 ⼀个集合A是另⼀个集合B的⼦集; 当且仅当A的每个元素也是B的元素. 我们使⽤符号A?B表⽰B集合的⼦集A.当A?B时,有对于?x(x∈A→x∈B)是正确的. 若A不是B的⼦集, 我们只需要找到⼀个元素x∈A与x?B, 举出这样的⼀个x反例来. 我们有这样⼀个有⽤的规则可以决定是否有⼀个集合是另⼀个集合的⼦集.在集合相关领域我们介绍很少, 是因为我们会⽤到⼀些相关的知识, 其次主要也是为后续的问题引线和做铺垫. 有了这些前期的相关的储备知识, 我们就要进⼀步来研究图论当中的基本概念.2.2 图论基础定义1 设V和E是两个有限⾮空集合, V中的元素叫做节点(或顶点), E中的元素叫做边, 且E中的每⼀条边恰好与V中的两个节点相对应, 就称G= (V,E)是⼀个图.如下图2-2:图2-2定义2 若G = (V, E)是⼀个图, 若E中的每条边所对应的两个节点没有次序之分, 则称为⽆向图(如图2-2); 若E中的每条边所对应的两个节点有次序之分, 则称该图为有向图. 如下图2-3:图2-3注意:⼀般⽤⼩圆点或⼩圆圈表⽰节点, ⽤节点对连线表⽰边, 节点的位置和连线的曲直及长短是⽆关的.在⽆向图中, 若边e与节点(a, b)对应, 则称e与节点a关联, 同样, e与b关联. 若节点a和b之间有边连接, 则称节点a与b相邻, 否则不相邻. 若两条边关联⼀个共同的节点, 则称这两个边相邻, 否则, 若两条边不同时与任何⼀个节点关联, 则称这两个边不相邻. 有向图类似.定义3 关联同⼀个节点的边叫做⾃环. 在图2-3中, 像a, c, e都有⾃环.定义4 不与任何节点相邻的节点称为孤⽴点. 如图2-3, 点f就是孤⽴点.定义5 只与⼀条边关联的节点称为悬挂点. 如图2-4中的d点.图2-4定义6 如果顶点个数V 与边的条数E 都是有限的, 图G 就是有限图. 如果V =1, E =0,图G 称为平凡图. 这种仅含⼀个孤⽴点的图是有限图的特例. 如果V 或E 是⽆限的, 图G 称为⽆限图.定义7 如果⼀个图没有⾃环, 并且每两个顶点之间最多只有⼀条边, 这样的图称为简单图. 如图2-5:图2-5定义8 设图G = (V , E ), i v V , 其中的所有边都在E 当中. i=1,2,3, ……p , 所有边与节点i v 与j v 关联. ⽽且顶点和边交替出现, 将这样的⼀个交替序列称为路.图2-6如图2-6中a-b-d-c 就是⼀条路.定义10 若从起始节点出发结束到起始结点, 称这条路为回路或圈.如图2-6中a-b-d-c-a 就是⼀条回路.定义11 如果图G 中任意节点u 到任意节点v 都是有路相连的, 则称G 为连通图, 否则是⾮连通图. 如图2-7:图2-7定义12 ⼀个没有重边的图⽤⼀种⽅法将图的边可以⼀⼀列出来; 另⼀种⽅式是使⽤邻接矩阵. 假设G = (V , E )是⼀个简单的图, |V | = n. 假设v 1,v 2 ,……,v n 作为G 的任意顶点, G 的邻接矩阵就是这个图的边的顶点, 所构成的矩阵(n ×n )的(0 - 1)矩阵. 当v i 和v j 是相邻的时候, 矩阵对应位置的值为1, 当它们不相邻时候, 对应值为0. 换句话说, 如果其邻接矩阵是⼀个A n ×n = [ij a ], 那么()()()=其它相邻如果 0, 1j i ij v v a 例2.2 ⽤邻接矩阵来表⽰如图2-8.图2-8解顶点为a , b , c , d. 这个图的邻接矩阵是:定义13 若图G=(V , E )中各边e 都赋有⼀个实数W (e ), W (e )是⼀个实数集, W 中的每个数与E 中的⼀个边相对应, W (e )对应的实数称为边e 的权, 这个图则称这种图为赋权图, 记为G = G (V , E , W ). 如图2-9:图2-9若图G =(V ,E )是⼀个赋权图, 且W (e )≥ 0,e ∈E (G ), 若µ是v i 到v j 的路,()()i i e W W e µµ∈=∑的权, 则称()W µ为µ的长, 长度最⼩的v i 到v j 的路L 称为最短路.例2.3 如图2-10,求a 到z 的最短路.图2-10解 a 到z 的路径有a -b -d -z ,路长为2+5+2=9;a -b -e -z ,路长为2+2+4=8;a -c -e -z ,路长为3+5+4=12;a -b -e -d -z ,路长为2+1+4=7;a -c-e -d -z ,路长为3+5+1+2=13. 所以,a 到z 的最短路径是a -b -e -d -z . 距离是7.定义15 设G = (V , E , W )是有向带权图, 当G 满⾜以下四个条件时, 称G 为PERT 图, (1) G 是简单图; (2)G 中⽆回路; (3) G 有⼀个节点的⼊度为0, 称此节点为发点, 有⼀个节点的出度为0, 称此节点为收点; (4) 边<i v="" ,="" j="" bdsfid="221">的权值为t (i , j ), 该权值常表⽰时间.。
离散数学最短路径和关键路径
*
1
关键路径(续)
vi的缓冲时间TS(vi)=TL(vi)-TE(vi), i=1,2,,n vi在关键路径上TS(vi)=0
*
例2 求PERT图中各顶点的最早完成时间, 最晚完成
时间, 缓冲时间及关键路径.
解 最早完成时间
TE(v1)=0
TE(v2)=max{0+1}=1
TE(v3)=max{0+2,1+0}=2
设带权图G=<V,E,w>, 其中eE, w(e)0. 设V={v1,v2,,vn}, 求v1到其余各顶点的最短路径 p标号(永久性标号) : 第r步获得的v1到vi最短路径的 权 t标号(临时性标号) : 第r步获得的v1经过p标号顶点 到达vi的路径的最小权, 是v1到vi的最短路径的权的上 界 第r步通过集Pr={v | v在第r步已获得永久性标号} 第r步未通过集Tr=V-Pr
*
带权图G=<V,E,w>, 其中w:ER. eE, w(e)称作e的权. e=(vi,vj), 记w(e)=wij . 若vi,vj不 相邻, 记wij =. 设L是G中的一条路径, L的所有边的权之和称作L的 权, 记作w(L). u和v之间的最短路径: u和v之间权最小的通路.
标号法(, 1959)
*
标号法(续)
例1(续) 求v0到v5的最短路径 v0 v1 v2 v3 v4 v5 0 0 1 4 1 1/v0 3 8 6 2 3/v1 8 4 3 7 4/v2 10 4 7/v4 9 5 9/v3 w 0 1 3 7 4 9 =v0v1v2v4v3v5, w()=9
*
关键路径
vi的最早完成时间TE(vi): 从始点v1沿最长路径到vi
赋权图的最短通路4-10
1 10 6
10 6 10 5 10 9
3 ∞ ∞ ∞ ∞ ∞
3 11 11 11 11 11
∞ ∞ ∞ ∞
∞ ∞ 14 13 13 13 9 8 11 11 ∞ ∞
11 16 11 11 16 16 16 15
所以最短路为 a e d h c g z
23
v1 … v2 t1 t2 DT(t1) T DT(t2)
与DT(t1)的最短性相矛盾! 学会多画图,多从图形直观上来看.
d=W(av1…v2t2…t1)
定理 在有限赋权图G=(V,E)中,顶点a为起点,|V|=n+1, 递归地定义目标集 T1=V-{a},Ti+1=Ti-{ti} 即 Ti={ti,ti+1,…,tn}(i=1,2,…,n) 其中ti为Ti中指标最小者, 即 DTi(ti)= min{DTi(ti),DTi(ti+1),…,DTi(tn)}. 则 DTi+1(t) DTi(t),当t与ti不邻接 = min{DTi(t),DTi(ti)+W(ti,t)},当t与ti邻接
21
(4)由表可得最短路的长度为15.要得到最短路,
可以用逆向检查法:从Z开始,往上检查,直止 z的值发生变化为止,在此行中找到最小者,然 后由此最小者开始往上检查,直止发生变化, 在此行中找最小者,重复这一过程直止到a为止. 最后倒着把最小者所对应的点写成序列,此序列 即为最短路.
22
a
b c d e f g h i z
16
17
18
19
当我们比较熟练地掌握了狄克斯特洛算法后, 可用列表法来求最短路,它使求解过程显得十分 简洁.下面以一例来介绍此法. 例 求右图中a到z的最短路及其长度
第三节 最短路问题
作业
195页
习题8
8.4题
( X , X ) { (V1 ,V4 ) ,(V2 ,V4 ) ,(V5 ,V4 ) ,(V5 ,V9 )} 1、 2、K14 K 24 8 K54 5 3 8 K59 1 3 4
3、 (V5 ,V9 ) V9 ( 4 ,
5)
第五轮: V1 (0,0) V2 (2,1) V5 (3,2) V9 (4,5) V7 (7,9) 1、 ( X , X ) { (V1 ,V4 ) ,(V2 ,V4 ) ,(V5 ,V4 ),(V9 ,V6 ),(V9 ,V7 ),(V9 ,V8 )} 2、 K14 K24 K54 8 3、 (V9 ,V7 ) V7 ( 7 ,
V1
(i , i )
V2
5
7
1
V4
6
2 2
V3
1
V5
第三步: 找出第二步中 K ij 最小的那条弧,给它的终 点以标号
(V1 ,V3 ) V3 (2,1)
8
如果有几个 K ij 都取最小值,就同时标号
以后每一轮都重复第二轮的三个步骤, 从而使某个顶点获得标号; 当终点获得标号后,计算结束; 然后逆向追踪获得最短路.
( X , X ) { (V1 ,V4 ) ,(V2 ,V4 ) ,(V5 ,V4 ) ,(V5 ,V9 )} 1、 2、K14 K 24 8 K54 3 5 8 K59 3 1 4
3、 (V5 ,V9 ) V9 ( 4 ,
5)
第三轮: V1 (0,0) V2 (2,1) V5 (3,2)
9)
1)
V4 (8,1) V1 V2 (2,1) V5 (3,2) V9 (4,5) V7 (7,9) V6 (10,9)
有向赋权图
图论基本概念重要定义:有向图:每条边都是有向边的图。
无向图:每条边都是无向边的图。
混合图:既有有向边又有无向边的图。
自回路:一条边的两端重合。
重数:两顶点间若有几条边,称这些边为平行边,两顶点a,b间平行边的条数成为(a,b)的重数。
多重图:含有平行边的图。
简单图:不含平行边和自回路的图。
注意!一条无向边可以用一对方向相反的有向边代替,因此一个无向图可以用这种方法转化为一个有向图。
定向图:如果对无向图G的每条无向边指定一个方向由此得到的有向图D。
称为的G定向图.底图:如果把一个有向图的每一条有向边的方向都去掉,得无向图G称为的D底图。
逆图:把一个有向图D的每条边都反向由此得到的图称为D的逆图。
赋权图:每条边都赋上了值。
出度:与顶点相连的边数称为该定点的度数,以该定点为始边的边数为出度。
入度:以该定点为终边的边数为入度。
特殊!度数为零的定点称为孤立点。
度数为一的点为悬挂点。
无向完全图:在阶无向图中如果任何两点都有一条边关连则称此图是无向完全图。
Kn完全有向图:在阶有向图中如果任意两点都有方向相反的有向边相连则称此图为完全有向图。
竟赛图:阶图中如果其底图是无向完全图,则程此有向完全图是竟塞图。
注意!n阶有向完全图的边数为n的平方;无向完全图的边数为n(n-1)/2。
下面介召图两种操作:①删边:删去图中的某一条边但仍保留边的端点。
②删点:删去图中某一点以及与这点相连的所有边。
子图:删去一条边或一点剩下的图。
生成子图:只删边不删点。
主子图:图中删去一点所得的子图称的主子图。
补图:设为阶间单无向图,在中添加一些边后,可使成为阶完全图;由这些添加边和的个顶点构成的图称为的补图。
重要定理:定理5.1.1 设图G是具有n个顶点m条边的有向图,其中点集V={v,v, (v)deg+(vi)=deg-(vi)=m定理5.1.2 设图G是具有n个顶点m条边的无向图,其中点集V={v,v,v, (v)deg(vi)=2m推论在无向图中,度数为积数的顶点个数为偶数。
3最短路问题
)
T
(v4
)
1,
S1 S0 {v4} {v1, v4}, k 4
v1
v2
62 3 v3
1
v5 2
v9
6
6
10
3
3
v1
2
4 v8
4
v4
10
v6 2 v7
1 v4
i 1 : continued
(2) (v4 , v6 ) A且v6 S1
T (v6 ) T (v6 )
M p(v4 ) w46 110 11,
S0 {v1}, P(v1) 0, (v1) 0;T (vi ) ,
(vi ) M (i 2,3,...,9),k 1.
v2
(2)(v1, v2 ) A且v2 S0 6 2
T (v2 ) p(v1) w12 , v1
3 v3 2
同 T理(v2,) P(v1) w12 6,(v2 ) 1; v4
个顶点是vm; * λ(v) =M表示D中不含从vs到v的路; * λ(v) =0 表示v=vs.
2、最短路算法(Dijkstra算法)
(0)初始化:i=0,令S0={vs},P(vs)=0, λ(vs) =0,对 每一个v≠vs,令T(v)=+∞,λ(v) =M;k=s(当前点).
(1)判断:如果Si=V,算法终止。此时,对每个 v∈Si,d(vs,v)=P(v);否则转入(2).
1
v5 2
6
6
10 4 3
4
10
v6 2 v7
T (v3 ) p(v1) w13 T (v3 ) p(v1) w13 3,(v3 ) 1;
T(v4) p(v1) w14 T(v4) p(v1) w14 1,(v4) 1;
15.最短路问题及算法
5
6Biblioteka 37 4
迭 次
代 数
u0
l (u i )
u1
1
u2
2
2
u3
u4
7
7 7 6
6
u5
u6
u7
1 2 3 4 5 6 7 8 最后标记
l (v)
z (v )
0
4
3
9
9 9
9
4
4 4
4
8
8 8 8 6
6
0
u0
1
u0
2
u0
3
6
(k ) 表示从 vi 到 v j 且中间点仅为 v1, v2 ,, vk 的 k 个点的所有 dij
路径中的最短路的长度。
( ) ( ) 于是, D( ) (dij 就是从 vi 到 v j 的路径中间可 ) 中元素 dij
插入任何顶点的路径中最短路的长度, 即 D( ) 就是所求距离矩阵.
1) 赋权图中从给定点到其余顶点的最短路 最短路是一条路,且最短路的任一节也是最短路. 求下面赋权图中顶点u0到其余顶点的最短路.
假设G为赋权有向图或无向图,G边上的权均非 负.若 (u, v) E (G) ,则规定 w(u, v) .
Dijkstra算法:求G中从顶点u0到其余顶点的最短路 设G为赋权有向图或无向图,G边上的权均均非负.
最短路问题及算法
2011.5.11
最短路问题及算法
最短路问题是图论应用的基本问题,很多实际 问题,如线路的布设、运输安排、运输网络最小费 用流等问题,都可通过建立最短路问题模型来求解. •最短路的定义 •最短路问题的两种方法:Dijkstra和Floyd算法 . 1) 求赋权图中从给定点到其余顶点的最短路. 2) 求赋权图中任意两点间的最短路.
图论:最小树、最短路、最大流问题
(3,3)
(2)可增值链(增广链)
:中的正向弧集 D中由v 至v 的链,记 , :中的反向弧集 中弧皆未饱 若 ,则称为D中关于可行流f 的 中弧皆非零 一条可增值链。
v2 (3,3)
(4,3)
v4
(5,3) (1,1) (3,0) vs vt (1,1) (2,1) (5,1) v1 v3 (2,2)
例 2 求如图网络的最小部分树。
v2 2 v1 3 5 1 v4 5 v3 2 7 5 3 v5 v6 1 7 5 v7
2017/10/16
避圈法是一种选边的过程,其步骤如下:
1. 从网络D中任选一点vi,找出与vi相关联的 权最小的边[vi,vj],得第二个顶点vj; 2. 把顶点集V分为互补的两部分V1, V1 ,其中 V, 与已选边相关联的点集, V, 不与已选边相关联的点集;
8
9 7 6
5
9
E 2 D 3 F
3
2017/10/16
4
二. 最短路问题
1. 问题:求网络D中一定点v1到其它点的最短路。 例3 求如图网络中v1至v7的最短路,图中数字 为两点间距离。
v2
2
v1 3 5 1
v3
2
7 5 3
v6 1 7
5
v7
v5 5 2. 方法:标号法(Dijkstra,1959)
1 1
挑选其中与v 距最短(mind c )的v 进行标号。
1
1
1
4. 重复3,直至终点(本例即v )标上号[d ,v ],则
7 7
d 即最短距,反向追踪可求出最短路。
7
2017/10/16
用标号法解例3
最短路问题Dijkstra算法
迭
Dijkstra算法基本步骤:
代 Step 1: 开始,给vs以 P 标号,P(vs)=0, P T
1
其余各点给 T 标号 T(vi)=+∞.
计算实例求:连接 vs、vt 的最短路.
-∞
0-
vs
v1
2 27
-∞
5 v2 5
-∞
-∞
v4 5
vt
4 13
1 7
v3
4
v5
-∞
-∞
迭 Step 2: 若 vi 为刚得到 P 标号的点,考虑这样的点
T(v4)=min[T(v4),P(v1)+w14]= min[+∞,2+7]=9 (5) 全部 T 标号中,T(v2),T(v3)最小,令P(v2)=4, P(v3)=4,
记录路径(v1 ,v2), (v1 ,v4),. .…………
我们曾介绍了最短路问题的动态规划解法,但某 些最短路问题(如道路不能整齐分段者)构造动态规 划方程比较困准、而图论方法则比较有效。
有些最短路问题也可以求网络中某指定点到其余所 有结点的最短路、或求网络中任意两点间的最短路.
一、网络无负权的最短路 ——Dijkstra算法
本算法由Dijkstra于1959年提出,可用于求解指定 两点间的最短路,或从指定点到其余各点的最短 路,目前被认为是求无负权网络最短路问题的最 好方法。 算法的基本思路基于以下原理: 若序列vs ,v1 ,…,vn是从vs到vn的最短路, 则序列vs ,v1 ,…,vn-1必为从vs到vn-1的最短路。
4
v5
4-
7-
迭 Step 2: 若 vi 为刚得到 P 标号的点,考虑这样的点
代
图论与网络流问题的LINGO求解技巧
图论与网络流问题的LINGO 求解技巧我们介绍使用LINGO 求解图论与网络问题中的一些典型问题。
如最短路问题、最大流问题、关键路径问题、最优树问题,以及TSP 问题。
这里主要介绍使用LINGO 求解的方法,重在应用和解决问题。
1 最短路问题的Lingo 求解设图共有个节点,其赋权图的邻接矩阵为n n n w ×.ij w p =表示节点i 到j 的权值为.当为有向图时,p ji w w ij =;当为无向图时,和ij w ji w 分别由图得到,通常不一样。
当,表示节点i 与节点0ij w =j 不连通。
令0ii w =。
假设图的所有权值 0ij w ≥现求节点a 到节点b 的最短路,其线性规划模型为:模型一、决策变量:设1ij i j x i j ⎧=⎨⎩节点与节点连通节点与节点不连通目标函数为寻找一条节点到节点的通路,使其上权值和最小,故目标函数为:a b 11min .nnij ij i j Z w x ===∑∑1. 对节点恰有一条路出去,却不能有路回来,故有:a 11najj j ax=≠=∑ 且10nkak k a x=≠=∑2. 对节点恰有一条路到达,却不能有路出去,故有:b 11nkbk k bx=≠=∑ 且10nbjj j bx=≠=∑3. 对除起始点a 和目标点之外,其它点进入和出去的路是一样多(可都为0),则:b 11,nnkiijk j xx i a ===≠∑∑b4. 对不通的路不取,约束为:,1,2,ij ijx w i j ≤=L n总的线性规划模型为:11111111min .,10..10,1,2,,01n nij iji j nnki ijk j naj j j a n ka k k a n kb k k a nbj j j a ij ijijZ w x x x i a b x x s t x x x w i j x =====≠=≠=≠=≠=⎧=≠⎪⎪⎪=⎪⎪⎪⎪=⎪⎪⎪⎪=⎨⎪⎪⎪=⎪⎪⎪≤=⎪⎪=⎪⎪⎪⎩∑∑∑∑∑∑∑∑L 或n示例演示。
《图论》第4章 最优路径问题
[网络(赋权图)] 有向图 G=(V, A) 中,给每条边 a=<vi, vj> 赋予 一个实数权 w(vi, vj) ,得到一个有向网络。通常情况下 w(vi, vj) 0。(为简化问题的讨论,无特别声明情况下, 我们都假定 w(vi, vj) > 0。) [距离矩阵] 对上述网络,定义其距离矩阵 D=(dij)nn,n=|V|
i =1
40 25 10
40 25 5 20 20 10 20 80 20 65 50 25 50 35 55
10
4.3 求两点间最短距离的Warshall算法
[续1]
40 25 10
4.3 求两点间最短距离的Warshall算法
[表上作业法] 第 i 次外循环时,将第 i 行(基本行)分别“叠加”
到第 i 列的非元 dji(关键元素)对应的那些行 i, “叠加”
运算是一个比较运算: djk min{djk , dji + dik},k=1 ... n
55 40 25 5 20 40 20 10 20 25 20 10 25 55
55 60 40 25 25 5 15 25 20 25 10 20 40 20 30 40 25 30 40 35
12
4.3 求两点间最短距离的Warshall算法
[续3]
100 45 40 25 10
55 60 40 25 25 5 15 25 20 25 10 20 40 20 30 40 i =4 25 30 40 35
4
4.2 求最短距离的Dijkstra算法
赋权图上最短路径的一种简便算法
赋权图上最短路径的一种简便算法吴鹏【摘要】在不考虑负回路的前提下,给出了在含有负权的赋权图上求任意两点间最短路径的一种简便算法,此算法既适用于有向图又适用于无向图,并且可据此算法找到最短路径。
%Without the negative circle, the next article put forwards a simple algorithm to the shortest path problem of weighted graph between any two points. This algorithm applies to both the digraph and applied to undirected graphs, and we can find the shortest path through this algorithm.【期刊名称】《贵州师范大学学报(自然科学版)》【年(卷),期】2012(030)005【总页数】5页(P69-72,102)【关键词】赋权图;最短路径;矩阵-递推法;作差-筛选法【作者】吴鹏【作者单位】四川建筑职业技术学院计算机工程系,四川德阳618000【正文语种】中文【中图分类】TP301.6;O157.5图论是运筹学的一个重要分支,计算各点间的最短路径是图论中的一个重要内容,在计算机网络领域起着重要的作用。
Dijkstra算法[1]是研究单源路径问题中的一个经典的算法,它可以用来计算某个顶点到所有其他顶点的最短路径,但该算法不适用于含负值边权的问题。
继Dijkstra算法之后,随着对最短路径问题的深入研究,涌现出了越来越多的算法,如Floyd-Warshall、Bellman-Ford、Johnson、SPFA等算法,这些算法的出现不仅弥补了Dijkstra算法的不足,而且还提升了运算速度,并且更多的研究者基于上述的算法又给出了不同的改进形式,如改进标号法[2]、矩阵算法[3]、前趋法[4]等都是行之有效的好方法。
应用Dijkstra算法求赋权图最短路径
给出赋权图,如下图所示:应用Dijkstra 算法,求出顶点A到其它各点的最短距离,MATLAB源程序m文件清单如下:w=[0 1 inf 2 inf inf1 0 3 4 inf infinf 3 0 1 2 22 4 1 03 infinf inf 2 3 0 2inf inf 2 inf 2 0];%图的矩阵存储n=6;%顶点数目Result=inf(n-1,n+1);%保存寻找第一个顶点到其余顶点最短路径的中间结果for i=1:n-1Result(1,i)=w(1,i+1);endfor i=2:n-1ValMin=inf;IndMin=1;for j=1:n-1if ValMin>Result(i-1,j)ValMin=Result(i-1,j);IndMin=j;endendResult(i-1,n)=IndMin;Result(i-1,n+1)=ValMin;for j=1:n-1DelFlag=false;for k=1:i-1if j==Result(k,n)DelFlag=true;endif DelFlag==falseif Result(i-1,j)>Result(i-1,n+1)+w(Result(i-1,n)+1,j+1)Result(i,j)=Result(i-1,n+1)+w(Result(i-1,n)+1,j+1);elseResult(i,j)=Result(i-1,j);endendendendValMin=inf;IndMin=1;for j=1:n-1if ValMin>Result(n-1,j)ValMin=Result(n-1,j);IndMin=j;endendResult(n-1,n)=IndMin;Result(n-1,n+1)=ValMin;ValueRoute=inf(n-1,n);%保存用标号表示的第一个顶点到其余顶点的最短路径和最短距离for i=1:n-1j=1;while Result(j,n)~=ij=j+1;endIndRoute=n-1;ValueRoute(i,IndRoute)=Result(j,n);ValueRoute(i,n)=Result(j,n+1);ValMin=Result(j,n+1);IndMin=Result(j,n);IndRoute=IndRoute-1;while Result(j,n)>1j=j-1;if Result(j,IndMin)>ValMin;ValueRoute(i,IndRoute)=Result(j,n);IndRoute=IndRoute-1;ValMin=Result(j,n+1);IndMin=Result(j,n);endendendStringRoute.Route='A ';%结构StringRoute的Route域依次临时存储从第一个顶点到其余顶点的最短路径StringRoute.Distance=0;%结构StringRoute的Route域依次临时存储从第一个顶点到其余顶点的最短距离k=2;for i=1:n-1switch ValueRoute(1,i)StringRoute.Route(k)='B';k=k+1;case 2StringRoute.Route(k)='C';k=k+1;case 3StringRoute.Route(k)='D';k=k+1;case 4StringRoute.Route(k)='E';k=k+1;case 5StringRoute.Route(k)='F';k=k+1;otherwisecontinue;end%对于顶点数目不同并且顶点表示方式不同的图要相应修改CASE语句个数和分支语句endStringRoute.Distance=ValueRoute(1,n);CharRoute=[StringRoute];for j=2:n-1StringRoute.Route='A ';%结构StringRoute的Route域依次临时存储从第一个顶点到其余顶点的最短路径k=2;for i=1:n-1switch ValueRoute(j,i)case 1StringRoute.Route(k)='B';k=k+1;case 2StringRoute.Route(k)='C';k=k+1;case 3StringRoute.Route(k)='D';k=k+1;case 4StringRoute.Route(k)='E';k=k+1;case 5StringRoute.Route(k)='F';k=k+1;otherwisecontinue;end%对于顶点数目不同并且顶点表示方式不同的图要相应修改CASE语句个数和分支语句endStringRoute.Distance=ValueRoute(j,n);CharRoute=[CharRoute;StringRoute];endfprintf('A点到其余5个顶点的最短距离和最短路径如下:\n')for i=1:n-1disp(CharRoute(i))end。
图论dijkstra
赋权图的最短路算法 dijkstra算法
相关概念:
1.最短路是一条路径,且最短路的任一 段也是最短路.
2.我们考虑的是有向赋权图或者无向图, 假设G为赋权有向图或无向图,G边上 的权均非负。
赋权图的最短路算法 dijkstra算法
此时,开始第四轮迭代:
S {a, b,c,d,f}, S {e, g, z},u f dist[a] 0, dist[b] 1, dist[c] 3, dist[d ] 4, dist[ f ] 6 dist[e] min{dist[e], dist[u] w(u,e)} min{9,8} 8 dist[g] min{dist[g], dist[u] w(u, g)} min{8,12} 8 dist[z] min{dist[z], dist[u] w(u, z)} min{,10} ; prev[e] u f , prev[ f ] prev[g] c, prev[c] b; prev[b] prev[d] a; prev[z] f 此时a e道路被更新为a b c f e a z道路被更新为a b c f z 并且当前S中最短的dist是dist[e] 8,则a e的最短路已经确定即是a b c f e 下一轮迭代时,S {g,z}
赋权图的最短路算法 dijkstra算法
很多同学肯定是一头雾水吧,为了加强同学们对算法的理解,我们手动来走一遍流 程:
赋权图的最短通路4-10
1、赋权图 设G=(V,E)是有限图,如果对E中的每一条边e, 都有一个实数W(e)附着其上,则称G为赋权图,则称 W(e)为边e的权.
a
例 右图就是一个赋权图.
a
14
a
12
a
b 13 c
d a
a
9
d a
a
d a
e
a
7
d
a
10
d
a
5
d
a
a
6a
d a
8
d a
a
11
d a
d
a
1
对于赋权图 G=(V,E),规定:
16
17
18
19
当我们比较熟练地掌握了狄克斯特洛算法后, 可用列表法来求最短路,它使求解过程显得十分 简洁.下面以一例来介绍此法. 例 求右图中a到z的最短路及其长度
20
方法: (1)先把T1=V-{a}中的点写在第一行上,把这些点 关于a的权相应地写在第二行上,并圈出其中最小 者b,相应值为1. (2)令T2=T1-{b},在第三行上先标出T1中与b不邻接 的点d,e,g,h, i, z,对于S1中与b 邻接的点c,f, 则用1+W(b,c),1+ W(b,f)与第二行c,f的值10与∞ 比较,然后取最小者写在第三行的相应位置,并圈出 最小点e及相应值3. (3)令T3=T2-{e},并其上的点写在第4行上,重复(2). 如此继续下去,直至z成为某个目标集的最小值为止.
21
(4)由表可得最短路的长度为15.要得到最短路,
可以用逆向检查法:从Z开始,往上检查,直止 z的值发生变化为止,在此行中找到最小者,然 后由此最小者开始往上检查,直止发生变化, 在此行中找最小者,重复这一过程直止到a为止. 最后倒着把最小者所对应的点写成序列,此序列 即为最短路.
矩阵方法求赋权图中最短路的算法
矩阵方法求赋权图中最短路的算法
张蕾
【期刊名称】《西北大学学报(自然科学版)》
【年(卷),期】2004(034)005
【摘要】目的给出一些计算赋权图中任意两个节点之间最短路的算法.方法利用矩阵方法.结果给出了赋权图中任意两点之间最短路的算法;任意两点之间在含有最少边数情况下的最短路算法;赋权图中的所有最短路算法,以及前N条最短路的算法.结论所研究的算法解决了传统算法的某些不足,因基于矩阵运算,程序设计简单,实用性强.
【总页数】4页(P527-530)
【作者】张蕾
【作者单位】西北大学,计算机科学系,陕西,西安,710069
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.一种在赋权图中实现Dijkstra算法的矩阵方法 [J], 刘海涛
2.赋权图上最短路径的一种简便算法 [J], 吴鹏
3.求无向赋权图最小生成树的两种算法的探讨 [J], 吴陈;苏勇;杨宏林;聂桂军;於跃成;陈楠
4.基于矩阵的求最短路的逐次逼近算法及MATLAB实现 [J], 李伟鹏
5.求赋权图上最小树的两个算法 [J], 叶祥企
因版权原因,仅展示原文概要,查看原文内容请购买。
赋权有向图最短路问题的新解法——前趋法
赋权有向图最短路问题的新解法——前趋法
安凯;郑亚林;邱祖廉
【期刊名称】《河北师范大学学报:自然科学版》
【年(卷),期】2000(24)1
【摘要】Dijkstra算法被公认为解决最短路问题的最好算法 ,但它的缺陷之一是不能解决存在负权的最短路问题 .一种解决这类问题的新方法——前趋法可弥补Dijkstra算法的这一缺陷 .实例表明。
【总页数】2页(P23-24)
【关键词】赋权有向图;最短路问题;Dijkstra算法;前趋法
【作者】安凯;郑亚林;邱祖廉
【作者单位】西安交通大学自动控制系
【正文语种】中文
【中图分类】O157.5;O224
【相关文献】
1.简单赋权图最短路问题的一种新解法 [J], 张建业
2.赋权多阶段有向图最短路的求法 [J], 吴雨荣;李步军
3.基于极小代数赋权有向图最短路径求解算法 [J], 李彦平;魏昆;王丹;谭清化
4.带负权最短路问题前趋法的改进 [J], 孙小军;王志强
5.含负权有向图最短路问题的一种新算法 [J], 王欣
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
赋权图的最短路与关键路的算法与实现摘要:图形是由点和线构成的集合.赋权图的最短路就是任意两个节点之间的权值之和最小的路径.最短路不仅仅指一般地理意义上的距离最短,还可以引申到其它的度量, 如时间、费用、线路容量等.本文介绍了如何求最短路的有效算法: Dijkstra算法.它能求出赋权图的任何两个节点之间权值之和的最小路径. 关键路径通常总是决定项目工期的进度活动序列.它是项目中从发点到收点的最长路径.关键路径法(Critical Path Method,CPM)是一种通过分析哪个活动序列(哪条路线)进度安排的总时差最少来预测项目工期的一门网络分析技术.关键路径法,能推算出项目的最短完成时间和项目各项活动的可能开始和结束时间.关键词: 图的邻接矩阵; 最短路径; Dijkstra算法; 关键路径The algorithm and implementation of the ShortestPath and the Critical PathAbstract: Graphics are constituted by the sets of points and lines. The shortest path of the weighted graph is the minimum sum of the weight between any two vertices. The shortest path not only refers to the shortest distance, but also can be extended to other metrics, such as time, cost, line capacity and so on. Dijkstra’s algorithm was the most efficient algorithm for how to find the Shortest Path of weighted graph, which is studied in this paper. Dijkstra’s algorithm was used to calculate the minimum value of weighted graph between any two vertices. The critical path is usually used to obtain the progress of the project in activities. It is the longest path of a project from the starting point to the ending point. The critical path method (Critical Path Method, CPM) which analysis a sequence of the least time in activities or predict (which route) the schedule better. The critical path method can be used to calculate the shortest completion time, starting and ending times in project activities.Keywords: Adjacency matrix of the graph; The Shortest Path; Dijkstra’s algorithm; The Critical Path目录第一章绪论 (1)1.1 课题的背景 (1)1.2 课题的目的 (1)1.3 课题的国内外研究状况 (1)1.4 课题的意义和研究方法 (1)1.5 课题的构成及主要研究内容 (2)第二章基础知识 (2)2.1 集合的概述 (2)2.2 图论基础 (3)第三章赋权图最短路的算法与应用 (9)3.1 最短路的概念 (9)3.2 最短路算法 (9)3.3 Dijkstra算法 (10)3.4 赋权图最短路算法在舰船通道路线设计中的应用 (13)第四章关键路径法与应用 (15)4.1 关键路径法的基本原理 (15)4.2 网络计划的特点 (16)4.3 网络计划的分类 (17)4.4 网络计划关键路径的应用 (17)4.4.1 搭接网络计划示例 (17)4.4.2 搭接网络中的连接关系 (18)4.4.3 搭接网络计划的时间参数计算示例 (18)第五章网络计划优化 (24)5.1 工期优化 (24)5.1.1 工期优化的计算步骤 (24)5.1.2 宜缩短持续时间的关键工作的选择 (24)5.1.3 按要求工期优化网络计划的方法 (24)5.1.4 工期优化示例 (26)5.2 资源优化 (27)5.2.1 资源优化的种类 (27)5.2.2 资源优化的原则 (28)5.3工期费用优化 (29)5.3.1 工期与成本的关系 (29)5.3.2 工期与成本优化示例 (32)总结 (37)参考文献 (38)致谢 (39)附录A (40)附录B (45)第一章绪论1.1 课题的背景当前社会发展迅猛, 人们为了顺应时代的发展, 对于实际问题在认识并处理的过程中, 探索到的解决问题的办法. 像在求解网络图上节点间最短路径, 工程进度计划的问题等. 所以我们提出了这一课题的研究. 特别是通过光纤网络经过十几年的高速建设与发展, 网络的规模越来越大, 业务也越来越丰富, 网络建设已趋向成熟. 在这种背景下, 光纤网络资源的管理问题也就迫在眉睫了. 因此对应我们找到了解决问题的正确并且方便的答案. 而且现在的理论依据已经日趋完善, 也为了符合的当前的形势. 所以提出了这一课题.1.2 课题的目的为了解决当前社会活动过程中的现实问题. 运用先进的计算机手段, 实现从工程规划设计到资源管理的全面图形化、可视化管理,并提供多层面的网络性能分析与优化手段. 利用其从多个角度对最短路径算法进行联合优化. 生产出有便携式GPS导航设备是集嵌入式技术、全球定位系统GPS、地理信息系统GIS、智能交通系统ITS、计算机科学技术、多媒体技术和现代通信技术于一体的高科技产品.1.3 课题的国内外研究状况现在国内外研究依然很热, 像基于AOE网络的关键路径方法研究, 主要用于数字技术研究方向. 用关键路径法在挣值分析方法的研究, 资源约束的扩展关键路径法的研究. 在全球定位系统GPS导航方向的研究. 基于蚁群算法的最短路径搜索方法研究. 公交换乘最短路径算法研究, 基于GIS最短路径算法研究. 随机时间依赖网络的K期望寿命最短路径算法研究. 而在此我们主要研究的是图的最短路径和关键路径一系列问题. 建设项目管理是每个项目者所关心的重要内容之一. 就工程项目建设而言, 项目管理贯穿于项目建设的全过程. 关键路径法自20世纪60年代传入中国后, 在生产中得到了应用,它符合工程施工的要求,特别适用于工程管理. 从国内外的情况看, 应用这种方法最多的是工程施工单位. 同国外发达国家相比, 目前我国在理论水平与应用方面相差无几, 但在应用管理上, 基本上停留在计划的编制上. 因此, 提高关键路径法在工程项目管理中的应用显得尤为重要.1.4 课题的意义和研究方法研究无线传感器网络中单、多跳通信方式的能耗规律, 结合Dijkstra最短路径递增的思想形成最小能耗路径拓扑的生成规则, 建立了一种基于最短路径树的拓扑结构模型, 获得了每个节点到目的节点的最小能耗路径.从多个角度对最短路径算法进行联合优化.生产出有便携式GPS导航设备是集嵌入式技术、全球定位系统GPS、地理信息系统GIS、智能交通系统ITS、计算机科学技术、多媒体技术和现代通信技术于一体的高科技产品.以电信光纤网络管理为核心, 运用先进的计算机手段, 实现从工程规划设计到资源管理的全面图形化、可视化管理, 并提供多层面的网络性能分析与优化手段.在求解网络图上节点间最短路径的方法中, 目前国内外一致公认的较好算法有迪杰斯特拉(Dijkstra)算法. 这种算法中, 网络被抽象为一个图论中定义的有向或无向图, 并利用图的节点邻接矩阵记录点间的关联信息. 在进行图的遍历以搜索最短路径时, 以该矩阵为基础不断进行目标值的最小性判别, 直到获得最后的优化路径. Dijkstra算法是图论中确定最短路的基本方法, 也是其它算法的基础. 为了求出赋权图中任意两结点之间的最短路径, 通常采用这种方法, 是每次以一个结点为源点, 重复执行Dijkstra算法n次.使用关键路径法(Critical Path Method,CPM)是一种通过分析哪个活动序列(哪条路线)进度安排的灵活性(总时差)最少来预测项目工期的网络分析技术. 具体而言, 该方法依赖于项目网络图和活动持续时间估计, 通过正推法计算活动的最早时间,通过逆推法计算活动的最迟时间, 在此基础上确定关键路线, 并对关键路线进行调整和优化, 从而使项目工期最短, 使项目进度计划最优.1.5 课题的构成及主要研究内容这篇论文可以进行如下的构成:第一章由绪论引入是开端, 包括毕业设计(论文)课题的背景及目的、国内外研究状况、课题的意义、研究方法、理论依据和具备的条件、毕业设计(论文)课题的构成及主要研究内容等.第二章简明扼要的概述了集合的相关理论以及图论的一些相关知识.第三章介绍图论中的最短路算法和应用.第四章介绍了关键路径法以及它的一些应用实例等内容.第五章着重介绍了网络计划的优化的三个方面:(1) 在现有条件的限制下,求工期最短;(2) 在规定的工期内,要求资源最均衡;(3) 加快工期而费用最少.第二章基础知识2.1 集合的概述定义1 集合用于对象在一起的组. 一般情况下,是一组有相似的性质对象. 一个无序的一组对象我们定义为集合A, 其中的对象称为元素或集合的成员. 用a∈A来表示元素a是集合A当中的元素. 用a∉A表示元素a不是集合A当中的元素.集合一般是使用大写字母来表示. 小写字母通常用来表示元素的集合. 有多种方法来描述集合:列举法、维恩图、描述法等. 但是最常采用的是列举法和维恩图方法. 例如: 元音字母在英文字母可以写成集合V = { a, e, i, o, u }. 通过维恩图来表示集合之间的关系的. 如下例:例2.1 画一维恩图用V表示, 在英文字母中集合用元音字母.解我们绘制一个矩形来表示通用集U, 这是组26个英文字母. 在这个矩形中我们画一个圆代表V. 在这个圈子, 我们指示V点为元音字母元素(见图1).图2-1维恩图元音集合定义2 一个集合A是另一个集合B的子集; 当且仅当A的每个元素也是B的元素. 我们使用符号A⊆B表示B集合的子集A.当A⊆B时,有对于∀x(x∈A→x∈B)是正确的. 若A不是B的子集, 我们只需要找到一个元素x∈A与x∉B , 举出这样的一个x反例来. 我们有这样一个有用的规则可以决定是否有一个集合是另一个集合的子集.在集合相关领域我们介绍很少, 是因为我们会用到一些相关的知识, 其次主要也是为后续的问题引线和做铺垫. 有了这些前期的相关的储备知识, 我们就要进一步来研究图论当中的基本概念.2.2 图论基础定义1 设V和E是两个有限非空集合, V中的元素叫做节点(或顶点), E中的元素叫做边, 且E中的每一条边恰好与V中的两个节点相对应, 就称G = (V,E)是一个图.如下图2-2:图2-2定义2 若G = (V, E)是一个图, 若E中的每条边所对应的两个节点没有次序之分, 则称为无向图(如图2-2); 若E中的每条边所对应的两个节点有次序之分, 则称该图为有向图. 如下图2-3:图2-3注意:一般用小圆点或小圆圈表示节点, 用节点对连线表示边, 节点的位置和连线的曲直及长短是无关的.在无向图中, 若边e与节点(a, b)对应, 则称e与节点a关联, 同样, e与b关联. 若节点a和b之间有边连接, 则称节点a与b相邻, 否则不相邻. 若两条边关联一个共同的节点, 则称这两个边相邻, 否则, 若两条边不同时与任何一个节点关联, 则称这两个边不相邻. 有向图类似.定义3 关联同一个节点的边叫做自环. 在图2-3中, 像a, c, e都有自环.定义4 不与任何节点相邻的节点称为孤立点. 如图2-3, 点f就是孤立点.定义5 只与一条边关联的节点称为悬挂点. 如图2-4中的d点.图2-4定义6 如果顶点个数V 与边的条数E 都是有限的, 图G 就是有限图. 如果V =1, E =0,图G 称为平凡图. 这种仅含一个孤立点的图是有限图的特例. 如果V 或E 是无限的, 图G 称为无限图.定义7 如果一个图没有自环, 并且每两个顶点之间最多只有一条边, 这样的图称为简单图. 如图2-5:图2-5定义8 设图G = (V , E ), i v V , 其中的所有边都在E 当中. i=1,2,3, ……p , 所有边与节点i v 与j v 关联. 而且顶点和边交替出现, 将这样的一个交替序列称为路.图2-6如图2-6中a-b-d-c 就是一条路.定义10 若从起始节点出发结束到起始结点, 称这条路为回路或圈.如图2-6中a-b-d-c-a 就是一条回路.定义11 如果图G 中任意节点u 到任意节点v 都是有路相连的, 则称G 为连通图, 否则是非连通图. 如图2-7:图2-7定义12 一个没有重边的图用一种方法将图的边可以一一列出来; 另一种方式是使用邻接矩阵. 假设G = (V , E )是一个简单的图, |V | = n. 假设v 1,v 2 ,……,v n 作为G 的任意顶点, G 的邻接矩阵就是这个图的边的顶点, 所构成的矩阵(n ×n )的(0 - 1)矩阵. 当v i 和v j 是相邻的时候, 矩阵对应位置的值为1, 当它们不相邻时候, 对应值为0. 换句话说, 如果其邻接矩阵是一个A n ×n =[ij a ], 那么()()()⎩⎨⎧=其它相邻如果 0, 1j i ij v v a 例2.2 用邻接矩阵来表示如图2-8.图2-8解 顶点为a , b , c , d. 这个图的邻接矩阵是:定义13 若图G=(V , E )中各边e 都赋有一个实数W (e ), W (e )是一个实数集, W 中的每个数与E 中的一个边相对应, W (e )对应的实数称为边e 的权, 这个图则称这种图为赋权图, 记为G = G (V , E , W ). 如图2-9:图2-9若图G =(V ,E )是一个赋权图, 且W (e )≥ 0,e ∈E (G ), 若μ是v i 到v j 的路,()()i i e W W e μμ∈=∑的权, 则称()W μ为μ的长, 长度最小的v i 到v j 的路L 称为最短路.例2.3 如图2-10,求a 到z 的最短路.图2-10解 a 到z 的路径有a -b -d -z ,路长为2+5+2=9;a -b -e -z ,路长为2+2+4=8;a -c -e -z ,路长为3+5+4=12;a -b -e -d -z ,路长为2+1+4=7;a -c-e -d -z ,路长为3+5+1+2=13. 所以,a 到z 的最短路径是a -b -e -d -z . 距离是7.定义15 设G = (V , E , W )是有向带权图, 当G 满足以下四个条件时, 称G 为PERT 图, (1) G 是简单图; (2)G 中无回路; (3) G 有一个节点的入度为0, 称此节点为发点, 有一个节点的出度为0, 称此节点为收点; (4) 边<i v , j v >的权值为t (i , j ), 该权值常表示时间.在工程技术中, PERT 图中的边边<i v , j v >常表示一道工序, 对应的权值表示完成该工作需要的时间, 并称i v 为j v 的紧前节点.定义16 对于PERT 图, 从发点(记为1v )开始到达任一节点i v 的最长路径(按权计算)的长度称为节点i v 的最早完成时间, 记作()i t E . 显然()1E t = 0, 当j ≠1时()()(){}j i t i t i t E iE ,max +=, 式中求最大值是对节点j v 的所有紧前节点i v 进行的.总之有: ()1E t = 0和 ()()(){}j i t i t i t E iE ,max +=.定义17 对于PERT 图, 称从发点1v 到收点n v 的最长路径为关键路径, 而关键路径的长度称为收点n v 的最早完成时间.定义18 对于PERT 图, 在保证收点n v 的最早完成时间不增加的条件下, 自1v 最迟到达i v 的时间称为i v 的最晚完成时间, 记作()i t L . 显然()()n t n t L E = , 当j ≠1 时总之有()()(){}j i t j t i t L L ,min -=, ()总工期=n t L .定义19 对于PERT 图, 各节点的最晚完成时间与最早完成时间之差称为该节点的缓冲时间, 即()()i t i t E L -, i = 1, 2, 3, …, n第三章 赋权图最短路的算法与应用3.1 最短路的概念上一章节一些预备知识进行了介绍. 下面着重讲述最短路相关知识.图G = (V , E )中各边e 都赋有一个实数W (e ), 称为边e 的权, 则称这种图为赋权图,记为G = G (V , E , W ).若图G =(V ,E )是一个赋权图, 且W (e )≥ 0,e ∈E (G ), 若μ是v i 到v j 的路,()()i i e W W e μμ∈=∑的权, 则称()W μ为μ的长, 长度最小的v i 到v j 的路L 称为最短路.3.2 最短路算法对于无向图我们可以用动态规划的方法来解决这一类问题. 1、可以将全过程求解分为若干阶段求解; ------多阶段决策问题 2、在全过程最短路径中, 将会出现阶段的最优路径; -----递推性 3、前面的终点确定, 后面的路径也就确定了, 且与前面的路径(如何找到 这个终点)无关; -----无后效性4、逐段地求解最优路径,势必会找到一个全过程最优路径. -----动态规划 多阶段决策问题中, 常见的目标函数形式之一是取各阶段效应之和的形式. 例3.1 利用动态规划求解图3-1的最短路问题:最短路的求解:阶段: 可分为4个阶段, k = 1, ..., 4.状态: 可用城市编号, S1={Q}, S2={A1, A2, A3}, S3={B1, B2, B3}, S4={C1,C2}, S5={T }决策: 决策变量也可用城市编号; 状态转移方程: k k x s =+1 阶段指标函数:()k k x s k k k c x s v =,过程指标(阶段递推)函数:()()(){}1*1*,min +++=k k k k k k k s f x s v s f因为无向图也可以看做双向图, 所以对于有向图求最短路, Dijkstra 算法更有效.3.3 Dijkstra 算法1 最优化原则:整体最优, 则部分最优.反之未必. 如图3-2:图3-2如果求出了从a 到z 的最短距离, 必然可以知道a 到每一个点的最短距离. 2 基本原理V =S ⋃T , S={x|a 到x 的已知最短路} T ={y |a 到y 的未知最短距离}开始S ={a }, T=V -S. 把T 中的到a 距离最短的点找出来, 放到S 中, 逐步进行下去,直到S=V , T=Ø为止.3 Dijkstra 算法基本步骤:令:{}{}n i v v v T i v S ,,, ,1 ,32 ===,()⎩⎨⎧∈∞==T v v T v W j j ,0)(1先取()10W v =意即1v 到1v 的距离为0, 而()j T v 是对()j T v 所赋的初值. (1). 对T v j ∈, 求()(){}()min ,j i ij j T v W v w T v +=.利用()1W v 已知, 根据()(){}min ,j i ij T v W v w +对()j T v 进行修正.(2). 求(){},min j Sv v T j ∈得()k v T , 使()k v T =(){},min j S v v T j ∈令()()k k W v T v =. 对所有修正后的()j T v 求出其最小者()k T v . 其对应的点k v 是1v 所能一步到达的点j v 中最近的一个, 由于所有()0W u ≥. 因此任何从其它点j v 中转而到达k v 的通路上的距离都大于1v 直接到k v 的距离()k T v , 因此()k T v 就是1v 到k v 的最短距离, 所以在算法中令()()k k W v T v =并从s 中删去k v , 若k =n 则()()k n W v W v =就是1v 到n v 的最短路线, 计算结束. 否则令i k v v =回到第二步, 继续运算, 直到k =n 为止.(3). 若k n v v =则已找到1v 到n v 的最短路距离,()k W v 否则令i k =从T 中删去i v 转1.这样每一次迭代, 得到1v 到一点k v 的最短距离, 重复上述过程直到k n v v =. 例3.2 最短路在运输网络中的应用实例: 设6个城市126,,,v v v 之间的一个公路网(图3-3)每条公路为图中的边, 边上的权数表示该段公路的长度(单位:百公里), 设你处在城市1v , 那么从1v 到6v 应选择哪一路径使你的费用最省.图3-3解 首先设每百公里所用费用相同, 求1v 到6v 的费用最少, 既求1v 到6v 的最短路线.为了方便计算, 先作出该网络的距离矩阵, 如下:1234561234560525015921081058025910202520v v v v v v v v L v v v v ⎡⎤⎢⎥∞∞∞⎢⎥⎢⎥∞⎢⎥=∞⎢⎥⎢⎥∞⎢⎥∞⎢⎥⎢⎥∞∞∞⎣⎦(0)设()(){}654321,,,, , ,0v v v v v T v v T v W j =∈∞== (1)第一次迭代①计算(),2,3,4,5,6j T v j =如下()()(){}{}22112min ,min ,055T v T v W v w =+=∞+= ()()(){}{}33113min ,min ,022T v T v W v w =+=∞+=()()(){}{}44114min ,min ,0T v T v W v w =+=∞+∞=∞()()56,T v T v =∞=∞②取(){}()32min v T v T j Tv j ==∈, 令()()332W v T v ==③由于()36k n =≠=, 令{}6542,,,v v v v T =, i =3转(1) 第二次迭代:①算(),2,4,5,6j T v j =如下()()(){}{}22323min ,min 5,213T v T v W v w =+=+= ()()(){}{}44334min ,min 8,288T v T v W v w =+=+= ()()(){}{}55335min ,min 10,21010T v T v W v w =+=+= ()()(){}{}66336min ,min ,2T v T v W v w =+=∞+∞=∞ ②取(){}()23min v T v T j Tv j ==∈令()()223W v T v ==③由于()26k n =≠=, 令{}654,,v v v T =, i =2转(1) 第三次迭代:①算(),4,5,6j T v j =如下()()(){}{}44224min ,min 8,358T v T v W v w =+=+= ()()(){}{}55225min ,min 10,3910T v T v W v w =+=+=()6T v =∞②取(){}(),8min 4v T v T j Tv j ==∈ ()()844==v T v W ③由于()46k n =≠=, 令{}4 ,,65==i v v T 转(1) 第四次迭代:①算(),5,6j T v j =如下()()(){}{}55445min ,min 10,2810T v T v W v w =+=+=()()(){}{}66446min ,min ,8513T v T v W v w =+=∞+=②取(){}(),10min 5v T v T j Tv j ==∈ ()()1055==v T v W③由于()56k n =≠=, 令{}6v T =转(1)第五次迭代:①算(),6j T v j =如下()()(){}{}66556min ,min 13,10212T v T v W v w =+=+=②由于6k n ==. 因此已找到1v 到6v 的最短距离为12. 计算结束.找最短路线: 逆向追踪得132456v v v v v v →→→→→.最短距离为12, 即从城市1v 到城市6v 的距离最短, 即费用最省.3.4 赋权图最短路算法在舰船通道路线设计中的应用利用图论的经典理论和人群流量理论研究舰船人员通道路线的优化设计及最优线路选择. 首先介绍图论相关理论, 对船舶通道进行路网抽象, 建立网络图,然后根据人群流动的相关理论, 选取不同拥挤情况下的人员移动速度, 从而确定各条路段(包括楼梯)的行程时间. 以行程时间作为通道网络的路权, 得出路阻矩阵以选择一对起点/终点的最短时间路线为目标, 建立最短路径问题的数学模型, 利用经典的算法确定最短路径. 将此方法应用于某舰艇多层甲板的通道网络中, 计算结果并进行讨论, 最后在此研究的基础上对通道设计相关问题的深化和拓展进行了探讨和总结, 并提出设想.路线优化技术通常采用图论中的“图”来表示路网, 船舶通道路网与图论的路网对应关系为: 结点—通道的交叉口或断头路的终点; 边—两结点之间的路段称为边, 若规定了路段的方向, 则称为弧; 边(弧)的权—路段某个或某些特征属性的量化表示.路权的标定决定了最短的路径搜索依据, 也就是搜索指标. 根据不同的最优目标, 可以选择不同的路段属性, 由于舰船上除了平面上的通道之外还有垂直方向的楼梯(或直梯), 如果以最短路程距离作为优化目标, 路线的效率未必最高(距离最短未必耗时最少). 所以以最短行程时间作为优化的目标, 道路权重即为各路段的平均行程时间.对于要研究的对象, 取各条通道的起点(或终点)和交叉点为图的顶点, 各路段为边, 路权为路段行走的平均时间. 寻找从起点到终点的最短时间路径即为最优路径. 在规定了结点、边和权值以后, 便将路网抽象为一个赋权无向图或赋权有向图, 从而确定路网中某两地间的最优路线便转化为图论中的最短路径问题.首先将空间问题抽象为图, 图3-4为某舰的两层甲板的部分抽象图, 上下两个平面上纵横交错的直线为各层甲板的主要通道, 连接两层甲板的直线表示楼梯,包括2个直梯和3个斜梯.每条路段上的标注(),a b中, a表示路段实际长度或者楼梯的类型, b表示此路段的行程时间(即路权), 例如(40, 32). 图3-5为图3-4对应的赋权图.图3-4两层甲板的部分抽象图图3-5赋权图再利用上述求最短的方法即可求得需要的通道路线.第四章 关键路径法与应用4.1 关键路径法的基本原理定义1 设G = (V , E , W )是有向带权图, 当G 满足以下四个条件时, 称G 为PERT 图, (1) G 是简单图; (2) G 中无回路; (3) G 有一个节点的入度为0, 称此节点为发点, 有一个节点的出度为0, 称此节点为收点; (4) 边<i v , j v >的权值为t (i ,j ), 该权值常表示时间.在工程技术中, PERT 图中的边边<i v , j v >常表示一道工序, 对应的权值表示完成该工作需要的时间, 并称i v 为j v 的紧前节点.定义2 对于PERT 图, 从发点(记为1v )开始到达任一节点i v 的最长路径(按权计算)的长度称为节点i v 的最早完成时间, 记作()i t E . 显然()1E t = 0, 当j ≠1时()()(){}j i t i t i t E iE ,max +=, 式中求最大值是对节点j v 的所有紧前节点i v 进行的. 总之有: ()1E t = 0和 ()()(){}j i t i t i t E iE ,max +=. 定义3 对于PERT 图, 称从发点1v 到收点n v 的最长路径为关键路径, 而关键路径的长度称为收点n v 的最早完成时间.定义4 对于PERT 图, 在保证收点n v 的最早完成时间不增加的条件下, 自1v 最迟到达i v 的时间称为i v 的最晚完成时间, 记作()i t L . 显然()()n t n t L E = , 当j ≠ 1 时总之有()()(){}j i t j t i t L L ,min -=, ()总工期=n t L .定义5 对于PERT 图, 各节点的最晚完成时间与最早完成时间之差称为该节点的缓冲时间, 即()()i t i t E L -, i = 1, 2, 3, …, n关键路径法(Critical Path Method,CPM)是一种通过分析哪个活动序列(哪条路线)进度安排的灵活性(总时差)最少来预测项目工期的网络分析技术. 具体而言,该方法依赖于项目网络图和活动持续时间估计, 通过正推法计算活动的最早时间, 通过逆推法计算活动的最迟时间, 在此基础上确定关键路线, 并对关键路线进行调整和优化, 从而使项目工期最短, 使项目进度计划最优.关键路径法的关键是确定项目网络图的关键路线, 这一工作需要依赖于活动清单、项目网络图及活动持续时间估计等, 采用手工计算, 可以遵循以下步骤:(1) 把所有的项目活动及活动的持续时间估计反映到一张工作表中;(2) 计算每项活动的最早开始时间和最早结束时间, 计算公式为EF=ES+活动持续时间估计;(3) 计算每项活动的最迟结束时间和最迟开始时间, 计算公式为LS=LF-活动持续时间估计;(4) 计算每项活动的总时差, 计算公式为TS=LS-ES=LF-EF;(5) 找出总时差最小的活动, 这些活动就构成关键路线.总而言之, 网络计划的基本原理是:首先绘制拟建工程施工进度网络图, 用以表达一项计划中各项工作的开展顺序及其相互之间逻辑关系; 然后通过对网络计划时间参数进行计算, 找出网络计划关键工作和关键线路; 再按选定的工期、成本或资源等不同目标, 对网络计划进行调整、改善和优化处理, 选择最优方案; 最后在网络计划的执行过程中, 对其进行有效的控制与监督, 以确保拟建工程施工按网络计划确定的目标和要求顺利完成.4.2 网络计划的特点网络计划具有以下主要特点:(1) 网络计划能够明确表达各项工作之间的逻辑关系. 所谓逻辑关系, 是指各项工作之间的先后顺序关系. 网络计划能够明确地表达各项工作之间的逻辑关系, 对于分析各项工作之间的相互影响及处理它们之间的协作关系具有非常重要的意义.(2) 通过网络计划时间参数的计算, 可以找出关键线路和关键工作. 在关键线路法(CPM)中, 关键线路是指在网络计划中从起点节点开始, 沿箭线方向通过一系列箭线与节点, 最后到达终点节点为止所形成的通路上所有工作持续时间总和最大的线路. 关键线路上各项工作持续时间总和即为网络计划的工期, 关键线路上的工作就是关键工作, 关键工作的进度将直接影响到网络计划的工期. 通过时间参数的计算, 能够明确网络计划中的关键线路和关键工作, 也就明确了工程进度控制中的工作重点, 这对提高建设工程进度控制的效果具有非常重要的意义.(3) 通过网络计划时间参数的计算, 可以明确各项工作的机动时间, 又称时差. 所谓工作的机动时间, 是指在执行进度计划时除完成任务所必需的时间外尚剩余的、可供利用的富余时间. 在一般情况下, 除关键工作外, 其他各项非关键工。