今天做题遇到了一个算法题目,“请描述意思下A*算法,它是什么类型的算法??”,当时我看的时候,隐约记得以前好像看过这个算法,因为印象不是很深刻,就直接写了深度优先,最短路径算法。这个写得不严谨,回来之后查了一下A*算法是啥东西。首先第一条出来的是百度百科,A*是一种静态路由的中求解最有效的算法。我记得以前学习过路由算法就是深度优先,遍历每个与他连接的节点,取最小权值的节点,把遍历的节点保存到已经遍历的对象中或者链表中,说明已经标志过了,然后继续遍历未被访问的对象。今天看了A*算法,也是类似这种型的算法。他的公式表示为 f(n) = g(n)+h(n);其中f(n)表示从初始节点到目标节点的估价函数,g(n)是实际代价函数,h(n)是到达目标的估价。而广度优先只有f(n)=g(n)没有估价,就是没有方向的意思。A*算法的优异程度取决于这个两个函数的值,如果估价h(n)取得好,遍历的节点就减少,那么计算量就会大大的减少,少走弯路。所以h(n)是关键。那h(n)去多少合适呢。在路径搜索中两个节点的距离可以通过欧几里得距离计算的出。这个就要说道启发式算法,要做到最好,一项工夫可能不能,必须多备技能才行。什么是启发算法,我也是第一次听说的,原谅我算法了解的少。不懂就网上查找呗,简要说明一下什么启发式算法。他是为最优解而提出的,在路径一样的情况,在可接受的花费情况下给出可行解,有点类似线性规划的,最优解,但是是针对数学,我们要做的是游侠算法,帮助我们的角色hero找到最好的路径,完成任务。我看了几个bloger写得A*算法都是参照一个国外的人写得,并且引用了里面的图片和代码,说明这个算法学习难度还是有点大。只能说他是路径搜索算法中最优的,非常有用。在游戏中经常可以看到。
试题中的A*算法,什么是A*算法??
最新推荐文章于 2024-10-09 10:00:20 发布