我们如何用A-Star或者Dijkstra的算法求解15题?

时间:2020-03-06 14:22:37  来源:igfitidea点击:

我已经读过一本AI书,其中流行的算法(A-Star,Dijkstra)可用于模拟或者游戏中的寻路,也可用来解决著名的" 15难题"。

谁能给我一些指导,说明如何将15谜题简化为节点和边的图形,以便我可以应用其中一种算法?

如果我将图中的每个节点都视为游戏状态,那么那棵树不会变得很大吗?还是只是这样做的方法?

解决方案

只需使用游戏树即可。请记住,树是图形的一种特殊形式。

在情况下,进行当前节点可用的移动之一后,每个节点的叶子将成为游戏位置。

Google的快速搜索提出了几篇论文,其中涵盖了一些细节:一篇涉及并行组合搜索,一篇涉及外部存储器图搜索

关于算法问题的一般经验法则:某人可能在我们之前完成了该工作,并发表了他们的发现。

还。请注意,至少使用A-Star算法时,我们将需要找出一种可允许的试探法,以确定可能的下一步骤是否比另一步骤更接近最终路线。

对于具有15个谜题的A-Star,一个很好的启发法是在错误位置的平方数。因为每平方英寸至少需要移动1步,所以保证偏移的正方形数小于或者等于解决难题所需的移动数,这使其成为A-Star的适当启发。

在这里,我们可以访问http://www.heyes-jones.com/astar.html

这是对使用A *算法进行详细讨论的8难题问题的一项作业,但也相当简单:

http://www.cs.princeton.edu/courses/archive/spring09/cos226/assignments/8puzzle.html

请记住,A *会在问题空间中进行搜索,并按照启发式方法定义的最可能的目标路径进行搜索。

仅在最坏的情况下,它最终将不得不淹没整个问题空间,而在没有实际解决问题的方法时,往往会发生这种情况。