Unity A*尋路原理與優(yōu)化思路

http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html

http://www.itdecent.cn/p/22dfcca70064

http://blog.csdn.net/yiyikela/article/details/46134339

A*算法 ?

關鍵點 ?開啟列表【有序列表】 ? 關閉列表。 ?開啟列表是下一個可以訪問的點,關閉列表是不會再被訪問的點

路徑消耗 ?: 一張地圖類似于一個網(加權圖),總路徑消耗 ?F = G + H ? ? ?F:總路徑 ? G:當前位置移動到指定位置的消耗 ? ?H: 從指定位置到終點的消耗

算法思路 ?:圍繞著 ?F = G+H ? 和 開啟列表 關閉列表展開。

1.取F值最小的,加入開啟列表,在遍歷開啟列表中的點,把這個點A的所有周圍的點,加入到開啟列表。

2.如果這個點A周圍的點B已經在開啟列表中,計算從開始點經過A 到達B 的G值是不是變小了,變小了就說明從A走,會更近。就把B的父指定為A。并且更新B點的G值和F值。 如果沒有更近,就不指定。

3.如果這個點A周圍的點B不在開啟列表中,就把B的父指定為A。

4.經過步驟2和步驟3,最終B會得到一個到起始點最小的G值。因為每次循環(huán),都會替換成最近父給B點。當循環(huán)結束,B點的父就是最近的路徑。 【注意】 每次完成一次對B點的循環(huán),就會對開放列表排序一次,下次循環(huán)只取第一個,F(xiàn)最小的點

5.循環(huán)遍歷F值相對低的點,重復2,3步驟,當開啟列表中有結束點,就停止循環(huán)。 從結束點開始往前找父。最終就得到了最短路徑。

拓展點: ?G值得計算策略 以及H值得計算策略

H值計算 ? Abs 絕對值


G的算法 ?Sqrt 平方根


缺點: 啟發(fā)式的搜索法方法,如果地圖格子多,搜索會變慢,成指數級增長。 ?優(yōu)化策略,用二叉堆優(yōu)化A*。?

耗時的部分主要是每次重新去點之前,要對開啟列表做排序。 二叉堆優(yōu)化其實就是對開放列表的數據結構優(yōu)化,用更優(yōu)的排序方法,其實就是堆排序,快速排序這些基礎算法

?二叉堆優(yōu)化A*算法

http://blog.csdn.net/ymiku/article/details/45957107

二叉堆: 完全二叉樹+堆(最大堆或者最小堆) ? 二叉堆的特性: ?根的位置*2 和根的位置*2+1 是這個根的子。 ? ?子的位置/2 是他的根。

二叉堆并不是完全的順序排列,但是總是滿足根節(jié)點是最大或者最小,這就滿足了我們的需求

維護二叉堆

為了往堆里添加元素,我們把它放在數組的末尾。然后和它在當前位置/2?處的父節(jié)點比較,分數部分被圓整。如果新元素的F值更低,

我們就交換這兩個元素。然后我們比較這個元素和它的新父節(jié)點,在(當前位置)/2,小數部分圓整,的地方。如果它的F值更低,

我們再次交換。我們重復這個過程直到這個元素不再比它的父節(jié)點低,或者這個元素已經到達頂端,處于數組的位置1。

添加元素 ,新元素放到最后,然后不停的跟新元素位置/2的做比較,小了就交換。

元素刪除,刪除第一個最小的元素,然后把最后一個元素放到第一個,然后不停的跟*2 和*2+1 做比較。 如果大于,就跟較小的交換,直到*2 和*2+1 沒有元素位置。表明到底了

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 專業(yè)考題類型管理運行工作負責人一般作業(yè)考題內容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,472評論 0 13
  • 1)這本書為什么值得看: Python語言描述,如果學的Python用這本書學數據結構更合適 2016年出版,內容...
    孫懷闊閱讀 12,882評論 0 15
  • http://blog.vckbase.com/panic/archive/2005/03/20/3778.htm...
    卷卷_麥芽呀閱讀 31,972評論 2 19
  • 遇見笑來老師開始,從未有過像2017年這樣有過強烈想法去改變自己,改變對生活的態(tài)度,對周遭的態(tài)度。能看到別人的好,...
    李靜_1bdf閱讀 182評論 0 1
  • 這些天,突然很想吃紅糖饅頭。 這個季節(jié),甘蔗成熟了,一家家的紅糖廠在村子里生氣了火。熬起了紅糖。熱氣騰騰的的熬過的...
    小新豐閱讀 809評論 0 0

友情鏈接更多精彩內容