在Dijkstra的算法中,如果算法中的某个点有两个或更多具有最小权重的节点,我该怎么办?
在维基百科:http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm的第一步。 6,它说
“将标记有最小暂定距离的未访问节点设置为下一个'当前节点',然后返回步骤3.”
如果有两个或更多节点具有“最小暂定距离”,该怎么办?
任何人都可以帮我解决这个问题吗?
答案 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
是最低的。