8拼图的复合启发式

时间:2016-03-18 01:00:39

标签: math artificial-intelligence mathematical-optimization 8-puzzle

在阅读人工智能现代方法时,我遇到了从给定问题的子问题的解决方案成本中推导出启发式的概念。

例如,以下谜题显示了8拼图实例的子问题,其目标是将拼贴1,2,3,4放入正确的位置。

Start State = [ * 2 4 ]    Goal State = [   1 2 ]                      
              [ *   * ]                 [ 3 4 * ]
              [ * 3 1 ]                 [ * * * ]  

然后,作者通过说这些从子问题派生的启发式算法可以通过取最大值来扩展这个概念。

h(n)= max{ h1(n), . . , hm(n) }

此外,与Manhattan distance这样的简单启发式方法相比,使用此方法可以大大提高性能。

我一直试图围绕复合启发式思维和推理它们的理由。假设我们有两个启发式算法来自以下子问题的解决方案成本:

h1234(n) = [   1 2 ]     h5678(n) = [   * * ]                    
           [ 3 4 * ]                [ * * 5 ]
           [ * * * ]                [ 6 7 8 ]

复合启发式是否会像:

h1...8(n)= max{ h1234(n), h5678(n) }
  1. 真的在为完整的8-puzzle问题寻找解决方案?
  2. 在我看来,使用像 h1 ... 8(n)这样的启发式,我们最终将在启发式 h1234(n) h5678之间交替(n)反过来可能会导致一个启发式混乱另一个人的工作而从未达成解决方案。

    1. 或者启发式方法是否会互相帮助完成解决方案?
    2. 老实说,我不知道这是如何起作用的......

1 个答案:

答案 0 :(得分:1)

首先,我将简要概述启发式背后的想法,以及为什么解决子问题(也称为宽松问题)有助于找到解决方案。然后,我将对8-puzzle问题进行以下一般性考虑,从而回答您的具体问题。有关更详细的信息,您可以像以前一样仔细阅读Stuart和Russell撰写的Artificial Intelligence: a Modern Approach第3章;如果你想深化关于最佳优先搜索策略和启发式的主题,你可以从Dechter and Pearl, 1984, ACM的一篇开创性论文开始,看看引用的论文和那些引用它的人。

启发式和知情搜索概述

使用启发式背后的想法是引导搜索通过搜索空间(通常是指数大小)并仔细选择要扩展的节点(这种类型的搜索算法也称为通知搜索算法) 。如果启发式是好的(即,从初始状态开始接近目标的实际成本),那么在搜索期间扩展的节点数量将大大减少,实际上该数量是最优的 - 即没有其他搜索算法可以扩展更少的节点,保证解决方案的最优性。请记住,启发式应该可接受 - 它的给定节点的值不应超过目标的实际成本。如果使用开放列表,则这是唯一需要的属性,即不消除重复状态。如果消除了重复状态,则启发式也应该一致 - 即,给定节点的启发式应该小于或等于到达后继节点的成本和启发式的总和。那个继任者节点。

通常,可以在更少的计算时间内找到解决轻松问题的方法。可以从该解决方案中提取启发式,并且通常比仅来自对整个问题的估计的启发式更具信息性,因为解决方案提供应该执行的实际动作。请注意,在定义子问题时,检查是否可以从子问题的解中得出的启发式对于一般问题是否仍然是可接受的,以便获得最优解是很基础的。

8-puzzle问题

在8-puzzle的特定情况下,来自子问题的启发式对于原始问题仍然是直观可接受的。具体而言,原始问题中的最优解决方案也是解决轻松问题并且另外满足所有放松的问题 限制。因此,解决方案成本与原始最多匹配 最佳解决方案其次,轻松的问题具有较少的约束。因此,搜索算法可以找到更便宜的解决方案并提供更低成本,从而可以放宽解决方案。

鉴于此分析并回答您的问题,使用您提到的启发式方法可以找到完整的8-puzzle问题的解决方案。采用max可以使估算值更接近(并且可接受)到解决方案的实际成本,从而有助于扩展更少数量的节点。