运筹学_最短路问题精品PPT课件
合集下载
《最短路问题》课件

3 最短路问题的历史
渊源
最短路问题最早由荷兰 数学家 Edsger Dijkstra 在 1956 年提出。
最短路问题的定义
图论中的最短路问 题指什么?
在无向连通图或有向连通图 中,从某一起点到其余各顶 点的最短路径。
什么是路径长度?
路径长度是指路径上边或弧 的权值之和。
什么是无环图?
无环图指不存在环的图,可 以用拓扑排序求解最短路。
《最短路问题》PPT课件
欢迎来到最短路问题的世界。在本课件中,我们将介绍四种最短路算法及其 应用,并分析它们的优缺点。
问题背景
1 什么是最短路问题? 2 为什么需要解决最
短路问题?
最短路问题是计算从源 节点到目标节点的最短 路径的问题。它是图论 中的一个经典算法问题。
很多实际问题都涉及到 最短路径的计算,比如 电网、交通、通信等领 域。
Floyd-Warshall算法解决的是所有点对之间 的最短路径问题,可以处理有向图或负边权 图。
Bellman-Ford算法
Bellman-Ford算法解决的是有向图中含有负 权边的单源最短路径问题。
A*算法
A*算法综合了贪心和广度优先搜索,在启发 函数的帮助下,可以高效解决带权图上的单 源最短路径问题。
算法示例
1
Step 1
假设我们要求从 A 点到其他各点的最
Step 2
2
短路径。
首先初始化 A 点到其他各点的距离为
无穷大,A 点到自身的距离为 0。
3
Step 3
找到 A 点的直接邻居,更新其距离值。
Step 4
4
重复 Step 3,直到所有节点的距离值 都已经更新。
总结
运筹学课件 最短路、最大流、邮路

第i年 价格 ai 使用寿命 费用 bi 1 11 0-1 b1 5 2 11 1-2 b2 6 3 12 2-3 b3 8 4 12 3-4 b4 11 5 13 4-5 b5 18
最短路径问题的应用
例 设备更新问题
把求总费用最小问题化为最短路径问题。用点 i (i=1,2,3,4,5)表示第 i 年买进一台新 设备。增设一点 6 表示第五年末。从i点到i+1,……, 6 各画一条弧,弧(i , j)表示在 第 i 年买进的设备一直使用到第 j 年年初(第 j -1年年末)。求1点到6点的最短路径。 路径的权数为购买和维修费用。 弧(i , j)的权数为第i年的购置费ai+从第i年使用至第j-1年末的维修费之和。 从第i年使用至第j-1年末的维修费:b1+…+bj-i
1 1 2 3 4 5 2 16 3 22 16
(使用寿命为j-i年) 具体权数计算结果如下:
5 41 30 23 17 6 59 41 31 23 18
如:(2-4)权数为:a2+b1+b2=11+5+6=22
4 30 22 17
通过一个网络的最短路径
例 设备更新问题 :
2 16 30 22 41 4 23
最大流问题
两个重要结论: 1、任何一个可行流的流量都不会超过任一截集的容量。 2、若对于一个可行流f *,网络中有一个截集( V1*,V1*), 使v( f *)=C(V1*,V1 *),则f *必是最大流,而( V1*, V1 *)必是所有截集中容量最小的一个,即最小截集。
定理:可行流f *是最大流,当且仅当不存在关于f *的增广链。 于是有如下结论:最大流量最小截量定理:任一个网络中,从vs 到vt的最大流量等于分离vs,vt的最小截集的容量。
最短路径问题的应用
例 设备更新问题
把求总费用最小问题化为最短路径问题。用点 i (i=1,2,3,4,5)表示第 i 年买进一台新 设备。增设一点 6 表示第五年末。从i点到i+1,……, 6 各画一条弧,弧(i , j)表示在 第 i 年买进的设备一直使用到第 j 年年初(第 j -1年年末)。求1点到6点的最短路径。 路径的权数为购买和维修费用。 弧(i , j)的权数为第i年的购置费ai+从第i年使用至第j-1年末的维修费之和。 从第i年使用至第j-1年末的维修费:b1+…+bj-i
1 1 2 3 4 5 2 16 3 22 16
(使用寿命为j-i年) 具体权数计算结果如下:
5 41 30 23 17 6 59 41 31 23 18
如:(2-4)权数为:a2+b1+b2=11+5+6=22
4 30 22 17
通过一个网络的最短路径
例 设备更新问题 :
2 16 30 22 41 4 23
最大流问题
两个重要结论: 1、任何一个可行流的流量都不会超过任一截集的容量。 2、若对于一个可行流f *,网络中有一个截集( V1*,V1*), 使v( f *)=C(V1*,V1 *),则f *必是最大流,而( V1*, V1 *)必是所有截集中容量最小的一个,即最小截集。
定理:可行流f *是最大流,当且仅当不存在关于f *的增广链。 于是有如下结论:最大流量最小截量定理:任一个网络中,从vs 到vt的最大流量等于分离vs,vt的最小截集的容量。
运筹学课件12

价格 11 12 13 12 (万元)
解 用点vi表示“第i年年初购进一台新设备”这种状态i=1,2,…,5, 用v6表示第5年底的状态。 对每个i=1,2,…,5,从vi到vi+1 ,…, v6各画一条弧, 弧(vi,vj)表示在第 i 年初购进一台设备一直使用到 第 j 年初(即第 j -1年底)。 弧(vi,vj)的权为在第 i 年初购进一台新设备 一直使用到第 j -1年年底所发生的总费用。 例如(v1,v4)表示第1年年初购进一台新设备,一直使用到第3年底。 第1年年初购进一台新设备,需支付11万元, 一直使用到第3年底,需维修费5+6+8=19万元, 故该弧的权为30。
实例1:求下图所示网络中从顶点 v 1 到 v 3 的最短路。
5
v4
2 7 1 2 10 3 4 4
v3
v5
4
1
v2
1
v1
3.求给定两点间最短路的Dijkstra算法 (1)基本思想 对网络中每个顶点赋以一个标号,用来记录从顶点v1到该顶点 的最短路的长度(此时称为永久标号)或最短路长度的上界 (此时称为暂时标号)。 算法开始时,只有顶点v1被赋予永久标号 u1=0, 其它顶点vj 被赋予暂时标号uj =w1j 。 算法在被暂时标号的顶点中寻找一个顶点, 其暂时标号最小,然后将其赋予永久标号, 且对其余暂时标号的顶点按下述方式修正其标号: uj =min{uj ,uk +wkj } 算法在所求顶点被赋予永久标号后终止。
u j,置 第二步(永久标号)在R中找一顶点vk,使 u k = min v ∈R
j
S = S U {v k }, R = R \ {v k },若 R = φ,停止;否则转第三步。
S = {v1 , v 2 , v5 , v 4 , v3 }
第三节 最短路问题PPT课件

定义: 给定一个赋权有向图,即给了一个有向图
G=(V,A,W) ,对每一个弧aij =(vi,vj)∈A , 相应地有权w(aij ) =wij ∈V1 ,又给定 G中的 两个顶点vs ,vt 。设 P是G 中从vs 到 vt的一条路,
定义路 P的权是 P中所有弧的权之和,记为W(P)
。最短路问题就是要在所有从vs 到vt 的路中,求 一条权最小的路,即求一条从vs 到vt 的路P* ,
Thank You
在别人的演说中思考,在自己的故事里成长
Thinking In Other People‘S Speeches,Growing Up In Your Own Story
讲师:XXXXXX XX年XX月XX日
则resent= vk,
, 。 Sk Sk1 vk
Tk Tk1 vk
若k=n,则结束,否则转第二步。
6
例 用Dijkstra算法求前面例子中从v1到各点的最短路。
v2 1
6 2
v5
2
v9
6
3
v1
3 v3 6
3 4 10
1
2
v4
10
4
v6 2 v7
v8
7
图上标号法:
v2 v1,6 1
v5
v1, ∞ 2
转步骤二。
29
用逐次逼近算法求从V1到V6的最短路
v2
5
4
v1
-3
5
7
v3
v6 v4 6
2
v5
30
写在最后
经常不断地学习,你就什么都知道。你知道得越多,你就越有力量 Study Constantly, And You Will Know Everything. The More
运筹学课件(第十讲)—最短路问题

