运筹学05_图与网络分析2-最短路
合集下载
《最短路问题》课件

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的最小截集的容量。
运筹学图与网络分析-最短路

(P0
)
min P
(P)
路P0的权称为从vs到vt的距离,记为d(vs,vt)。
求网络上的一点到其它点 的最短路
Dinkstra标号法
这是解决网络中某一点到其它点的最 短路问题时目前认为的最好方法。
适用于有向图权值非负的情况
有向图权值非负---- Dijkstra算法
Dijkstra算法的基本步骤(权值非负) 1、给顶点v1标号(0),v1称为已标号点,记标号点集为
(1,2)
2
2
0
1
2
5
7
(2,4)
3 5 55
7
3
1 (4,4) 3 1
4
6
7
(1,3)
5
④重复上述步骤,直至全部的
点都标完。
(1,2)
2
2
0
1
2
5
7
(2,4)
3 5 55
7
1
3
3
1
4
6
7
(1,3)
5
7
(1,2)
2
2
0
2
7
1
5
(2,4)
35
55
7
1
3
3
1
4
6
7
(1,3)
5
(3,7)
(1,2)
2
2
0
2
7
1
5 3 5 55 7
3
1
3 1
34 5 6
7
④重复上述步骤,直至全部的
(1,2)
点都标完。
2
2
0
2
7
1
5 3 5 55 7
运筹学-图论

v3
v5
v7
v1
v6
v2
v4
图 5.5
图的基本概念
一个图G或有向图D中的点数,记作P(G)或P(D),简记作P;边数 或者弧数,记作q(G)或者q(D),简记作q 。 如果边[vi ,vj]E ,那么称vi , vj 是边的端点,或者vi ,vj是相邻的。 如果一个图G中,一条边的两个端点是相同的,那么称为这条边 是环,如图5.4中的边[v3 ,v3]是环。
C
A
B
D
哥尼斯堡七橋問題可以看成是:对这样一个封闭的图形,是否可以
一笔画完成C 它并且回到原点
A
B
D
数学家欧拉(Euler, 1707-1783) 于1736年严格地证明了上述哥尼斯堡七桥问题无解,并且 由此开创了图论的典型思维方式及论证方式
即能否从某一点开始不重复地一笔画出这个图形, 最终回到原点。欧拉在他的论文中证明了这是不可 能的,因为这个图形中每一个顶点都与奇数条边相 连接,不可能将它一笔画出,这就是古典图论中的 第一个著名问题。
• 各种通信网络的合理架设 • 交通网络的合理分布等
生活 中的 一些 例子
台大网路架构图
例5.1 图5.2是我国北京、上海、重庆等十四个城市之间的铁路交通图,这里用
点表示城市,用点与点之间的线表示城市之间的铁路线。诸如此类还有城市中的 市政管道图,民用航空线图等等。
太原 重庆
石家庄 郑州
北京 天津
vV2
图的连通性: 链:由两两相邻的点及其相关联的边构成的点边序列。 如:v0 ,e1 ,v1 ,e2 ,v2,e3 ,v3 ,…,vn-1 , en , vn ; v0 ,vn分别为链的起点和终点 。 记作( v0 ,v1 , v2, ,v3 , …, vn-1 , vn ) 简单链:链中所含的边均不相同; 初等链:链中所含的点均不相同, 也称通路;
运筹学课件:最短路问题

Operation Research
实例1
第八讲
Operation Research
实例2 求从1出发到5的最大流
第八讲
Operation Research
第八讲
Operation Research
实例
第八讲
Operation Research
第八讲
第八讲
Operation Research
网络最大流的基本概念(6)
增广链的基本概念
第八讲
Operation Research
第八讲
Operation Research
第八讲
Operation Research
实例:寻找图中增广链
第八讲
Operation Research
第八讲
网络最大流的基本概念(7)
直到 D(k-1)=D(k)
dij(k)=min{dir(k-1)+drj(k-1)}
矩阵的计算次数k
Operation Research
实例(1) 求图中任意两点之间的最短ch
第八讲
Operation Research
第八讲
Operation Research
Operation Research
求解步骤
(1)标号过程
第八讲
Operation Research
(2)调整过程
第八讲
我们的目标是尽快找到一条从起点vs到终点vt的增广链, 所以没必要在中途多停留,即对已标号的vi,每次只检查 一个相邻点vj,再给vj标号,没有必要检查vi的所有相邻点, 这样一次可改进一条增广链,只到没有增广链为止
(2)起点发出的流的总和(称为流量),必须等于终点接收的流的总 和;
运筹学——.图与网络分析-最短路课件

