Algorithm 为什么Dijkstra';s算法在每一轮中提取最小值?
考虑该图适用于Dijkstra算法,即不存在负边权重。我很难说服自己,Dijkstra的算法只有在每一轮中选择最小距离节点进行提取时才有效。除了最小距离节点之外,提取任何东西都会导致Dijkstra算法失败,这是什么证据呢?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]
我在寻找一个好的论据,但支持的例子是受欢迎的 如果提取非最小节点,则提取的节点在提取时最短距离未知。稍后将计算该距离,但不会再次提取节点,因此在结束时,您将至少有一个错误的最小距离 例如: 您将拥有
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算法中无法)。如果你考虑到这一点,那么你的建议是可行的,但可以说既没有效率,也没有迪克斯特拉的