當前位置:歷史故事大全網 - 故事大全 - 为什么八数码问题用a*算法求解合适

为什么八数码问题用a*算法求解合适

其实A*算法也是一种最好优先的算法只不过要加上一些约束条件罢了。由于在一些问题启动时,我们希望能够启动出状态搜索空间的最短路径,所以用最快的方法初始化问题,A*就是干这种事的!我们先下个定义,如果一个估价函数可以求出最短路径,我们称其为可采纳性。A*算法是一个可采纳的最佳优先算法A*算法的估价函数可表示为:f'(n)=g'(n) h'(n)这里,f'(n)是估价函数,g'(n)是起点到节点n的最短路径值,h'(n)是n到目标的最短路经的影响值。由于这个f'(n)其实是无法预先知道的,所以我们用前面的估价函数f(n)做估计。g( n)代替g'(n),但g(n)gt;=g'(n)才可以(大多数情况下都是满足的,可以不用考虑),h(n)代替h'(n),但h(n)lt;=h'(n)才可(这一点特别重要)。可以证明应用这样的估价函数是可以找到最短路径的,可归纳的。我们说应用这种估价函数最好的优先算法就是A*算法。举个例子,其实广度优先算法就是A*算法的特例。其中g(n)是节点所在的层数,h(n)=0,这种h(n)肯定小于h'(n),所以由可知广度优先算法是一个可引用的。实际上也是。当然它是一个最臭的A*算法。再说一个问题,就是有关h(n)启发函数的信息性。h(n)的信息性通俗点说其实就是在估计一个节点的值时的约束条件,如果信息越多或约束条件越多则排除的节点位置多,估价函数就好或者说这个算法很好。这就是为什么广度优先算法那么臭的原因了,谁叫它的h(n)=0,一点启发信息都没有。但是在游戏开发中由于实时性的问题,h(n)的信息越多,它的计算量就越大,运动的时间要求就多。就应该适当的减少h(n)的信息,即增加约束条件。但是算法的精度就差了,这里有存在一个平衡的问题。

  • 上一篇:後期是什麽意思?
  • 下一篇:有高級感的網名酷酷的 比較高級的網名
  • copyright 2024歷史故事大全網