A* 最短路徑演算法實作 (用 BinaryHeap + 先配置全地圖 nodes 來加速) |
|
Skyer
高階會員 ![]() ![]() ![]() ![]() 發表:43 回覆:111 積分:120 註冊:2002-04-04 發送簡訊給我 |
這是我在寫外掛 XD 時研究的..
從一開始 300X300 找路要 10 分鐘到後來1000X1000 的地圖,大概 2 秒可求出路徑. // A* 演算法
// 使用方法:
// findpath = AStart.Create(nil);
// findpath.FindPath(START, END, MapSize, Map array);
// for i:=0 to findpath.PathCount-1 do begin
// findpath.Path[i].X, findpath.Path[i].Y
// end; 這裡的 Map array 是把 2 維接成 1 維
START, END = Y * width + X 例
地圖是 Map array 就變成這樣 3X3 1 2 3 1 2 3 4 5 6 7 8 9 4 5 6 ==> 7 8 9附圖
------
-- Regards, Skyer ![]() |
yn1016
一般會員 ![]() ![]() 發表:2 回覆:3 積分:1 註冊:2004-02-13 發送簡訊給我 |
|
yn1016
一般會員 ![]() ![]() 發表:2 回覆:3 積分:1 註冊:2004-02-13 發送簡訊給我 |
|
x803198
一般會員 ![]() ![]() 發表:8 回覆:28 積分:17 註冊:2002-12-06 發送簡訊給我 |
|
Skyer
高階會員 ![]() ![]() ![]() ![]() 發表:43 回覆:111 積分:120 註冊:2002-04-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |