首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

A*算法的高人帮帮小弟我~多谢啦

2013-01-06 
A*算法的高人帮帮我~~谢谢啦八数码问题说是以误差函数,即和目标的误差图的误差来定义h(n),怎么理解这样的

A*算法的高人帮帮我~~谢谢啦
八数码问题说是以误差函数,即和目标的误差图的误差来定义h(n),怎么理解这样的误差函数满足h(n)=<h*(n)呢???想了好久都不能理解,哪位大侠可以帮帮我~~
具体一点谢谢
[解决办法]
我也是正在学习中,也不知道正解,不过我说说我的理解吧,仅供参考:

h*(n)是当前节点到目标节点的预估值,这个预估值事实上是很难知道的,所以我们需要找到一个h(n),只要它的值小于等于h*(n),就可以采纳这个h(n),也就是说可以采用f(n) = g(n) + h(n)。

拿8puzzle问题来说,目前有的启发式函数h(n)据说很多,不过我只简单了解过两种,一种是计算出目标与当前状态不相同格的数量,我叫他h1;另一种是找出当前状态中的与目标不同的格,然后计算出他走到目标状态需要多少步,我叫他h2。h1和h2已经被证明都小于h*(n)(这个证明我好像在某本外文书中看到过,不过既然都公认了所以当时我没仔细看),所以他们都是可以采纳的h(n),而事实上h1<h2的,这个也是被证明了的,不过不需要数学证明,从定义上就可以看得出来,因为h2给的信息很明显比h1多,所以它是更接近h*(n)的,所以h2优于h1.

不知道我的表达是不是清楚,我已经尽力了,呵呵,不知道是不是你要问的。不知道谁有正解,我也想学习。

热点排行