我想知道如何使用Manhattan Distance启发式来驱动我在NxN 2d数组中的搜索。我有以下曼哈顿距离:
private int manhattan(int[] pos, int tile) {
int[] dest = new int[] {
(tile - 1) % BOARDSIZE, (tile - 1) / BOARDSIZE
};
return Math.abs(dest[0] - pos[0]) + Math.abs(dest[1] - pos[1]);
}
我将瓷砖移动到空的瓷砖左,右,上或下。如何使用上述函数选择节点的邻居以添加到队列?我不得不把它放在一个双循环或?我正在使用f = g + h
我是谜题的初学者,所以我有点难以理解。我需要帮助。
答案 0 :(得分:0)
我可以看到你重写了之前的问题。您提出的问题将在Russell and Norvig's Artificial Intelligence: A Modern Approach中详细探讨。阅读第3章。查看他们的网站http://aima.cs.berkeley.edu/。他们甚至还有A *的代码,并附有8 puzzle的演示链接。