Dijkstra的算法:如果有两个或更多重量最小的节点怎么办?

时间:2012-02-13 17:13:36

标签: dijkstra

在Dijkstra的算法中,如果算法中的某个点有两个或更多具有最小权重的节点,我该怎么办?

在维基百科:http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm的第一步。 6,它说

“将标记有最小暂定距离的未访问节点设置为下一个'当前节点',然后返回步骤3.”

如果有两个或更多节点具有“最小暂定距离”,该怎么办?

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

简答

选择其中之一。除非你有另一种启发式方法可以使用,否则你无法分辨哪种方法更好。


更多解释

考虑将一些元素排序为数组:

9 6 3 3 8

以最低的顺序排序

3 3 6 8 9

如果您要查询该数组以确定最低数,则答案为3。哪个3无关紧要。


同样,如果你有更多的信息。比如说那些int实际上是浮点数并且按整数部分排序。您最终可能会得到数组:

3.2  3.1  6.0  8.5  9.2

在这里你可以使用另一种启发式方法,你也可以检查小数部分,你可以确定3.1是最低的。