Algorithm 为什么Dijkstra';s算法需要使用deleteMin()和decreaseKey()?

Algorithm 为什么Dijkstra';s算法需要使用deleteMin()和decreaseKey()?,algorithm,language-agnostic,computer-science,dijkstra,Algorithm,Language Agnostic,Computer Science,Dijkstra,在大多数伪代码中,我通常会发现以下内容: DeleteMin(返回具有最小键的元素,并将其从集合中删除。) DecreaseKey(适应特定元素键值的减少) 为什么DeleteMin被用来检索最小的元素——为什么不是一个随机元素 DecreaseKey的目的是什么?在伪代码中,它总是在元素值更改后调用。它在干什么 为什么使用DeleteMin来检索最小的元素-为什么不 随机的 我们从Q集合中检索并删除min元素 打开顶点,因为它可以确保最小值(稍后在证明中使用)。 如果没有它,就不能

在大多数伪代码中,我通常会发现以下内容:

  • DeleteMin(返回具有最小键的元素,并将其从集合中删除。)

  • DecreaseKey(适应特定元素键值的减少)

  • 为什么DeleteMin被用来检索最小的元素——为什么不是一个随机元素
  • DecreaseKey的目的是什么?在伪代码中,它总是在元素值更改后调用。它在干什么
为什么使用DeleteMin来检索最小的元素-为什么不 随机的

我们从
Q
集合中检索并删除min元素 打开顶点,因为它可以确保最小值(稍后在证明中使用)。 如果没有它,就不能保证最小功能,解决方案也不会是最优的(不会是最短路径)。请记住,一旦找到
v
的路径,我们将其从
Q
中删除,并且永远不会重新打开它,因此我们取出的边必须具有可用路径最小的边


请注意,对于这个(最小)顶点,将其设为
v
:对于
Q
d(u)+x中的每个
u
,您所说的是a,而不是Dijkstra的算法吗?如果随机选取下一个节点(不是最小距离),则该算法可能重复。@PetarMinchev为什么不正确?调整键值的顺序有什么关系?@PetarMinchev:我不同意这是一个骗局。另一个问题特别问:为什么我们不重新添加v,而这个问题问-为什么首先要修改?它还询问了deleteMin()步骤,这是在修改之前发生的。