考虑下图所示的有向图。顶点S和T之间有多条最短路径。Dijstra将报告哪一条?最短路径算法假设在任何迭代中,只有在发现到v的严格较短路径时,到顶点v的最短路径才会更新。
我的答案是sbdt,但在解决方案中,它给了sacet,我不明白为什么。

最佳答案

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的最短路径是SBDTSDTSACET
但由于"the shortest path to a vertex v is updated only when a strictly shorter path to v is discovered",当访问E时,T的最短路径的前一个节点将被设置为E,并且不会再次更改。
因此答案是SACET

10-08 12:15