【发布时间】:2010-05-18 11:17:27
【问题描述】:
我明白Dijkstra's algorithm 是什么,但我不明白它为什么起作用。
在选择下一个要检查的顶点时,为什么 Dijkstra 算法会选择权重最小的那个?为什么不只是任意选择一个顶点,因为算法无论如何都会访问所有顶点?
【问题讨论】:
-
@APC - 感谢您的链接。根据该 wiki 条目,选择最小的顶点会使 Dijkstra 变得“贪婪”。我想我现在需要看看贪心算法的好处。
-
@BeeBand,“贪婪”一词仅仅意味着它在当前时刻做出了最佳选择。贪婪往往相当直观且易于实现,但并不总是最佳的(但在这种情况下,它是)。
-
试试 Cormen 的书以获得更好的解释
why贪心算法是合适的...... -
不一定会访问所有顶点。在您链接的维基百科页面中,请注意顶部的动画。最右边的顶点永远不会被访问(即使它被认为是访问顶点的邻居)
-
我认为它不会选择权重最小的边,而是寻找可以提高当前节点与顶点之间距离的边。
标签: algorithm