我们如何用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 *会在问题空间中进行搜索,并按照启发式方法定义的最可能的目标路径进行搜索。
仅在最坏的情况下,它最终将不得不淹没整个问题空间,而在没有实际解决问题的方法时,往往会发生这种情况。