在阅读人工智能一种现代方法时,我遇到了从给定问题的子问题的解决方案成本中推导出启发式的概念。
例如,以下拼图显示了 8 拼图实例的子问题,其中目标是将图块 1、2、3、4 放置到正确位置。
Start State = [ * 2 4 ] Goal State = [ 1 2 ]
[ * * ] [ 3 4 * ]
[ * 3 1 ] [ * * * ]
然后,作者扩展了这个概念,说这些从子问题导出的启发式可以通过取最大值来组合。
h(n)= max{ h1(n), . . , hm(n) }
此外,通过使用这种方法,与曼哈顿距离等简单的启发式方法相比,性能大大提高。
我一直试图围绕复合启发式方法及其推理进行思考。假设我们从以下子问题的解决方案成本中得出两个启发式:
h1234(n) = [ 1 2 ] h5678(n) = [ * * ]
[ 3 4 * ] [ * * 5 ]
[ * * * ] [ 6 7 8 ]
将复合启发式像:
h1...8(n)= max{ h1234(n), h5678(n) }
- 真的在为完整的 8 道难题寻找解决方案吗?
在我看来,使用像h1...8(n)这样的启发式,我们最终会在启发式h1234(n)和h5678(n)之间交替,这反过来可能会导致一个启发式扰乱另一个启发式的工作,并且永远不会达成解决方案。
- 还是启发式方法会相互帮助以实现完整的解决方案?
老实说,我不明白这怎么可能……