A星算法

2021-04-30  本文已影响0人  我家菇凉

   A星的作用相当于导航用来寻路的,其次是A*算法适合用于2D类型的游戏  

    A*基本语言    用来不停的遍历身边的点  知道找到最终点为止  

(1)A*算法的公式   f(寻路的总消耗  )  =g(当前位置到起点的消耗)+h(当前位置到终点的消耗) 

(2) 开启列表 (open) 当前节点周围的  能够走到的节点  和关闭列表  (Close)  已经走过的节点

(3) 格子对象的父对象    最终路径是    :通过父节点往回拉的过程   

            而不是存在于关闭列表中的点就是最终的路程    

每一次从新的点去找周围的点  (每一次去遍历周围的8个点  从8个点中去寻找 最优的那个点  然后吧最优的点放在关闭列表中 )  

然后在通过最优的点在遍历周围的点    吧周围的8个点放在开启列表  然后把最优的点放到 关闭列表    ,注意每一次放在关闭列表中的点我们都要放

判断他是不是终点  如果是证明路径已经找完了  如果  不是就继续去找      )

有一种情况是   如果障碍物  多的情况下      他会有一种  在遍历周围点的过程中如果遇到此路不通的情况的     

然后他会重新去寻找别的路   所以说  放在闭合列表中的不一定是最终路径   

关于A*算法的优化   

因为他每次都要对那些点进行排序  

能走的节点可以改成一个2叉堆   他是最小的 每次从堆顶弹出最小的 f值  

吧我们已经走过的节点  换成了一个键值对  用字典来存储  每次存一个我走过节点的Id  判断节点的ID是否在里面  

因为就是一个查找功能  性能会有很大的提升    


上一篇 下一篇

猜你喜欢

热点阅读