我正在用星算法做 8 个谜题求解器。我在这个求解器中实现了曼哈顿和错位的启发式函数。在某些情况下,求解器可以正常工作。但在某些情况下,找到解决方案需要花费大量时间。我认为我的问题之一是在打开列表中查找具有最低值的节点的函数(等待扩展)。
a part of psedocode(from wiki)
while openset is not empty
x := the node in openset having the lowest f_score[] value
if x = goal
return reconstruct_path(came_from, came_from[goal])
................................
那么找到最低 f_score 值的最佳方法是什么?只需找到最小值,否则我们必须在有状态要添加时修改列表(添加状态时对列表进行排序),以便最小值将位于第一个位置。