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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

AStar算法的原理及应用

發布時間:2023/12/31 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 AStar算法的原理及应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在ACM集訓時看到小超同學在寫一個A-Star的尋路算法,于是心癢癢,自己也想寫一個,只是一直沒有時間靜下來好好動動腦筋,近日終于趁周末的時間,把A-Star實現了,可在地圖上尋找較短路徑,也可解任意迷宮。

在計算機中我們將地圖表現為單元格,分可走單元格和不可走單元格。

如果用窮搜找最短路徑當然是可以實現,但代價卻很大。

于是我們必須要讓計算機“有選擇地走”。

若以當前單元格為起點(稱為父單元格,它的周圍有八個方向),下一步走哪呢?

這時就得給下一步的單元格(稱為子單元格)進行“估價”。

“估價”可用估價函數來實現。

入門級的估價函數是這樣的:

終點到目前點的估計代價=終點至當前點的直線距離

于是下一步的代價可以這樣算

代價=起點到當前點的實際步數(通過一個變量累加可以直接得到)+ 終點到目前點的估計代價

然后把估價后的單元格放入“待考察表”

從待考察表中取代價最小的單元格作為起點,對它周圍8個方向的單元格進行估價,然后把它放入“已考察表”。

若對一個單元格估價時,發現它已經在“待考察表”中則比較該單元格原先的估價和當前的估價,保留小的估價,并更新其父單元格屬性。

不斷重復以上過程,直到在“待考察表”中取出的單元格是終點單元格為止,若“待考察表為空”則表示找不到路徑。

到達終點單元格后,通過其“父單元格”屬性,一直找到起點,便構成一條路徑。

原理已經講完了。

根據這個原理,我用C++進行了模擬 (點這里下載演示程序)

我把A-Star的算法封裝成了一個類

使用極其方便

兩個例子:

Enter the map's filename:
b.txt
Rows=7
Cols=13
. . . . . . . . . . . . .
. . . . . . x . . . . . .
. . . x x x x . . . . . .
. . . . . . x . . . . . .
. . . x x x x . . . . . .
. . . . . . x . . . . . .
. . . . . . . . . . . . .

Set the start point ( x , y ):
5 3
Set the end point ( x , y ):
12 3

Steps:
12,3
11,2
10,1
9,0
8,0
7,0
6,0
5,0
4,0
3,1
2,2
3,3
4,3
5,3

Rows=7
Cols=13
. . . . * * * * * * . . .
. . . * . . x . . . * . .
. . * x x x x . . . . * .
. . . * * * x . . . . . *
. . . x x x x . . . . . .
. . . . . . x . . . . . .
. . . . . . . . . . . . .

===========================

Enter the map's filename:
a.txt
Rows=7
Cols=7
. . . . . . .
. x x x . . .
. . . x . x .
. . . x . x .
. . . . . x .
. . . . . x .
. . . . . x .

Set the start point ( x , y ):
0 0
Set the end point ( x , y ):
6 6

Steps:
6,6
6,5
6,4
6,3
6,2
5,1
4,0
3,0
2,0
1,0
0,0

Rows=7
Cols=7
* * * * * . .
. x x x . * .
. . . x . x *
. . . x . x *
. . . . . x *
. . . . . x *
. . . . . x *

總結

以上是生活随笔為你收集整理的AStar算法的原理及应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。