运筹学最短路邮递员问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
法求解,这里介绍一种有效算法—狄克斯拉(Dijkstra)算法,这一
算法是1959年首次被提出来的。该算法适用于每条弧的权数ωij ≥0 情形。算法的基本思路:从发点vs 出发,有一个假想的流沿网络一 切可能的方向等速前进,遇到新节点后,再继续沿一切可能的方向 继续前进,则最先到达终点vt 的流所走过的路径一定是最短的。为 了实现这一想法,对假想流依次到达的点,依次给予p标号,表示vs 到这些点的最短距离。对于假想流尚未到达的点给予T标号,表示vs 到这些点的最短距离的估计值。具体作法如下:
或v1 →v4。
v1 →vv31→5v36 或
v1 →v4→v6
22
30
41
59
23
16
v2v24→1 v61262
v3v33→1 v6 17 30
v4v42→3 v167 23
v5v51→8 v618 v6
41
31
21
2
6
5
08
7
1
17
2
1
9
32
5
9 3
79
66
11 2 13
431 4
9
1
10
21
p(v2)=3 3
v2
p(v1)=0 v1
p(v3)=4
6
51 1
v4
7 4
v5
v3 2 3
5
v7
26 v6 9
15
v8
T(v4)=min{6,4+1}=5, k(v4 )=v3
T(v6)=min{7,4+2}=6, k(v6 )=v3
目前,点v4 具有最小T标号,将其标号改为p标号: p(v4)=5;
2
53
1
2
v3
4 3
4
v7 2
v4
v9
4 v8
v5
3
5
3
3 0 v1
v2
3
v6
2.5
2
53
1
2
v3
4 3
4
v7 2
v4
v9
4 v8
6 v5
3
5
3
6
v2
3
3
v6
2.5
0
v1
2
53
1
2
v3
4 3
4
v7 2
v4
v9
4 v8
6 v5
3
5
3
6
v2
3
3
v6
2.5
0
v1
2
53
1
2
v3
4 3
4
v7 2
v4
v9
T(v8)=min{+∞,6+9}=15, k(v8)=v6
1
04 5
如果街区图中没有奇顶点,则是一个欧拉图。
的最短路
v6
2
20
这是解决网络中某一点到其它点的最短路问题时目前认为的最好方法。
v1 v2 v3 v4 v5 v6 重复边长=14大于24/2 若存在未标号行,返回第二步。
3
23 0
对于点v2 :d(v2)=min{16+31,22+23,30+18,41}=41,v2→v6 ;
运筹学最短路邮递员问题
定义(权、赋权图):对图G的每一 条边e,可赋与一个实数
w(e)称为边e的权。图G连同它边 上的权称为赋权图。路中边权最小的 称为最短路。
权可以表示铁路长度,通讯网络的造 价,网络中表示耗时等。
狄克斯拉(Dijkstra)算法
• 最短路问题可以化为线性规划问题求解,也可以用动态规划方
2
点都标完。
2
2
0
2
7
1
5 3 5 55 7
3
1
3 1
34 5 6
7
④重复上述步骤,直至全部的
2
点都标完。
2
2
0
1
2
5
4
7
3 5 55
7
3
1
3 1
34 5 6
7
④重复上述步骤,直至全部的
2
点都标完。
2
2
0
1
2
5
4
7
3 5 55
7
3
1
3 1
4
6
7
3
5
④重复上述步骤,直至全部的
2
点都标完。
2
2
0
1
v9
4 v8
v5
3
5
3
3 0 v1
v2
3
2
v6
2.5
3
1
2
v3
4
v7 2
3
v4
v9
4 v8
v5
3
5
3
3 0 v1
v2
3
2
v6
2.5
3
1
2
v3
4 3
4
v7 2
v4
v9
4 v8
v5
3
5
3
3 0 v1
v2
3
2
v6
2.5
3
1
2
v3
4 3
4
v7 2
v4
v9
4 v8
v5
3
5
3
3 0 v1
v2
3
v6
2.5
图上标示法
下面我们结合例3介绍求解最短路问题的图上标示法,它比狄克 斯拉算法更简洁。
表1 年 份一二 三 四五
购置费 表2 使用年限
11 11 12 12 13 0~1 1~2 2~3 3~4 4~5
年修理费 5 6 8 11 18
解:先根据表1、表2的数据画出设备更新费用网络图,如下图 所示。图中点vi 表示第i 年开始,弧(vi ,vj)表示设备第i 年初使用到 第j 年初,弧(vi ,vj)上的权数表示该期间设备所需的费用。这样, 求五年内设备最优更新方案便转化为求v1→v6 的 最短路。
表1 重复边长=14大于24/2
v3
2 05 1
d(v3)=3, d(v4)=2 两个奇顶点
v6
2
20
求网络上的一点到其它点 ③从已标号的点出发,找与这些相邻点最小权数(距离)者,若L(1,p) =Min{L(1,r)+ d(r,p)} ,这里r为已标号者下标,p为未标号下标,
则将 标于p处。
从已标号的点出发,找与这些相邻点最小权数(距离)者,找到之后:标号;
• ④重复上述步骤,直至全部的点 都标完。
对有向图同样可以用标号算法:
例 如图,有一批货物要从v1运到 v9,弧旁数字表示该段路长,求 最短运输路线。
3 0 v1
4
v5
3
5
v2
3
2
v6
2.5
3
1
2
v3 3
v7 2
v4
v9
4 v8
v5
3
5
3
3 0 v1
v2
3
2
v6
2.5
3
1
2
v3
4
v7 2
3
v4
27
2
2
15
3 5 55 7
1
3
3
1
4
6
7
5
①从点1出发,因L11=0, 在点1处标记 0
27
02
2
15
3 5 55 7
3
1
4
3
1
6
7
5
从已标号的点出发,找与这些
相邻点最小权数(距离)者,找
2 到之后:标号;边变红。
2
0
7 2
15
3 5 55 7
1
3
3
1
4
6
7
5
2
2
2
0
7 2
15
3 5 55 7
T(v6)=min{6,5+3}=6; T(v7)=min{+∞,5+5}=10, k(v7 )=v4
目前,点v6 具有最小T标号,将其标号改为p标号: p(v6)=6;
T(v5)=min{10,6+2}=8, k(v5 )=v6
T(v7)=min{10,6+1}=7, k(v7 )=v6
T(v8)=min{+∞,6+9}=15, k(v8)=v6
2
6
5
08
7
1
17
2
1
9
32
5
9 3
79
66
11 2 13
431 4
9
1
10
从一点到任意点的最短路
• 木器厂有六个车间,办事员经常 要到各个车间了解生产进度。从 办公室到各车间的路线由图1给出。
找出点1(办公室)到其它各点 (车间)的最短路
27
2
2
15
3 5 55 7
1
3
3
1
4
6
7
5
2
权wij(dij)
目前,点v7 具有最小T标号,将其标号改为p标号: p(v7)=7;
T(v8)=min{15,7+5}=12, k(v8)=v7 ; p(v5)=8;
T(v8)=min{12,8+6}=12, p(v8)=12;反向追踪找最短路径。
最短路径为:v1→v2→v3→v6→v7→v8 ; 因p(v8)=12,所以v1→v8 的最短距离为12。 • 最短路问题不仅可以求解交通图中两点之间的最短距离,实际 中很多问题也可变为最短路问题加以求解。例如设备更新问题,厂 区合理布局问题等。兹举一例: • 例1(设备更新问题)某企业使用一台设备,在每年年底,企业 都要决策下年度是购买一台新设备呢?还是继续使用这台设备。若 购买新的,就要支付一笔购置费;如果使用旧设备,只要支付维修 费,而维修费随着设备的使用年限延长而增加。现根据以往统计资 料已经估算出设备在各年初的价格和不同使用年限的修理费用,分 别如表1、表2所示。 • 试确定一个五年内的设备更新计划,使五年内总支出最小。
• 1°标p(vs)=0,其余点标T(vi)=+∞;
• 2°由刚刚获得p标号的vi 点出发,改善它的相邻点vj 的T标号,即

新的T(vj)=min{老的T(vj),p(vi)+ ωij }
• 若T(vj)= p(vi)+ ωij ,则记k(vj )=vi(前点标记);
• 3°找出具有最小T标号的点,将其标号改为p标号。若vt 已获得p
2
2 05 5
去了原重复边,添上原没有的重复边
图示
从已标号的点出发,找与这些相邻点最小权数(距离)者,找到之后:标号;
001
2
v1 v2 v3 v4 v5 v6
1
4
06
3
23 0
Dinkstra标号法
• 这是解决网络中某一点到其它点的 最短路问题时目前认为的最好方法。
• 在这个问题中我们讨论的是从网络 中的点1到其它各点的最短路。
2
5
4
7
3 5 55
7
3
1
3 1
34 5
6 7
7
2
2
2
0
1
2
5
4
7
3 5 55
7
3
1
3 1
34 5
6 7
7
2
2
2
0
1
2
5
4
3
5
78
55
7
3
1
3 1
34 5
6 7
7
2
2
2
0
1Leabharlann 2 5435
78
55
7
3
1
3 1
34 5
6 7
7
2
2
2
0
1
2
54
3
5
78
55
13
7
1
3
3
1
34 5
6 7
7
2
2
2
0
1
2
1 3
4 5
3
1
6
7
③从已标号的点出发,找与这
2 些相邻点最小权数(距离)者,
找到之后:标号;边变红。
2
2
0
2
7
1
5 3 5 55 7
1
3
3
1
4
6
7
5
③从已标号的点出发,找与这
2 些相邻点最小权数(距离)者,
找到之后:标号;边变红。
2
2
0
2
7
1
5 3 5 55 7
3
1
3 1
34 5 6
7
④重复上述步骤,直至全部的
4 v8
6 v5
3
5
3
6
v2
3
3
v6
2.5
0
v1
2
53
1
2
7
v3
4 3
4
v7 2
v4
v9
4 v8
6 v5
3
5
3
6
v2
3
3
v6
2.5
0
v1
2
距离、价格
2
2
15
3
点(vi)
边eij或记为(vi,vj)
表示网络图形的特点
• 1、与欧氏几何的区别为,图中线 的长短并不能表示真实的长度。
• 2、与地图的区别为两点之间的距 离并不真实。
表示网络图形的特点
• 网络(图论)中两点之间的距离由 两点间的边上的权来表示。(可由 图中的点1、2与点1、3之间的关系 来看)。
标号,则已找到最短路,由k(vt)反向追踪,就可找出vs 到vt 的最
短路径,p(vt)就是vs 到vt 的最短距离。否则,转2°。
例 求图中v1 到v8 的最短路。
3 v1
6
v2
51 1
v4
7 4
v5
v3 2 3
5
v7
26 v6 9
15
v8
解:标p(v1)=0,其余点标T(vi)=+∞,i=2,3,4,5,6,7,8; T(v2)=min{+∞,0+3}=3, k(v2 )=v1 T(v3)=min{+∞,0+5}=5, k(v3 )=v1 T(v4)=min{+∞,0+6}=6, k(v2 )=v1 将具有最小T标号的v2 点的标号改为p标号:p(v2)=3; T(v3)=min{5,3+1}=4, k(v3 )=v2 T(v5)=min{+∞,3+7}=10, k(v5 )=v2 T(v6)=min{+∞,3+4}=7, k(v6 )=v2 目前,点v3 具有最小T标号,将其标号改为p标号: p(v3)=4;
54
3
5
78
55
13
7
1
3
3
1
34 5
6 7
7
小结
• ①从点1出发,因L(1,1)=0,在点1 处标记 0
• ②从点1出发,找相邻点r使得边 L(1,r)权数(距离)最小,若L(1,r) = L(1,1)+ d(1,r) 将 L(1,r) 标于点r处。 并将边1r变红。
相关文档
最新文档