运筹学——.图与网络分析-最短路
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章 图与网络分析
本章内容重点 图的基本概念与基本定理 树和最小支撑树 最短路问题 网络最大流
运筹学-最短路问题
v1
V1 0 V2 2 V3 5 D = V4 − V5 − V6 − V7 −
பைடு நூலகம்
v2
2 0 2 4 6 − −
v3
5 2 0 1 − 3 −
v4
− 4 1 0 4 1 4
v5
− 6 − 4 0 − 1
v6
− − 3 1 − 0 2
v7
− − − 4 1 2 0
二、最短路算法: 最短路算法:
1. D氏标号法(Dijkstra) 氏标号法(Dijkstra) (1)求解思路 求解思路——从始点出发,逐步顺序 从始点出发, 从始点出发 逐步顺序 地向外探寻,每向外延伸一步都要求是最 地向外探寻,每向外延伸一步都要求是最 短的。 短的。 (2)使用条件 使用条件——网络中所有的弧权均 网络中所有的弧权 网络中所有的弧权均 非负, 非负,即 wij ≥ 0 。
(4) 计算步骤及例:
第三步:若网络图中已无T标号点 标号点, 第三步:若网络图中已无 标号点,停止 计算。否则 令 计算。否则,令 二步。 二步。 此时,要注意将第二步中的 此时,
T ( v j0 ) =
min {T ( v )}
v j ∈s j
,
然后将 标号改成P 然后将 v j0 的T 标号改成 标号 ,转入第
步骤 考察点 T标号点集 标号点集 v1 0
标 v2
标号) 号( 表P标号) 标号 v3 v4 v5 v6 v7
1 2 3 4 5 6
v1 v2 v3 v4 v6 v5
{v2,…,v7} , {v3,…,v7} , {v4,…,v7} , {v5,v6,v7} {v5,v7} {v7}
2
5 2+2 4
V1 0 V2 2 V3 5 D = V4 − V5 − V6 − V7 −
பைடு நூலகம்
v2
2 0 2 4 6 − −
v3
5 2 0 1 − 3 −
v4
− 4 1 0 4 1 4
v5
− 6 − 4 0 − 1
v6
− − 3 1 − 0 2
v7
− − − 4 1 2 0
二、最短路算法: 最短路算法:
1. D氏标号法(Dijkstra) 氏标号法(Dijkstra) (1)求解思路 求解思路——从始点出发,逐步顺序 从始点出发, 从始点出发 逐步顺序 地向外探寻,每向外延伸一步都要求是最 地向外探寻,每向外延伸一步都要求是最 短的。 短的。 (2)使用条件 使用条件——网络中所有的弧权均 网络中所有的弧权 网络中所有的弧权均 非负, 非负,即 wij ≥ 0 。
(4) 计算步骤及例:
第三步:若网络图中已无T标号点 标号点, 第三步:若网络图中已无 标号点,停止 计算。否则 令 计算。否则,令 二步。 二步。 此时,要注意将第二步中的 此时,
T ( v j0 ) =
min {T ( v )}
v j ∈s j
,
然后将 标号改成P 然后将 v j0 的T 标号改成 标号 ,转入第
步骤 考察点 T标号点集 标号点集 v1 0
标 v2
标号) 号( 表P标号) 标号 v3 v4 v5 v6 v7
1 2 3 4 5 6
v1 v2 v3 v4 v6 v5
{v2,…,v7} , {v3,…,v7} , {v4,…,v7} , {v5,v6,v7} {v5,v7} {v7}
2
5 2+2 4
运筹学第五章 图与网络分析
v6
v7
v8
考虑边(v1,v2),(v1,v6),(v4,v2),(v4,v7)
计算 min{0+2, 0+3, 1+10, 1+2}=min {2,3,11,3} =2
v2:[2,v1]
(4)A={v1,v2,v4}
[0,v1] [2,v1] 2 1 10 [1,v1] v4 5 v6 [3,v1] 4 2 v7
最短.
最小支撑树的求法
1 破圈法 2 避圈法
5.2.1 求解最小支撑树问题的破圈法
方法:去边破圈的过程。 步骤:1)在给定的赋权的连通图上任找 一 个圈。 2)在所找的圈中去掉一条权数最 大的边。 3)若所余下的图已不含圈,则计 算结束,余下的图即为最小支撑
树,否则返回 1)。
例1:用破圈法求右图
v1 1 5 4 v2 2 v4 3 v6
权和=15
5.3 最短路问题
问题:求网络中一定点到其它点的最短路。
5.3.1 最短路问题的Dijstra解法 方法:给vi点标号[αi,vk] 其中:αi:vi点到起点vs的最短距离 vk: vi的前接点
方法:(1) 给起点vs标号[0,vs]。 (2)把顶点集v分为互补的两部分A和Ā 其中:A:已标号点集 Ā:未标号点集 (3)考虑所有这样的边[vi, vj], 其中vi ∈A,vj ∈ Ā 挑选其中与vs距离最短的点vj标号 [min{αi+cij},vi]
[3,V1]
考虑边(v2,v3),(v2,v5),(v4,v7),(v6,v7)
计算 min { 2+6, 2+5, 1+2, 3+4}=min {8,7,3,7}=3
v7:[3,v4]
图与网络分析-最短路
① 给 (v1 , v2 ) 划成粗线。
② 给 v2 标号(4)。
③ 划第二个弧。
v2 (4)
4
5
4
v4
7
9
5
v6
1
v1 (0)
①
②
5
v8
1
6
4
v3
7
v5
6
v7
表明走出 v1 后走向 v8 的最短路目前看是 (v1 , v2 ) ,最优距离 是4 。 现已考察完毕第二个圈内的路,或者说,已完成 v1 , v2 的标号。
v1 v3 v6
59 40 28 30
21
v1 (0)
①
12
19 13
v2 (12)
② ③
v3 (19)14 20
v4 (28) 15
29
④
15 v5 (40)
22
v6
41
⑤
最短路路长为49。 即:在第一年、第三年初各购买一台新设备为最优决策。 这时5年的总费用为49。
例3 (选址问题 ) 已知某地区的交通网络如图所示, 其中点代表居民小区,边代表公路,边权为小区间公路距离, 问区中心医院应建在哪个小区,可使离医院最远的小区居民就 诊时所走的路程最近? 解 求中心的问题。 解决方法:先求出 vi 到 其它各点的最短路长 d j
min{ 24 , k34 , k56 , k57 } min{ ,10,13,14} 9 k 9
① 给 (v2 , v4 ) 划成粗线。 ② 给 v4 标号(9)。 ③ 划第5个弧。
v2 (4)
4
5
4
v4(9)
7
9
5
v6 (13)
1
v1 (0)
② 给 v2 标号(4)。
③ 划第二个弧。
v2 (4)
4
5
4
v4
7
9
5
v6
1
v1 (0)
①
②
5
v8
1
6
4
v3
7
v5
6
v7
表明走出 v1 后走向 v8 的最短路目前看是 (v1 , v2 ) ,最优距离 是4 。 现已考察完毕第二个圈内的路,或者说,已完成 v1 , v2 的标号。
v1 v3 v6
59 40 28 30
21
v1 (0)
①
12
19 13
v2 (12)
② ③
v3 (19)14 20
v4 (28) 15
29
④
15 v5 (40)
22
v6
41
⑤
最短路路长为49。 即:在第一年、第三年初各购买一台新设备为最优决策。 这时5年的总费用为49。
例3 (选址问题 ) 已知某地区的交通网络如图所示, 其中点代表居民小区,边代表公路,边权为小区间公路距离, 问区中心医院应建在哪个小区,可使离医院最远的小区居民就 诊时所走的路程最近? 解 求中心的问题。 解决方法:先求出 vi 到 其它各点的最短路长 d j
min{ 24 , k34 , k56 , k57 } min{ ,10,13,14} 9 k 9
① 给 (v2 , v4 ) 划成粗线。 ② 给 v4 标号(9)。 ③ 划第5个弧。
v2 (4)
4
5
4
v4(9)
7
9
5
v6 (13)
1
v1 (0)
运筹学 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
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5 8.5 2.5 1 2 v9
v2
0 v1 4 3 2
3
5 3 v3 3
6 v6
7
4 v7 2
4
v4
v8
6 3 3
v5
5 8.5 2.5 1 2 v9
v2
0 v1 4 3 2
3
5 3 v3 3
6 v6
7
4 v7 2
4
v4
v8
9
6 3 3
v5
5 8.5 2.5 1 2 v9
v2
0 v1 4 3 2
(P0 ) min (P)
P
路P0的权称为从vs到vt的距离,记为d(vs,vt)。
求网络上的一点到其它点 的最短路 Dinkstra标号法
这是解决网络中某一点到其它点的最 短路问题时目前认为的最好方法。 适用于有向图权值非负的情况
有向图权值非负---- Dijkstra算法
Dijkstra算法的基本步骤(权值非负) 1、给顶点v1标号(0),v1称为已标号点,记标号点集为 V1={v1} 2、在未标号点集V2中找出与标号点集V1中的顶点vi有弧相连 (并且以vi为起点)的点vj, 3、在第2步选出的点中,选出满足下面条件的点vk,并给vk标 号(l,L1k),其中l为第一标号, L1k为第二标号 L1k L1l ωlk min L1i ωij vi V1 ,v j V2
0 v2 v3 v4 v5 v6
v1 0
v2 1 0 2 4
v3 3 0 2 2
v4 v5 v6 2 4 5 1 0 4 3 0 2 0
0 v2 v3 v4 v5 v6
v1 0
v2 1 0 2 4
v3 3 0 2 2
5 1
(2,4)
1
3
(1,3)
7
5 3
3
(4,4)
5
1
5
7
7
4
5
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
5 1
(2,4)
1
3
(1,3)
7
5 3
3
5
5
1
7
5
7
7
4
6
(1,2)
0
2
2
2
5 1
(2,4)
1
3
(1,3)
7
5 3
3
5
5
1
5
7
7
4
6
(3,7)
(1,2)
0
2
2
2
5 1
(2,4)
lij
v1 0 6 8 v2 -1 0 -3 -1 v3 -2 0 v4 3 -5 0 v5 2 0 1 v6 1 0 v7 2 1 v8 7
t=1
P(t)1j
t=2 t=3 t=4
0 -1 -2 3
最短路问题
最短(通)路问题是最重要 的优化问题之一,例如各种管道 的铺设、线路的安排、厂区的布 局、设备的更新及运输网络的最 小费用流等。(最短距离、费时 最少、费用最省)
2
1
3
2
5
2
8
6
5 1
3 6 4 6
9
7
2
9
0
7
11 1
13
1
7
2
3 1
4 1 9 9 10
2
1
3
2
5
2
8
6
5 1
3 6 4 6
3、如果对所有的点L1k(m)= L1k(m+1)都成立则逆向追踪, 找出最短路,算法终止;若存在L1k(m)> L1k(m+1),则令 m=m+1,返回第2步
求从v1到v4的最短路
v3
-2 3 2 v1 4 v2 -1
5
v4
v3 (1,3)
v3 (1,3)
-2 3 2 v1 (0) v2 (1,2) -1
(6,8)
1
3
(1,3)
(5,13)
3
4பைடு நூலகம்
5
5
1
5
7
6
7
(3,7)
对有向图同样可以用标号算法:
例2 如图,有一批货物要从v1运 到v9,弧旁数字表示该段路长, 求最短运输路线。
v5
3 5
v2
0 v1 3 2
3
v6 3 v3 1
2.5 2
v9
4 v7 3 2
4
v8
v4
v5
3 3 5
v2
0 v1 3 2
2
1
3
7
3
5
5 3
5
1
5
7
7
4
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
5 1
1
3
(1,3)
7
3
5
5 3
5
1
5
7
7
4
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
5 1
1
3
(1,3)
3
5
4
7
5 3
5
1
5
7
7
4
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
3
v6 3 v3 1
2.5 2
v9
4 v7 3 2
4
v8
v4
v5
3 3 5
v2
0 v1 3 2
3
v6 3 v3 1
2.5 2
v9
4 v7 3 2
4
v8
v4
v5
3 3 5
v2
0 v1 3 2
3
v6 3 v3 1
2.5 2
v9
4 v7 2 3
4
4
v4
v8
v5
3 3 5
v2
0 v1 3 2
3
v6 3 v3 1
例
求v1到各点vj的最短路。
2 v2 3 1 4 4 v3 2 5 1 2 v6
v1 2
2
4 v4 v5
3
v1 v2 v3 v4 v5 v6
v1 0
v2 1 0 2 4
v3 3 0 2 2
v4 v5 v6 2 4 5 1 0 4 3 0 2 0
2.5 2
v9
4 v7 2 3
4
4
v4
v8
v5
3 3 5
v2
0 v1 4 3 2
3
v6 5 3 v3 1
2.5 2
v9
4 v7 2 3
4
v4
v8
v5
3 3 5
v2
0 v1 4 3 2
3
v6 5 3 v3 1
2.5 2
v9
4 v7 2 3
4
v4
v8
6 3 3
v5
5
v2
0 v1 4 3 2
3
5 3 v3
v2 1 0 2 4
v3 4 0 2 2
v4 v5 v6 2 5 5 1 0 6 3 0 2 0
v1 0 0 1 v3 1 v5 v6
v2 1 0 2 4
v3 4 0 2 2
v4 v5 v6 2 5 5 1 0 6 3 0 2 0
2
2 5 1
7
1
3
3
5
5 3
5
1
5
7
4
6
7
(1,2)
2
0
2
2 5 1
7
1
3
3
5
5 3
5
1
5
7
4
6
7
(1,2)
③从已标号的点出发,找与这 些相邻点最小权数(距离)者, 找到之后:标号;边变红。
2
0
2
2 5
1
7
1
3
3
5
5 3
5
1
5
7
4
6
7
(1,2)
0
2
2
5
1
3
③从已标号的点出发,找与这 些相邻点最小权数(距离)者, 找到之后:标号;边变红。
v4 v5 v6 2 5 5 1 0 4 3 0 2 0
v1 0 0 1 v3 1 v5 v6
v2 1 0 2 4
v3 4 0 2 2
v4 v5 2 5 5 1 0 4+2 3 0 2
v6 0
v1 0 0 1 v3 1 v5 v6
6 v6 1 v7 2.5 2 4 2 3 v9
4
v4
v8
6 3 3
v5
5
v2
0 v1 4 3 2
3
5 3 v3
6 v6 1 v7 2.5 2 4 2 3 v9
4
v4
v8
6 3 3
v5
5
v2
0 v1 4 3 2
3
5 3 v3 3
6 v6 1 2.5 2 v9
v2
0 v1 4 3 2
3
5 3 v3 3
6 v6
7
4 v7 2
4
v4
v8
6 3 3
v5
5 8.5 2.5 1 2 v9
v2
0 v1 4 3 2
3
5 3 v3 3
6 v6
7
4 v7 2
4
v4
v8
9
6 3 3
v5
5 8.5 2.5 1 2 v9
v2
0 v1 4 3 2
(P0 ) min (P)
P
路P0的权称为从vs到vt的距离,记为d(vs,vt)。
求网络上的一点到其它点 的最短路 Dinkstra标号法
这是解决网络中某一点到其它点的最 短路问题时目前认为的最好方法。 适用于有向图权值非负的情况
有向图权值非负---- Dijkstra算法
Dijkstra算法的基本步骤(权值非负) 1、给顶点v1标号(0),v1称为已标号点,记标号点集为 V1={v1} 2、在未标号点集V2中找出与标号点集V1中的顶点vi有弧相连 (并且以vi为起点)的点vj, 3、在第2步选出的点中,选出满足下面条件的点vk,并给vk标 号(l,L1k),其中l为第一标号, L1k为第二标号 L1k L1l ωlk min L1i ωij vi V1 ,v j V2
0 v2 v3 v4 v5 v6
v1 0
v2 1 0 2 4
v3 3 0 2 2
v4 v5 v6 2 4 5 1 0 4 3 0 2 0
0 v2 v3 v4 v5 v6
v1 0
v2 1 0 2 4
v3 3 0 2 2
5 1
(2,4)
1
3
(1,3)
7
5 3
3
(4,4)
5
1
5
7
7
4
5
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
5 1
(2,4)
1
3
(1,3)
7
5 3
3
5
5
1
7
5
7
7
4
6
(1,2)
0
2
2
2
5 1
(2,4)
1
3
(1,3)
7
5 3
3
5
5
1
5
7
7
4
6
(3,7)
(1,2)
0
2
2
2
5 1
(2,4)
lij
v1 0 6 8 v2 -1 0 -3 -1 v3 -2 0 v4 3 -5 0 v5 2 0 1 v6 1 0 v7 2 1 v8 7
t=1
P(t)1j
t=2 t=3 t=4
0 -1 -2 3
最短路问题
最短(通)路问题是最重要 的优化问题之一,例如各种管道 的铺设、线路的安排、厂区的布 局、设备的更新及运输网络的最 小费用流等。(最短距离、费时 最少、费用最省)
2
1
3
2
5
2
8
6
5 1
3 6 4 6
9
7
2
9
0
7
11 1
13
1
7
2
3 1
4 1 9 9 10
2
1
3
2
5
2
8
6
5 1
3 6 4 6
3、如果对所有的点L1k(m)= L1k(m+1)都成立则逆向追踪, 找出最短路,算法终止;若存在L1k(m)> L1k(m+1),则令 m=m+1,返回第2步
求从v1到v4的最短路
v3
-2 3 2 v1 4 v2 -1
5
v4
v3 (1,3)
v3 (1,3)
-2 3 2 v1 (0) v2 (1,2) -1
(6,8)
1
3
(1,3)
(5,13)
3
4பைடு நூலகம்
5
5
1
5
7
6
7
(3,7)
对有向图同样可以用标号算法:
例2 如图,有一批货物要从v1运 到v9,弧旁数字表示该段路长, 求最短运输路线。
v5
3 5
v2
0 v1 3 2
3
v6 3 v3 1
2.5 2
v9
4 v7 3 2
4
v8
v4
v5
3 3 5
v2
0 v1 3 2
2
1
3
7
3
5
5 3
5
1
5
7
7
4
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
5 1
1
3
(1,3)
7
3
5
5 3
5
1
5
7
7
4
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
5 1
1
3
(1,3)
3
5
4
7
5 3
5
1
5
7
7
4
6
(1,2)
④重复上述步骤,直至全部的 点都标完。
0
2
2
2
3
v6 3 v3 1
2.5 2
v9
4 v7 3 2
4
v8
v4
v5
3 3 5
v2
0 v1 3 2
3
v6 3 v3 1
2.5 2
v9
4 v7 3 2
4
v8
v4
v5
3 3 5
v2
0 v1 3 2
3
v6 3 v3 1
2.5 2
v9
4 v7 2 3
4
4
v4
v8
v5
3 3 5
v2
0 v1 3 2
3
v6 3 v3 1
例
求v1到各点vj的最短路。
2 v2 3 1 4 4 v3 2 5 1 2 v6
v1 2
2
4 v4 v5
3
v1 v2 v3 v4 v5 v6
v1 0
v2 1 0 2 4
v3 3 0 2 2
v4 v5 v6 2 4 5 1 0 4 3 0 2 0
2.5 2
v9
4 v7 2 3
4
4
v4
v8
v5
3 3 5
v2
0 v1 4 3 2
3
v6 5 3 v3 1
2.5 2
v9
4 v7 2 3
4
v4
v8
v5
3 3 5
v2
0 v1 4 3 2
3
v6 5 3 v3 1
2.5 2
v9
4 v7 2 3
4
v4
v8
6 3 3
v5
5
v2
0 v1 4 3 2
3
5 3 v3
v2 1 0 2 4
v3 4 0 2 2
v4 v5 v6 2 5 5 1 0 6 3 0 2 0
v1 0 0 1 v3 1 v5 v6
v2 1 0 2 4
v3 4 0 2 2
v4 v5 v6 2 5 5 1 0 6 3 0 2 0
2
2 5 1
7
1
3
3
5
5 3
5
1
5
7
4
6
7
(1,2)
2
0
2
2 5 1
7
1
3
3
5
5 3
5
1
5
7
4
6
7
(1,2)
③从已标号的点出发,找与这 些相邻点最小权数(距离)者, 找到之后:标号;边变红。
2
0
2
2 5
1
7
1
3
3
5
5 3
5
1
5
7
4
6
7
(1,2)
0
2
2
5
1
3
③从已标号的点出发,找与这 些相邻点最小权数(距离)者, 找到之后:标号;边变红。
v4 v5 v6 2 5 5 1 0 4 3 0 2 0
v1 0 0 1 v3 1 v5 v6
v2 1 0 2 4
v3 4 0 2 2
v4 v5 2 5 5 1 0 4+2 3 0 2
v6 0
v1 0 0 1 v3 1 v5 v6
6 v6 1 v7 2.5 2 4 2 3 v9
4
v4
v8
6 3 3
v5
5
v2
0 v1 4 3 2
3
5 3 v3
6 v6 1 v7 2.5 2 4 2 3 v9
4
v4
v8
6 3 3
v5
5
v2
0 v1 4 3 2
3
5 3 v3 3
6 v6 1 2.5 2 v9