如果P是D中从vs到vj的最短路,vi是P中的一点,那么从vs沿P到vi路也是 从vs到vi的最短路。
Dijkstra法的适用条件
求出一点到图中任意点最短路
求解思路
从vs出发,逐步地向外探索最短路。执行过程中,与每个点记下一个数, 它或者表示从vs到该点的最短路的权(称为P(perpetual)标号),或者是 从vs到该点的最短路的权的上界(称为T(temporary)标号),方法的每一 步是去修改T标号,并且把某一个T标号点改为P标号点,从而使D中P标 号顶点多一个,这样最多经过p-1步就可以求出从vs到各点的最短路。
(2)起点发出的流的总和(称为流量),必须等于终点接收的流的总 和;
(3)各中间点流入的流量之和必须等于从该点流出的流量之和,即 流入的流量之和与流出的流量 之和的差为0,也就是说各中间点只 起转运作用,它既不产出新的物资,也不得截留过境的物资.
Operation Research
网络最大流的基本概念(3)
第八讲
Operation Research
网络最大流的基本概念(6)
增广链的基本概念
第八讲
Operation Research
第八讲
Operation Research
第八讲
Operation Research
实例:寻找图中增广链
第八讲
Operation Research
第八讲
网络最大流的基本概念(7)
运筹学课程
Operation Research
最短路问题
定义
第八讲
求最短路有两种算法,一是求从某一点至其他各点之间最短距离的Dijkstra(狄 克斯屈拉)算法;另一种是求网络图上任意两点之间最短距离的矩阵算法.
Dijkstra法的适用条件
求出一点到图中任意点最短路
求解思路
从vs出发,逐步地向外探索最短路。执行过程中,与每个点记下一个数, 它或者表示从vs到该点的最短路的权(称为P(perpetual)标号),或者是 从vs到该点的最短路的权的上界(称为T(temporary)标号),方法的每一 步是去修改T标号,并且把某一个T标号点改为P标号点,从而使D中P标 号顶点多一个,这样最多经过p-1步就可以求出从vs到各点的最短路。
(2)起点发出的流的总和(称为流量),必须等于终点接收的流的总 和;
(3)各中间点流入的流量之和必须等于从该点流出的流量之和,即 流入的流量之和与流出的流量 之和的差为0,也就是说各中间点只 起转运作用,它既不产出新的物资,也不得截留过境的物资.
Operation Research
网络最大流的基本概念(3)
第八讲
Operation Research
网络最大流的基本概念(6)
增广链的基本概念
第八讲
Operation Research
第八讲
Operation Research
第八讲
Operation Research
实例:寻找图中增广链
第八讲
Operation Research
第八讲
网络最大流的基本概念(7)
运筹学课程
Operation Research
最短路问题
定义
第八讲
求最短路有两种算法,一是求从某一点至其他各点之间最短距离的Dijkstra(狄 克斯屈拉)算法;另一种是求网络图上任意两点之间最短距离的矩阵算法.
运筹学——.图与网络分析-最短路课件

