最短路问题案例(short-path problem)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
l(A)=22, l(A)=l(F)+W(F,A)
三、Dijkstra算法演示:
5.选取顶点
U=V\S={A(22), B (13)}
l(B)=13, l(B)=l(C)+W(C,B)
6.选取顶点
U=V\S={A(22)}
l(A)=22, l(A)=l(F)+W(F,A)
三、Dijkstra算法演示:
1. 初始时, S只包含起点s ; U包含除s外的其他顶 点,且U中顶点的距离为“起点s到该顶点的距离”[例. U中顶点v的距离为d(s,v),然而s与v不相邻,故为inf]。
2. 从U中选出“距离最短的顶点w”,并将顶点w 加入到S 中;同时,从U中移除顶点w 。
3. 更新U中各个顶点到起点s的距离。 由于上一步中 确定了w是求出最短路径的顶点,从而可以利用w来更新 其他顶点的距离。[例. (s,v)的距离大于(s,w) + (w,v)]。
l(E)=4, l(E)<l(C)+W(C,E); l(F)=9, l(F)=l(C)+W(C,F)
三、Dijkstra算法演示:
3.选取顶点 U=V\S={A(inf), B (13), F(6), G (12)}
l( )=6, l(F)=l(E)+W(E,F)
4.选取顶点 U=V\S={A(22), B (13), G(12)}
4. 重复步骤2和3,直到遍历完所有顶点。
三、Dijkstra算法演示:
1.选取顶点 U=V\S={A(inf), B (inf), C (3), E (4), F (inf), G (inf)}
2.选取顶点 U=V\S={A(inf), B (13), E (4), F (9), G (inf)}
7.选取顶点 U=V\S=empty set
根 为 D 的 树
迭代次数 D-1 A-2 B-3
C-4
E-5
F-6 G-7
1
inf
inf
inf
inf
inf
inf
2
inf
inf4Biblioteka infinf3
inf
13
9
inf
4
inf
13
12
5
22
13
6
22
7
最后标记 l(v)
0
22
13
3
4
6
12
z(v)
D
F
C
D
D
E
1. 通过Dijkstra计算图G中的最短路径时,需要指 定起点s (即从顶点s开始计算)。
2. 此外,引进两个集合S和U。 S的作用是记录已 求出最短路径的顶点(以及相应的最短路径长度), 而U则是记录还未求出最短路径的顶点(以及该顶点到 起点s的距离)。
二、Dijkstra算法步骤:
3. 初始时, S中只有起点s ; U中是除s之外的顶点, 并且U中顶点的路径是“起点s到该顶点的路径”。然 后,从U中找出路径最短的顶点,并将其加入到S中; 接着,更新U中的顶点和顶点对应的路径。然后,再从 U中找出路径最短的顶点,并将其加入到S中,接着, 更新U中的顶点和顶点对应的路径最短。……重复操作, 直到遍历完全部顶点。
最短路问题
一、最短路问题
事实:如果P是D中从vs到vj的最短路,vi是P中的一 个点,那么,从vs沿P到vi的路是从vs到 vi的最短路。
最短路的子路也是最短路。
二、Dijkstra算法步骤:
迪杰斯特拉(Dijkstra)算法是典型的最短路径算法, 用于计算一个节点到其他节点的最短路径。
它的最主要特点是以起始点为中心向外层层扩展(广 度优先搜索思想),直到扩展到终点为止。
E
三、Dijkstra算法步骤:以D为根的最短路径树
四、Dijkstra算法程序结果演示:
四、Dijkstra算法程序结果演示:
四、Dijkstra算法程序结果演示:
三、Dijkstra算法演示:
5.选取顶点
U=V\S={A(22), B (13)}
l(B)=13, l(B)=l(C)+W(C,B)
6.选取顶点
U=V\S={A(22)}
l(A)=22, l(A)=l(F)+W(F,A)
三、Dijkstra算法演示:
1. 初始时, S只包含起点s ; U包含除s外的其他顶 点,且U中顶点的距离为“起点s到该顶点的距离”[例. U中顶点v的距离为d(s,v),然而s与v不相邻,故为inf]。
2. 从U中选出“距离最短的顶点w”,并将顶点w 加入到S 中;同时,从U中移除顶点w 。
3. 更新U中各个顶点到起点s的距离。 由于上一步中 确定了w是求出最短路径的顶点,从而可以利用w来更新 其他顶点的距离。[例. (s,v)的距离大于(s,w) + (w,v)]。
l(E)=4, l(E)<l(C)+W(C,E); l(F)=9, l(F)=l(C)+W(C,F)
三、Dijkstra算法演示:
3.选取顶点 U=V\S={A(inf), B (13), F(6), G (12)}
l( )=6, l(F)=l(E)+W(E,F)
4.选取顶点 U=V\S={A(22), B (13), G(12)}
4. 重复步骤2和3,直到遍历完所有顶点。
三、Dijkstra算法演示:
1.选取顶点 U=V\S={A(inf), B (inf), C (3), E (4), F (inf), G (inf)}
2.选取顶点 U=V\S={A(inf), B (13), E (4), F (9), G (inf)}
7.选取顶点 U=V\S=empty set
根 为 D 的 树
迭代次数 D-1 A-2 B-3
C-4
E-5
F-6 G-7
1
inf
inf
inf
inf
inf
inf
2
inf
inf4Biblioteka infinf3
inf
13
9
inf
4
inf
13
12
5
22
13
6
22
7
最后标记 l(v)
0
22
13
3
4
6
12
z(v)
D
F
C
D
D
E
1. 通过Dijkstra计算图G中的最短路径时,需要指 定起点s (即从顶点s开始计算)。
2. 此外,引进两个集合S和U。 S的作用是记录已 求出最短路径的顶点(以及相应的最短路径长度), 而U则是记录还未求出最短路径的顶点(以及该顶点到 起点s的距离)。
二、Dijkstra算法步骤:
3. 初始时, S中只有起点s ; U中是除s之外的顶点, 并且U中顶点的路径是“起点s到该顶点的路径”。然 后,从U中找出路径最短的顶点,并将其加入到S中; 接着,更新U中的顶点和顶点对应的路径。然后,再从 U中找出路径最短的顶点,并将其加入到S中,接着, 更新U中的顶点和顶点对应的路径最短。……重复操作, 直到遍历完全部顶点。
最短路问题
一、最短路问题
事实:如果P是D中从vs到vj的最短路,vi是P中的一 个点,那么,从vs沿P到vi的路是从vs到 vi的最短路。
最短路的子路也是最短路。
二、Dijkstra算法步骤:
迪杰斯特拉(Dijkstra)算法是典型的最短路径算法, 用于计算一个节点到其他节点的最短路径。
它的最主要特点是以起始点为中心向外层层扩展(广 度优先搜索思想),直到扩展到终点为止。
E
三、Dijkstra算法步骤:以D为根的最短路径树
四、Dijkstra算法程序结果演示:
四、Dijkstra算法程序结果演示:
四、Dijkstra算法程序结果演示: