A Star Search - A*搜索
问题
在的二维方格图中从点移动到点。中存在一些黑色的方块阻隔移动。
解法
A*算法是一种启发式搜索(DFS和BFS属于无差别搜索),通过函数来评价节点的搜索代价(到目标的距离)。当存在多个待搜索节点时,总是优先搜索那些离目标更最近的点来提高搜索效率。
对于节点,函数,其中表示点到的估算/评价距离,表示从节点到节点需要移动的最短距离,表示从点到节点的估算距离。
设置表和表,其中表类似BFS中的队列,存放待搜索的节点;表存放所有已搜索过的节点,并存储从到达的最短距离。
初始时将推入和中,且,表示到达自己的最短距离为。注意本算法中不会使用染色来标记某个节点是否已经被访问,而是用表来记录。
每次从取出节点,该节点满足在中是最小的(若存在多个相同的最小则随意选取其中一个即可),若则搜索结束;否则考虑将四周的节点加入表中,且显然因为多走了一步有。注意,若中已经存在节点,说明在此之前已经被搜索过,这时比较旧的与当前新的,显然为了搜索最短路径,若则用新路径替换旧路径,否则忽略节点不将其加入表。
当为空时,说明永远无法到达。
本问题中该算法的时间复杂度为。
八数码问题
- http://www.d.umn.edu/~jrichar4/8puz.html
- https://www.cs.princeton.edu/courses/archive/fall12/cos226/assignments/8puzzle.html