水壶的启发式功能

时间:2014-03-31 19:29:36

标签: algorithm artificial-intelligence hill-climbing

我在使用Water Jug问题爬山算法时遇到问题:

  

考虑到两个水壶,其中一个可容纳X升水,另一个可容纳Y升水,确定在其中一个水壶中获得D升水所需的步骤数。

从开始状态开始,(X,Y)=(0,0),它可以生成一些状态:

  • (X,Y)=(0,Y)
  • (X,Y)=(X,0)

从这些状态开始,它可以生成其他状态,直到结束状态为(X,D)或(D,Y)。

那么,我可以估计这个问题的启发式函数吗?如何知道哪个州比其他州更好?

谢谢大家。

1 个答案:

答案 0 :(得分:2)

将状态空间中的每个状态表示为(x,y)本身。

启发式函数:每个s =(x,y)= | x-D |的h(s) + | y - D | (假设你想最小化h(。))

请考虑这只是一个贪婪的决定,假设其中一个水壶含有过多的水,这是一个好状态!显然,对于目标状态来说这是正确的,但它不能保证达到最佳解决方案,因为它根本不是HC的预期!

为什么这个h(。)?因为它可接受,您可以使用它(可能是在您的老师要求时) A * ,它会为您提供最佳答案。


考虑到以下问题" Hill Climbing"算法,不要期望太多:

  • 山麓问题
    本地峰值吸引了程序的注意力,而不是试图达到“顶级”
  • 高原问题
    区域是平坦的,因此几乎没有什么吸引程序到另一条路径
  • 岭问题
    虽然不是局部的最低限度,但每一步都会下降