我在我的AI书籍中读到,用于模拟或游戏路径查找的流行算法(A-Star、Dijkstra)也被用来解决著名的“15拼图”问题。
请问有没有人能给我一些指导,如何将15拼图转化为节点和边缘的图形,以便我可以应用其中的一个算法?
如果我把图中的每个节点都当作一个游戏状态处理,那么这棵树会变得非常大吗?还是说这就是处理的方式?
我在我的AI书籍中读到,用于模拟或游戏路径查找的流行算法(A-Star、Dijkstra)也被用来解决著名的“15拼图”问题。
请问有没有人能给我一些指导,如何将15拼图转化为节点和边缘的图形,以便我可以应用其中的一个算法?
如果我把图中的每个节点都当作一个游戏状态处理,那么这棵树会变得非常大吗?还是说这就是处理的方式?
在15数码问题中,一个好的A-Star启发式方法是计算放错位置的方块数量。因为每个放错位置的方块至少需要移动1次,所以放错位置的方块数量保证小于或等于解决谜题所需的移动次数,使其成为A-Star的适当启发式方法。
请记住,A*算法会通过启发式搜索在问题空间中沿着最有可能达到目标的路径进行探索。
只有在最坏的情况下,它才会不得不对整个问题空间进行泛洪填充。这通常发生在您的问题实际上没有解决方案时。
Here you go http://www.heyes-jones.com/astar.html
只需使用游戏树。请记住,树是一种特殊形式的图。
在您的情况下,每个节点的叶子将是在当前节点可用的移动之一后的游戏位置。