在Dijkstra算法中,每次迭代将以最小距离值选择顶点的引理是什么?

时间:2017-08-09 00:57:31

标签: algorithm

这是来自维基百科的伪代码:

text = open('file.txt','r')

这是一个贪婪的过程。令我困惑的是第13行:为什么必须首先选择距离最小的节点?它背后的理论或引理是什么?

修改:

在从Q中提取之前,dist [u]是INFINITY,或者对应于Yonggoo Noh提到的论文中的u“估计距离”

2 个答案:

答案 0 :(得分:2)

您可以轻松找到Dijkstra算法的证明。

其中一个是:http://web.cs.ucdavis.edu/~amenta/w10/dijkstra.pdf

在该链接中,

  

引理2 v_m 成为 V-S 中的外部顶点,使 d_m 最小。   然后 d_m d_j ,对于所有j∈V-S 。也就是说,到 v_m 的估计距离是从 s V-S 中任何顶点的最短路径长度的下限。

有关Dijkstra的详细证明,请参阅该链接。

答案 1 :(得分:1)

这是为了确保找到的第一个解决方案是最短。在每个选择点,您可以使用最短的已知(部分)路径。当您最终命中终端(成功)节点时,完成的路径必须最短,因为所有未完成的路径已经更长。