这是来自维基百科的伪代码:
text = open('file.txt','r')
这是一个贪婪的过程。令我困惑的是第13行:为什么必须首先选择距离最小的节点?它背后的理论或引理是什么?
修改:
在从Q中提取之前,dist [u]是INFINITY,或者对应于Yonggoo Noh提到的论文中的u“估计距离”
答案 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)
这是为了确保找到的第一个解决方案是最短。在每个选择点,您可以使用最短的已知(部分)路径。当您最终命中终端(成功)节点时,完成的路径必须最短,因为所有未完成的路径已经更长。