对于更新部分,
for all neighbors w of u:
if dist[w] > dist[u] + l(u,w)
dist[w] = dist[u] + l(u,w)
prev[w] = u
decreasekey(H,w)
这里,w 是节点的 ID,我认为它应该类似于 pair(ID,key),其中 key 是 dist[ID]。如果是这样,在优先级队列中查找 ID 为 w 的节点应该花费 O(N) 时间而不是 O(logN) 时间。那么,为什么 Dijkstra 算法中的 reductionkey 需要 O(logN) 时间?