n-puzzle 的直线距离启发式

straight-line distance heuristic for n-puzzle

有人可以向我解释一下在解决 n 难题时直线距离启发式算法是什么样的吗?对于 8x8 拼图,您将如何应用直线距离?这是一个示例拼图:

7 3 4
5 _ 6
8 2 1

让我们回顾一下基础几何,众所周知,两点之间的最短路径是直线。

所以考虑一个 8 拼图,两块拼图之间的直线距离是从拼图 A 到拼图 B 的拼图数,无论是对角线、水平线还是垂直线。

考虑到您问题中的示例,我们将 d(a,b) 称为瓷砖 a 和 b 之间的直线距离:

  • d(1,_) = 1
  • d(1,2) = 1
  • d(1,3) = 2 = d(1,6) + d(6,3) = d(1,_ ) + d(_,3)
  • d(1,4) = 2

等等。

我们现在可以将该定义推广到 n 难题。请记住,允许对角线、水平、垂直 3 个步骤。在这种情况下,启发式通常是最优的。

注意:记住城市之间的直线定义。