曼哈顿距离概括

时间:2017-06-04 14:28:10

标签: algorithm artificial-intelligence heuristics planning

对于一项研究,我正在努力寻找一种基于曼哈顿距离的令人满意的启发式算法,它可以解决任何问题和域作为输入。这也称为域独立启发式。 目前,我知道如何在基于网格的问题上应用曼哈顿距离。 有人可以给出一个提示,如何将其概括为适用于每个域和问题,而不仅仅是基于网格的问题?

2 个答案:

答案 0 :(得分:1)

曼哈顿距离的推广很简单。它是一个度量,它将两个多维点之间的距离定义为沿每个维度的距离之和:

md(A, B) = dist(a1, b1) + dist(a2, b2) + . . .

假设沿每个维度的距离很容易计算。对于数字,距离是值之间差异的绝对值。

这也可以扩展到其他领域。例如,两个字符串之间的距离可以作为Levenshtein距离 - 这将被证明是一个与其他维度相结合的有趣度量。

答案 1 :(得分:0)

曼哈顿距离启发式试图测量找到目标状态路径所需的最小步数。越接近实际步数,在搜索期间必须扩展的节点越少,在极端情况下使用完美的启发式,您只需扩展保证在目标路径上的节点。

对于推广这一想法的更多学术方法,您希望搜索域独立启发式;在20世纪90年代早期的21世纪初,有很多关于这方面的研究,尽管即使在今天,少量的领域知识通常可以让你获得更好的结果。话虽如此,有一些好的开始:

  • 删除放宽:展开功能可能包含一些限制,删除一个或多个限制,最终会遇到一个更容易解决的问题,一个可能在实时,您将使用该放松问题生成的值作为启发式值。例如在滑动拼图拼图中,删除一个棋子不能在其他棋子上移动的约束,你最终得到曼哈顿距离,放松一块只能移动到相邻的方块,你最终得到汉明距离启发式。

  • 抽象:将实际搜索中的每个状态映射到您可以完全评估的较小的抽象状态空间。模式数据库是该领域非常流行的工具。

  • 关键路径:当您知道必须通过特定状态(在实际状态空间或抽象状态空间中)时,您可以仅在要切割的关键点之间执行多次搜索大大减少必须在完整状态空间中搜索的节点数

  • 地标:非常准确的启发式算法,代价是通常较高的计算时间。地标是您预先计算到每个可能的其他状态的距离的特定位置(通常使用5-25个地标,具体取决于图形大小),然后在评估每个节点时使用这些预先计算的值计算下限可能距离。

还有一些其他类别的域独立启发式算法,但它们是最受欢迎且广泛用于经典规划应用程序。