2012 数据结构 最短路径Dijkstra算法 选择题
第 7 题

对如下有向图带权图,若采用迪杰斯特拉(Dijkstra)算法求从源点 a 到其他各顶点的最短路径,则得到的第一条最短路径的目标顶点是 b,第二条最短路径的目标顶点是 c,后续得到的其余最短路径的目标顶点依次是( )。

2012 年 408 数据结构第 7 题有向带权图

最短路径

A. d, e, f

B. e, d, f

C. f, d, e

D. f, e, d

[tag_link]

正确答案:C

从 a 到各顶点的最短路径的求解过程:

顶点第 1 趟第 2 趟第 3 趟第 4 趟第 5 趟
b(a,b)2
c(a,c)5(a,b,c)3
d(a,b,d)5(a,b,d)5(a,b,d)5
e(a,b,c,e)7(a,b,c,e)7(a,b,d,e)6
f(a,b,c,f)4
集合 S{a,b}{a,b,c}{a,b,c,f}{a,b,c,f,d}{a,b,c,f,d,e}

后续目标顶点依次为 f,d,e。第三轮已有 dist(f)=4<dist(d)=5<dist(e)=7,先固定 f;随后固定 d,并把 e 更新为路径 a→b→d→e、长度 6;最后固定 e。因此选 C。