2最短路算法-disktra
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最短路算法
最短路问题
• 最短路问题是网络理论中应用最广的问题之一。许 多优化问题可以使这个模型,如设备更新、管道铺 设、线路安排、厂区布局等。图论方法比较有效。 • 最短路问题的一般提法如下:设G=(V,E)为连通 图,图中各边(vi,vj)的权为lij 为图中任意两点,求一条道路 ,使它是从 vs , v t vs到v 的所有道路中总权最小的道路。即: t
• 课堂练习1:利用Dijkstra算法,算出图中,v1到 v5的最短路的长度?
V2 4 V1 3 V3 2 8 10 7
5
V4
1
V5
传统Dijkstra算法
• 将路网节点分为未标记节点、临时标记节点和永久标记 节点三种类型。 • 所有节点初始化为未标记节点,在路线搜索过程中,最
优路线节点相连通的节点为临时标记节点
40
33 63 15 0
50
63 93 48 63
由于 D(v6)=48最小,所以医院健在v6,此时离医院最远 的小区 v5距离为48。
L( )
最小.
( vi , v j )
l
ij
内容
• • • • Dijkstra最优路线算法 A*算法 弗洛伊德算法 最短路算法在交通中的应用
一、Dijkstra最优路线算法
• Dijkstra算法的主要思想是用逐点增长的方法构造一棵路径 树,从而得到从该树的根节点(即指定节点)到其它所有 节点的最优路线。
解:实际是要求出图的中心,可以化为一系列求最 短路问题。先求出 v1 到其他各顶点的最短 路长dj,令D(v1)=max{d1,d2,…,d7},表示若医 院建在v1, 则离医院最远的小区距离为D(v1), 再依次计算v2,v3,…,v7到其余各点的最短路, 类似求出D(v2),D(v3),…D(v7), D(vi)(i=1,2,…,7)中最小者即为所求,计算结 果见表5-3。
search area of A* n s g(n) h(n) d
f(n)=g(n)+h(n)
Node with minimum f(n) selected for expansion
search area of Dijkstra
最短路算法在交通中的应用
• 路线优化算法是导航、诱导、商用车辆调 度等系统的关键技术模块,决定系统的应 用效率和结果的准确性。 路线优化算法也是交通分配、选址的核心 模块
• 每一次循环都是从临时标记节点中,搜索距离起点路权
总和最小的节点作为永久标记节点,直至找到目标节点
或者所有节点都成为永久标记才结束算法。
传统Dijkstra算法的缺点
• 在传统最优路线算法中,所有节点无序地存储在
无序表中 • 每次搜索与当前检查点相邻的节点时,需要遍历 所有的节点。 • 这无疑成为算法搜索时的瓶颈。
优化方法
• 将所有与当前检查点相连的节点存储在一 起,使每个搜索过程不必全部遍历或者只 较少地遍历节点。 • 尽量减少最优路线分析过程中搜索的临时 标记节点的数量,从而尽快到达目标点。
A* algorithm V.S. Dijkstra algorithm
If h(n) <=the cost from n to the goal, then A* finds a shortest path. The greater h(n) is, the less nodes A* expands, the more efficient A* is. If h(n) is 0, Dijkstra's algorithm.
v1 V1 V2 0 30
v2 30 0
v3 50 20
v4 63 33
v5 93 63
v6 45 15
v7 60 30
D(vi) 93 63
V3
V4 V5 V6 v7
50
63 93 45 60
20
33 63 15 30
0
20 50 2
50
30 0 48 63
25
18 48 0 15
•
算法流程
设置起始路段 搜索与其相邻的路段
判断拓扑转向表中 impedance 是否为 3 是 是
否
判断当前时刻是否 在禁行时段内 否 该路段与相邻路段连通
判断拓扑转向表中 impedance 是否为 1 是
否
• 选址问题:已知某地区的交通网络如图5-39所示,其中 lij 为小区间公路距离,问 点代表居民区,边表示公路, 区中心医院建在哪个小区,可使距离医院最远的小区居 民就诊时所走的路程最近?
v3 vs v2 v1 v4 v6 v8 v15 v11 v13 v16 v5 v9 v7 v10 v12 v14
Dijkstra算法
标号法基本思想
标号的步骤
算例1
• 某地区四个城镇间的公路交通网,城镇1有一批货 物需运往城镇4,网络边上的数据为综合运输费用, 如何选择路线才能使总的综合运费最少?
最短路问题
• 最短路问题是网络理论中应用最广的问题之一。许 多优化问题可以使这个模型,如设备更新、管道铺 设、线路安排、厂区布局等。图论方法比较有效。 • 最短路问题的一般提法如下:设G=(V,E)为连通 图,图中各边(vi,vj)的权为lij 为图中任意两点,求一条道路 ,使它是从 vs , v t vs到v 的所有道路中总权最小的道路。即: t
• 课堂练习1:利用Dijkstra算法,算出图中,v1到 v5的最短路的长度?
V2 4 V1 3 V3 2 8 10 7
5
V4
1
V5
传统Dijkstra算法
• 将路网节点分为未标记节点、临时标记节点和永久标记 节点三种类型。 • 所有节点初始化为未标记节点,在路线搜索过程中,最
优路线节点相连通的节点为临时标记节点
40
33 63 15 0
50
63 93 48 63
由于 D(v6)=48最小,所以医院健在v6,此时离医院最远 的小区 v5距离为48。
L( )
最小.
( vi , v j )
l
ij
内容
• • • • Dijkstra最优路线算法 A*算法 弗洛伊德算法 最短路算法在交通中的应用
一、Dijkstra最优路线算法
• Dijkstra算法的主要思想是用逐点增长的方法构造一棵路径 树,从而得到从该树的根节点(即指定节点)到其它所有 节点的最优路线。
解:实际是要求出图的中心,可以化为一系列求最 短路问题。先求出 v1 到其他各顶点的最短 路长dj,令D(v1)=max{d1,d2,…,d7},表示若医 院建在v1, 则离医院最远的小区距离为D(v1), 再依次计算v2,v3,…,v7到其余各点的最短路, 类似求出D(v2),D(v3),…D(v7), D(vi)(i=1,2,…,7)中最小者即为所求,计算结 果见表5-3。
search area of A* n s g(n) h(n) d
f(n)=g(n)+h(n)
Node with minimum f(n) selected for expansion
search area of Dijkstra
最短路算法在交通中的应用
• 路线优化算法是导航、诱导、商用车辆调 度等系统的关键技术模块,决定系统的应 用效率和结果的准确性。 路线优化算法也是交通分配、选址的核心 模块
• 每一次循环都是从临时标记节点中,搜索距离起点路权
总和最小的节点作为永久标记节点,直至找到目标节点
或者所有节点都成为永久标记才结束算法。
传统Dijkstra算法的缺点
• 在传统最优路线算法中,所有节点无序地存储在
无序表中 • 每次搜索与当前检查点相邻的节点时,需要遍历 所有的节点。 • 这无疑成为算法搜索时的瓶颈。
优化方法
• 将所有与当前检查点相连的节点存储在一 起,使每个搜索过程不必全部遍历或者只 较少地遍历节点。 • 尽量减少最优路线分析过程中搜索的临时 标记节点的数量,从而尽快到达目标点。
A* algorithm V.S. Dijkstra algorithm
If h(n) <=the cost from n to the goal, then A* finds a shortest path. The greater h(n) is, the less nodes A* expands, the more efficient A* is. If h(n) is 0, Dijkstra's algorithm.
v1 V1 V2 0 30
v2 30 0
v3 50 20
v4 63 33
v5 93 63
v6 45 15
v7 60 30
D(vi) 93 63
V3
V4 V5 V6 v7
50
63 93 45 60
20
33 63 15 30
0
20 50 2
50
30 0 48 63
25
18 48 0 15
•
算法流程
设置起始路段 搜索与其相邻的路段
判断拓扑转向表中 impedance 是否为 3 是 是
否
判断当前时刻是否 在禁行时段内 否 该路段与相邻路段连通
判断拓扑转向表中 impedance 是否为 1 是
否
• 选址问题:已知某地区的交通网络如图5-39所示,其中 lij 为小区间公路距离,问 点代表居民区,边表示公路, 区中心医院建在哪个小区,可使距离医院最远的小区居 民就诊时所走的路程最近?
v3 vs v2 v1 v4 v6 v8 v15 v11 v13 v16 v5 v9 v7 v10 v12 v14
Dijkstra算法
标号法基本思想
标号的步骤
算例1
• 某地区四个城镇间的公路交通网,城镇1有一批货 物需运往城镇4,网络边上的数据为综合运输费用, 如何选择路线才能使总的综合运费最少?