图最短路径混淆

Graph shortest path confusion

我想计算这张图中从A到F的最短路径

按照Dijkstra的算法,到了E再到C,然后就回不去E了,请问怎么解决?

我的步骤是:

这听起来像是你从你当前所在的地方走的最短路径,而不是计算到达一个节点的总距离。让我们详细介绍一下。

Dijkstra 算法设置两组节点:已访问(已知距离)和未访问(暂定距离)。我们开始于:

visited: { }
unvisited: { a(dist 0), b(dist ∞), c(dist ∞), d(dist ∞), e(dist ∞), f(dist ∞) }

最小的暂定距离变为永久距离,该节点为“当前”节点。使用当前节点,我们更新当前节点在较短距离内可以到达的暂定距离,并将当前节点标记为已访问:

visited: { a(0) }
unvisited: { b(26), c(50), d(∞), e(∞), f(∞) }

我们重复上面的段落,使最短暂定距离永久化,并更新当前节点在较短距离内可以到达的暂定距离,并将当前节点标记为已访问:

visited: { a(0), b(26) }
unvisited: { c(50), d(91), e(∞), f(∞) }

再一次:

visited: { a(0), b(26), c(50) }
unvisited: { d(91), e(76), f(∞) }

这次我们选择e作为当前节点,因为它的暂定距离小于d。但是 d 的暂定距离没有更新,因为我们已经找到了更好的距离。标记为已访问:

visited: { a(0), b(26), c(50), e(76) }
unvisited: { d(91), f(101) }

现在 d 是当前的,但它不更新任何距离(我们不需要查看访问过的节点,我们已经在那里找到了最佳距离)。所以我们只是将其标记为已访问:

visited: { a(0), b(26), c(50), e(76), d(91) }
unvisited: { f(101) }

现在 f 是当前的,这意味着我们完成了。