考虑下图所示的有向图。顶点S和T之间有多条最短路径.Dijstra的最短路径算法会报告哪一条路径?假设在任何迭代中,仅当发现到v的严格较短路径时才更新到顶点v的最短路径。
我的答案是SBDT,但在解决方案中它给SACET我无法找出原因..
答案 0 :(得分:3)
Dijkstra的算法选择节点如下:
B(3) from S
A(4) from S
C(5) from A
E(6) from C
D(7) from S or B
G(8) from E
T(10) from D or E
因此T
的最短路径为SBDT
,SDT
或SACET
。
但由于 "the shortest path to a vertex v is updated only when a strictly shorter path to v is discovered"
,访问E
时,T
最短路径的先前节点将设为E
而且没有再改变。
因此答案是SACET
。
答案 1 :(得分:-2)
在http://dracos.co.uk/maths/dijkstra/中运行 答案是SDT。 原因: 在节点S之后,考虑其直接邻居 即:A(4),d(7),B(3) 现在考虑这些节点的直接邻居。我们在考虑节点C之前到达SDT(10),因为C不是S的直接邻居。 答:SDT