A星算法优化

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

1、长距离导航

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

2、算法优化

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

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

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

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

        

你可能感兴趣的:(算法,unity,广度优先)