N-Puzzle上的X-Y启发式算法

时间:2016-04-26 11:26:26

标签: algorithm heuristics

首先,我看到了这个答案,是的,它解释了X-Y启发式,但示例板对我来说太简单了解一般的启发式。

X-Y heuristic function for solving N-puzzle

有人可以用这个例子来解释X-Y启发式吗?

8 1 2
7 3 6
0 5 4

1 个答案:

答案 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