我在使用Water Jug问题爬山算法时遇到问题:
考虑到两个水壶,其中一个可容纳X升水,另一个可容纳Y升水,确定在其中一个水壶中获得D升水所需的步骤数。
从开始状态开始,(X,Y)=(0,0),它可以生成一些状态:
从这些状态开始,它可以生成其他状态,直到结束状态为(X,D)或(D,Y)。
那么,我可以估计这个问题的启发式函数吗?如何知道哪个州比其他州更好?
谢谢大家。
答案 0 :(得分:2)
将状态空间中的每个状态表示为(x,y)本身。
启发式函数:每个s =(x,y)= | x-D |的h(s) + | y - D | (假设你想最小化h(。))
请考虑这只是一个贪婪的决定,假设其中一个水壶含有过多的水,这是一个好状态!显然,对于目标状态来说这是正确的,但它不能保证达到最佳解决方案,因为它根本不是HC的预期!
为什么这个h(。)?因为它可接受,您可以使用它(可能是在您的老师要求时) A * ,它会为您提供最佳答案。
考虑到以下问题" Hill Climbing"算法,不要期望太多: