日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AStar算法优化

發(fā)布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AStar算法优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

A星算法其實并不是最短路徑算法,它找到的路徑并不是最短的,它的目標首先是能以最快的速度找到通往目的地的路
A星算法也有很多弊端,就比如如果目的地不能到達 他還是會遍歷尋路(可以尋路的時候判斷 也可以算的上優(yōu)化)
其次,如果地圖過大,計算起來會很消耗時間,所以可以在計算上進行優(yōu)化
下面說一下優(yōu)化的一些可行的方法
一.距離過長時
距離很大,中間有很多障礙物時,A星的算法就會遇到瓶頸,不斷加入的可行走點使得排序速度越來越慢,最后可能造成CPU阻塞無法動彈。很影響用戶的體驗,所以我們可以設(shè)置一些常用的路徑,在離線下算好放在數(shù)據(jù)文件中,游戲開啟時放在內(nèi)存里,當需要尋路到那個節(jié)點或者那個節(jié)點附近時,就可以取出來直接使用,而不再需要計算。可以嘗試做一些導航點,當開始計算尋路時優(yōu)先找到最近的導航點,之后只需要進行到達導航點的路徑就可以了
二.優(yōu)化預測值計算方法
如果預測值只關(guān)注在于終點距離最近的點上,那么在尋路過程中的選擇點位的順序就會偏向于與終點更近的點。而如果預測值計算公式,關(guān)注的是整個距離較近的點位上,那么在尋路過程中在選擇點位上也就會偏向整條路徑短的方向上去靠。
預測值算法有很多種,例如 直來直去,可以斜著走,還有按三角形走等
三.排序算法的優(yōu)化
每次從OpenList中取出最小值時,可以用排序算法事先將集合排序好,這樣節(jié)省了查找的時間,再每次插入的時候有序的插入.
也可以考慮采用二叉樹平衡樹結(jié)構(gòu)進行存
四.CloseList的優(yōu)化
實際上這個集合我們所用到的地方只有判斷是否走過這一個地方,為了避免頻繁判斷是否包含節(jié)點(因為每次判斷都需要遍歷一遍集合),可以給節(jié)點添加一個屬性 IsClose ,屬性設(shè)置為int 之后尋路系統(tǒng)中聲明一個靜態(tài)變量 用于比較是否被CloseSet包含,如果相等證明包含,不包含加到Close中,并將值付給節(jié)點,每次尋路將靜態(tài)變量++,這樣雖然會多占用寫內(nèi)存,但是大大的節(jié)省了我們計算的時間

總結(jié)

以上是生活随笔為你收集整理的AStar算法优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。