A星算法优化

A星算法计算公式:F 预测值 = G 当前最近步数 + H 当前点到终点的预测值

1、长距离导航

        设置导航点,计算出离线导航数据,游戏运行时加载到内存。寻路时,找到起点附近的导航点和终点附近的导航点,只要计算出起点到导航点和终点到导航点的路径,再加上导航点之间的离线路径,就得到了整个路径。

2、算法优化

        不要对OPEN队列排序,每次插入数据时使用二分查找算法查找插入点,那么每次插入复杂度为O(logN),比快排一次的O(NlogN)要快很多。

3、多次频繁A星寻路的优化

        设置IsClose状态,设置一个属性变量FindIndex,每个寻路节点中存有一个变量FindIndex,每次寻路前都对FindIndex++,在判断IsClose时,当节点中的FindIndex与寻路节点中FindIndex一致时说明已经被取过,不一致说明这个节点没有被取过的。

在A星算法这种经常用频繁用的算法中,一个小小的性能消耗就能放大很多倍,特别注意调用的函数的复杂度,公式的复杂度,以及运算的优化,尽量做到能不调用函数的不调用函数,能简化公式的尽量简化公式,能用&|<>位运算符号代替加减乘除的尽量用位运算代替,节省A星算法的性能开销。

        

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值