Algorithm 为什么Dijkstra';s算法在每一轮中提取最小值?

Algorithm 为什么Dijkstra';s算法在每一轮中提取最小值?,algorithm,graph,graph-algorithm,shortest-path,dijkstra,Algorithm,Graph,Graph Algorithm,Shortest Path,Dijkstra,考虑该图适用于Dijkstra算法,即不存在负边权重。我很难说服自己,Dijkstra的算法只有在每一轮中选择最小距离节点进行提取时才有效。除了最小距离节点之外,提取任何东西都会导致Dijkstra算法失败,这是什么证据呢? 我在寻找一个好的论据,但支持的例子是受欢迎的 如果提取非最小节点,则提取的节点在提取时最短距离未知。稍后将计算该距离,但不会再次提取节点,因此在结束时,您将至少有一个错误的最小距离 例如: 您将拥有d[1]=0,然后您将提取它,因为它是唯一要提取的 这将设置: d[3]

考虑该图适用于Dijkstra算法,即不存在负边权重。我很难说服自己,Dijkstra的算法只有在每一轮中选择最小距离节点进行提取时才有效。除了最小距离节点之外,提取任何东西都会导致Dijkstra算法失败,这是什么证据呢?
我在寻找一个好的论据,但支持的例子是受欢迎的

如果提取非最小节点,则提取的节点在提取时最短距离未知。稍后将计算该距离,但不会再次提取节点,因此在结束时,您将至少有一个错误的最小距离

例如:

您将拥有
d[1]=0
,然后您将提取它,因为它是唯一要提取的

这将设置:

d[3] = 3
d[2] = 1
现在您应该提取
2
,但假设您提取
3

您将设置
d[4]=4

现在让我们假设您提取
2
并设置
d[3]=2

接下来,只剩下
4
要提取。你把它提取出来,就完成了

剩下的值是错误的
d[4]=4,而不是
d[4]=3

请注意,这假设您无法多次提取节点(在经典Dijkstra算法中无法)。如果你考虑到这一点,那么你的建议是可行的,但可以说既没有效率,也没有迪克斯特拉的