AStar 启发函数设计(老物)
作为我出山的第一篇日志,怎么也得写篇对得起我身份和地位的文章吧? 先容我吐槽一下不小心发的贴图,那个只是我不小心收藏了隔壁兄弟班的课表就别大家这么热情的 BB 我感到很有压力,额,废话不多说,立刻进入正题吧。 简单说一下 AStar ( A* )算法,这是一种根据启发函数图遍历算法雏形。 举个栗子,如果你身处迷宫,但你知道出口的方向,那么你应该会尝试往出口方向前进,那么,第一种启发函数就被确定了,取出周围的点,根据一个欧拉距离运算来确定各个点距离出口还有多远,从而选择距离较近的点进行移动,这就是一种由启发函数进行导向的算法模型,假若还不了解什么是启发式搜索请自行移步到百度百科。 好滴,其实上面只是作为自己的一种理解让大家好明白我接下来要说明的内容是关于哪些方面的,如果不是计算机专业的同学看到这里,请自觉跳到最底通过看图例来感受一下启发式函数搜索的魅力吧(笑)。 通常的 A* 算法 通常的 A* 算法主要有两种估值函数,曼哈顿距离以及距离消耗步数进行结合,最终得到权值 F 可以做为下一步将要移动的位置,举个图例就是: 注:右图左上角为图形边界 30*30 ,右下角为搜索次数,起始点为(12,5),终止点为(12,24)。最终搜索到的点为 423*4 (最大值)。 根据上图我们可见,通常 A* 寻路可以获得最短路径,但我这里的想法是应用在游戏寻路中,为了达到这个目的我不得不做出一些牺牲