运筹学——.图与网络分析-最短路
v2 (4) 5 v4
9
v6
4
1
v1 (0)
4
75
5
v8
① ②
64
v 3(6)
7 v 5 (8) 6
1
v7
③
④
4)接着往下考察,有四条路可走:(v2,v4), (v2,v5).
可选择的最短路为
(v3,v4), (v3,v5).
m k 2 , ik 4 2 n ,k 5 3 ,{ k 4 3 } 5m 9 ,8 , i 1 , n 1 } 0 { 3 8
(v5,v6), (v5,v7 ).
m k 2 ,i k 4 3 n ,k 4 5 ,k { 6 5 } 7 m 9 ,1 i ,1 n ,1 0 } 3 { 4 9
① 给(v2,v4) 划成粗线。
② 给 v 4 标号(9)。
③ 划第5个弧。
运筹学——.图与网络分析-最短路
v 2 ( 4 ) 5 v 4(9 ) 9 v 6 (13 )
运筹学——.图与网络分析-最短路
引言
随着科学技术的进步,特别是电子计算机 技术的发展,图论的理论获得了更进一步的发展, 应用更加广泛。如果将复杂的工程系统和管理问 题用图的理论加以描述,可以解决许多工程项目 和管理决策的最优问题。因此,图论越来越受到 工程技术人员和经营管理人员的重视。
运筹学——.图与网络分析-最短路
树图的各条边称为树枝假定各边均有权重一般图g2含有多个部分树其中树枝总长最小的部分树称为该图的最小部分树也称最小支撑树?定理1图中任一个点i若j是与i相邻点中距离最近的则边ij一定必含在该图的最小部分树内
第6章 图与网络分析
本章内容重点 图的基本概念与基本定理 树和最小支撑树 最短路问题 网络最大流
运筹学 PPT课件 第五章 图与网络分析-最短路

Dijkstra最短路算法的特点和适应范围
一种隐阶段的动态规划方法 每次迭代只有一个节点获得永久标记,若有两个或两个以上节点的 临时标记同时最小,可任选一个永久标记;总是从一个新的永久标 记开始新一轮的临时标记,是一种深探法 被框住的永久标记 Tj 表示 vs 到 vj 的最短路,因此 要求 dij0,第 k 次迭代得到的永久标记,其最短路中最多有 k 条边,因此最多有
d
(0) 65
}
min{0 ,2 9,6 3, , 0, 1}
9 取自第3列
v1 v2 v3 v4 v5 v6
0 2 6
2
0
3
8
9
D(0) L 6 3 0 5 3
8
5
0
3
9 3 0 1
3
1
0
d (1) 16
mkin{d1(k0)
d
} (0)
k6
(第1行+第6列)
8
5
0
3
9 3 0 1
3
1
0
d (1) 15
mkin{d1(k0)
d
(0) k5
}
(第1行+第5列)
min{d1(10)
d (0) 15
,
d (0) 12
d (0) 25
,
d (0) 13
d (0) 35
,
d (0) 14
d
(0) 45
,
d (0) 15
d (0) 55
,
d (0) 16
min{d1(10)
d (0) 16
,
d (0) 12
d
(0) 26
,
d (0) 13
最短路算法上课ppt

优点
缺点
优点
优点
效率低,需要遍历所有点(特别是有时候不需要最优解)、运算中占用空间大
缺点
算法简明易懂、并且一定能得到最优解
优点
Dijkstra算法可能不是最优先使用的方法,因为算法的运算速度效率,往往要比精确度更加重要
实际运用
但似乎在实际运行时效果并不理想! 这样利用Dijkstra算法设计一个属于我们自己的导航系统啦。
最佳优先搜索简介
这个算法的运算流程跟Dijkstra的流程类似,只不过它考察的是选取点到终点的距离,并且这个距离的权值是评估出来的,这也就是启发式的思想。举例说明,如果说目标的终点在北面,那么越靠近北面的点权值就越小,那么算法在搜索过程中,所加入点集的点就会倾向于北面,因此不用搜索全图东南西北,更多的是搜索北面的点,速度来说会优于Dijkstra算法很多。
01
A*算法能够解决有固定障碍物的路径规划问题,并且能很快地给出解,但是当障碍物是移动的时候,我们又应该如何对算法进行改从而给出解呢?
02
一个典型问题:AGV小车线路规划!
智能码头:AGV
AGV中文名:自动导引小车
是自动化码头水平运输系统中用于搬运集装箱的搬运设备。
其主要职责:就是在规定的时间窗口范围内完成堆场和岸桥之间实现集装箱的传送。
一
算法的描述上看去相当复杂,我们给出下面例子来具体说明整个算法的运行流程!
首先我们要有如下概念:
假设P:v→km是从顶点v到km的一条最短路径,那对这条路径上任意其他一点ki,都有 P上关于v→ ki的子路径为v到点ki的最短路径。
即最短路径的子路径仍然是最短路径,最短路算法本质上上基于这种思想展开的。
最短路问题及相关算法介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2∞604 ∞2 440
53 1
108 2
v1 2 v3 4 v5
2 6 24
v4 dij为两相邻点的距离, 是从 i 到 j 点的直接距离。
从 i 到 j 点的最短距离不一定是 i→ j,
可能是i→ l → j, i→ l → k→ j, 或 i→ l → …→ k→ j,
n个点的网络, i 到j 的最短距离经过的中间点最多有n-2个
7∞9∞6
2∞604 1 10 0 6 4
3∞6 6 8
∞2 4 4 0 ∞2 4 4 0 ∞2 4 4 0
0 5 2 2 ∞ 5 0 3 ∞ 2 1 10 0 6 4 ∞ 7 6 6 ∞ ∞ 2 7 ∞ ∞ ∞ 12 4 10 4
P158 类例4求图中任意两点间的最短路。
2∞604 2∞2 0 4 4∞8 0 8
5 0 10 ∞ 2 0522∞
5 5 12 ∞ ∞
5 0 10 ∞ 2 5 0 3∞2
10 0 13 ∞ 4
5 0 10 ∞ 2 1 10 0 6 4
6 10 10 ∞ 6
0 5 1 2∞ 2∞2 0 4 2∞3 2∞
5 0 10 ∞ 2 2∞2 0 4 7 ∞ 12 ∞ 6
0 5 1 2∞ ∞2 8 4 0 ∞7 9 6∞
⑶ 比较所有具有T标号的点, 最小者改为P标号。
P (v i) = min [T (v j) ] 并列最小者, 同时改为P标号。
若全部点均为P标号则停;否则用 v i 代 v i , 转 ⑵ .
例3
用Dijkstra 算法
v2
7
v5
求v1点到v7点v2的最短7路。
v5
5
3
55
3
v1 0 2
2 7
6 v4 2
2 7
6
22
76 v4 2
1 v7 10 6
v3
4
v6
v3
4
v6 6
例9 用Dijkstra 算法 求v1点到v8点的最短路。 ⑴ P(v1)=0, 余皆为T标号:T (vi)=+∞ ( i = 2,…,8 ) ⑵ T(v2)=min(T(v2), P(v1)+l12)=min(+∞,0+4)=4
所以我们先考虑与之间有一个中间点的情况.
P158 类例4 求图中任意两点间的最短路。
v2
所以我们先考虑 i 与 j 之间有一个 中间点的情况 D(0) =
求v1→v2的最短距离为,
0 5 1 2∞ 5 0 10 ∞ 2 23 028
2∞604 ∞2 440
53 1
108 2
v1 2 v3 4 v5
5 0 10 ∞ 2 ∞2 8 4 0 ∞ 2 18 ∞ 2
23028
0 5 2 2∞ 2 8 2 4∞
23028 5 0 3∞2
7 3 3 ∞ 10
23028 1 10 0 6 4
3 13 0 8 12
T(v3)=min(T(v2), P(v1)+l13)=min(+∞,0+6)=6 ⑶P(v2)=4, (v1, v2) ⑷ T(v4)=min(T(v4), P(v2)+l24)
=min(+∞,4+5)=9 T(v5)=min(T(v5), P(v2)+l25)
=min(+∞,4+4)=8
⑸P(v3)=6, (v1, v3)
第一行 转置后的第二列
0 5 1 2∞ 5 0 3∞ 2
5 5 4∞ ∞
d12(1) = 4
0 5 1 2∞ 0 5 2 2∞
0 10 3 4 ∞
0 5 1 2∞ 5 0 3∞2
5 5 4 ∞∞
0 5 1 2∞ 1 10 0 6 4
1 15 1 8 ∞
5 0 10 ∞ 2 0522∞
5 5 12 ∞ ∞
23028
0 5 2 2∞ 2 8 2 4∞
23028 5 0 3∞2
7 3 3 ∞ 10
23028 1 10 0 6 4
3 13 0 8 12
23028 2∞2 0 4
4 ∞ 2 2 12
23028 ∞2 8 4 0
∞5 8 6 8
2∞604
0 5 2 2∞ 2∞8 2∞
2∞604 5 0 3∞2
1 v7 v1 0
2 7
6
22
6 v4 2
1 v7 6
vv32
4 7
vv65
vv32
4 7
vv6567
5
3
55
3
v1 0
2 7
22
6 v4 2
1 v7 6
v1 0 2
2
2 7
76 v4 2
1 v7 6
vv32
4 7
vv65
vv32
4 7
vv6567
55
3
55
3
v1 0
2 7
22
6 v4 2
1 v7 v1 0
§3 最短路问题
试探性标号(tentative label), 永久性标号(permanent label)
Dijkstra 算法(不含负权边)
⑴ 给vi 以P标号, P( vi )=0 , 其余各点均给T标号, T (vi)=+∞ ⑵ 与刚获P标号点vi 以相邻只有T 标号各点v j 改进:
T (v j) = min [T (v j), P (v i) + l i j ]
v2
5
v1
2 7
2
v3
7
6 v4 2
v5 3
1 v7 6
4
v6
⑹T(v4)=min(T(v4), p(v3)+l34)=min(6,6+4)=9,
T(v5)=min(T(v5), P(v3)+l35)=min(8,6+7)=8
P158 类例4 求图中任意两点间的最短路。
v2
D(0) =
0 5 1 2∞ 5 0 10 ∞ 2 23 028
5 0 10 ∞ 2 5 0 3∞2
10 0 13 ∞ 4
5 0 10 ∞ 2 1 10 0 6 4
6 10 10 ∞ 6
0 5 1 2∞ 2∞2 0 4 2∞3 2∞
5 0 10 ∞ 2 2∞2 0 4 7 ∞ 12 ∞ 6
0 5 1 2∞ ∞2 8 4 0 ∞7 9 6∞
5 0 10 ∞ 2 ∞2 8 4 0 ∞ 2 18 ∞ 2
∞2 4 4 0 2∞2 0 4 ∞∞ 6 4 4
2∞604 ∞2 8 4 0 ∞ ∞ 14 4 4
∞2 4 4 0 ∞2 8 4 0 ∞ 4 12 8 0
0 5 1 2∞ 0 5 2 2∞
0 10 3 4 ∞
0 5 1 2∞ 5 0 3∞2
5 5 4 ∞∞
0 5 1 2∞ 1 10 0 6 4
1 15 1 8 ∞
2 6 24
v4
min{ d11+d12, d12+d22, d13+d32, d14+d42, d15+d52 } 即 min { d i r + d r 2 }
r = 1, 2, …, n
r 应经过网络的每一点,或网络中的每一ห้องสมุดไป่ตู้都要作中间点.
具体操作是把第i行和转置后的第j列相加,从中找出最小者.
53 1
108 2
v1 2 v3 4 v5
2 6 24
v4 dij为两相邻点的距离, 是从 i 到 j 点的直接距离。
从 i 到 j 点的最短距离不一定是 i→ j,
可能是i→ l → j, i→ l → k→ j, 或 i→ l → …→ k→ j,
n个点的网络, i 到j 的最短距离经过的中间点最多有n-2个
7∞9∞6
2∞604 1 10 0 6 4
3∞6 6 8
∞2 4 4 0 ∞2 4 4 0 ∞2 4 4 0
0 5 2 2 ∞ 5 0 3 ∞ 2 1 10 0 6 4 ∞ 7 6 6 ∞ ∞ 2 7 ∞ ∞ ∞ 12 4 10 4
P158 类例4求图中任意两点间的最短路。
2∞604 2∞2 0 4 4∞8 0 8
5 0 10 ∞ 2 0522∞
5 5 12 ∞ ∞
5 0 10 ∞ 2 5 0 3∞2
10 0 13 ∞ 4
5 0 10 ∞ 2 1 10 0 6 4
6 10 10 ∞ 6
0 5 1 2∞ 2∞2 0 4 2∞3 2∞
5 0 10 ∞ 2 2∞2 0 4 7 ∞ 12 ∞ 6
0 5 1 2∞ ∞2 8 4 0 ∞7 9 6∞
⑶ 比较所有具有T标号的点, 最小者改为P标号。
P (v i) = min [T (v j) ] 并列最小者, 同时改为P标号。
若全部点均为P标号则停;否则用 v i 代 v i , 转 ⑵ .
例3
用Dijkstra 算法
v2
7
v5
求v1点到v7点v2的最短7路。
v5
5
3
55
3
v1 0 2
2 7
6 v4 2
2 7
6
22
76 v4 2
1 v7 10 6
v3
4
v6
v3
4
v6 6
例9 用Dijkstra 算法 求v1点到v8点的最短路。 ⑴ P(v1)=0, 余皆为T标号:T (vi)=+∞ ( i = 2,…,8 ) ⑵ T(v2)=min(T(v2), P(v1)+l12)=min(+∞,0+4)=4
所以我们先考虑与之间有一个中间点的情况.
P158 类例4 求图中任意两点间的最短路。
v2
所以我们先考虑 i 与 j 之间有一个 中间点的情况 D(0) =
求v1→v2的最短距离为,
0 5 1 2∞ 5 0 10 ∞ 2 23 028
2∞604 ∞2 440
53 1
108 2
v1 2 v3 4 v5
5 0 10 ∞ 2 ∞2 8 4 0 ∞ 2 18 ∞ 2
23028
0 5 2 2∞ 2 8 2 4∞
23028 5 0 3∞2
7 3 3 ∞ 10
23028 1 10 0 6 4
3 13 0 8 12
T(v3)=min(T(v2), P(v1)+l13)=min(+∞,0+6)=6 ⑶P(v2)=4, (v1, v2) ⑷ T(v4)=min(T(v4), P(v2)+l24)
=min(+∞,4+5)=9 T(v5)=min(T(v5), P(v2)+l25)
=min(+∞,4+4)=8
⑸P(v3)=6, (v1, v3)
第一行 转置后的第二列
0 5 1 2∞ 5 0 3∞ 2
5 5 4∞ ∞
d12(1) = 4
0 5 1 2∞ 0 5 2 2∞
0 10 3 4 ∞
0 5 1 2∞ 5 0 3∞2
5 5 4 ∞∞
0 5 1 2∞ 1 10 0 6 4
1 15 1 8 ∞
5 0 10 ∞ 2 0522∞
5 5 12 ∞ ∞
23028
0 5 2 2∞ 2 8 2 4∞
23028 5 0 3∞2
7 3 3 ∞ 10
23028 1 10 0 6 4
3 13 0 8 12
23028 2∞2 0 4
4 ∞ 2 2 12
23028 ∞2 8 4 0
∞5 8 6 8
2∞604
0 5 2 2∞ 2∞8 2∞
2∞604 5 0 3∞2
1 v7 v1 0
2 7
6
22
6 v4 2
1 v7 6
vv32
4 7
vv65
vv32
4 7
vv6567
5
3
55
3
v1 0
2 7
22
6 v4 2
1 v7 6
v1 0 2
2
2 7
76 v4 2
1 v7 6
vv32
4 7
vv65
vv32
4 7
vv6567
55
3
55
3
v1 0
2 7
22
6 v4 2
1 v7 v1 0
§3 最短路问题
试探性标号(tentative label), 永久性标号(permanent label)
Dijkstra 算法(不含负权边)
⑴ 给vi 以P标号, P( vi )=0 , 其余各点均给T标号, T (vi)=+∞ ⑵ 与刚获P标号点vi 以相邻只有T 标号各点v j 改进:
T (v j) = min [T (v j), P (v i) + l i j ]
v2
5
v1
2 7
2
v3
7
6 v4 2
v5 3
1 v7 6
4
v6
⑹T(v4)=min(T(v4), p(v3)+l34)=min(6,6+4)=9,
T(v5)=min(T(v5), P(v3)+l35)=min(8,6+7)=8
P158 类例4 求图中任意两点间的最短路。
v2
D(0) =
0 5 1 2∞ 5 0 10 ∞ 2 23 028
5 0 10 ∞ 2 5 0 3∞2
10 0 13 ∞ 4
5 0 10 ∞ 2 1 10 0 6 4
6 10 10 ∞ 6
0 5 1 2∞ 2∞2 0 4 2∞3 2∞
5 0 10 ∞ 2 2∞2 0 4 7 ∞ 12 ∞ 6
0 5 1 2∞ ∞2 8 4 0 ∞7 9 6∞
5 0 10 ∞ 2 ∞2 8 4 0 ∞ 2 18 ∞ 2
∞2 4 4 0 2∞2 0 4 ∞∞ 6 4 4
2∞604 ∞2 8 4 0 ∞ ∞ 14 4 4
∞2 4 4 0 ∞2 8 4 0 ∞ 4 12 8 0
0 5 1 2∞ 0 5 2 2∞
0 10 3 4 ∞
0 5 1 2∞ 5 0 3∞2
5 5 4 ∞∞
0 5 1 2∞ 1 10 0 6 4
1 15 1 8 ∞
2 6 24
v4
min{ d11+d12, d12+d22, d13+d32, d14+d42, d15+d52 } 即 min { d i r + d r 2 }
r = 1, 2, …, n
r 应经过网络的每一点,或网络中的每一ห้องสมุดไป่ตู้都要作中间点.
具体操作是把第i行和转置后的第j列相加,从中找出最小者.