首先,我看到了这个答案,是的,它解释了X-Y启发式,但示例板对我来说太简单了解一般的启发式。
X-Y heuristic function for solving N-puzzle
有人可以用这个例子来解释X-Y启发式吗?
8 1 2
7 3 6
0 5 4
答案 0 :(得分:4)
该算法由2个独立的部分组成 - 用于行和列。
1)行。按行划分输入矩阵 - 每行的元素转到单独的集合。
(1,2,8) - (3,6,7) - (0,4,5)
唯一可用的移动是使用相邻集合中的元素交换0。 完成时,每个元素都在正确的集合中。
交换0和7 - > (1,2,8) - (0,3,6) - (4,5,7)
交换0和8 - > (0,1,2) - (3,6,8) - (4,5,7)
交换0和3 - > (1,2,3) - (0,6,8) - (4,5,7)
交换0和4 - > (1,2,3) - (4,6,8) - (0,5,7)
交换0和8 - > (1,2,3) - (0,4,6) - (5,7,8)
交换0和5 - > (1,2,3) - (4,5,6) - (0,7,8)
所需步数= 6。
2)同样对于列。你从:
开始(0,7,8) - (1,3,5) - (2,4,6)
然后
(1,7,8) - (0,3,5) - (2,4,6)
(0,1,7) - (3,5,8) - (2,4,6)
(1,3,7) - (0,5,8) - (2,4,6)
(1,3,7) - (2,5,8) - (0,4,6)
(1,3,7) - (0,2,5) - (4,6,8)
(0,1,3) - (2,5,7) - (4,6,8)
(1,2,3) - (0,5,7) - (4,6,8)
(1,2,3) - (4,5,7) - (0,6,8)
(1,2,3) - (0,4,5) - (6,7,8)
(1,2,3) - (4,5,6) - (0,7,8)
所需步数= 10
3)总步数:6 + 10 = 16