JS算法與數據結構
阿新 • • 發佈:2018-05-25
人類 深度優先 技術分享 png left 優先 AS com 封裝
一、尋路模式
1、舉例說明
(1)比如玩遊戲的時候,選定一個目標點,人物就會自動到達我們指定的目標點
(2)在地圖上選定起點和終點,地圖上就會自動給我們打出一條比較合理的路線(可能是最近的一條路線)
2、三種模式
(1)深度優先搜索
a定義:從起點找到相鄰的連接點,再從相鄰點繼續尋找下一個相鄰點,一直搜索到目標點
b特點:一層一層找線路,缺點:並沒有辦法找到最優路線
(2)廣度優先搜索
a定義:像網狀一樣像四周擴散,從一個點向四周擴散,在從下一個點在像四周擴散
b特點:搜索面積大,性能低,要進行大量的計算
(3)啟發式搜索
通過估價函數來模擬判斷是否選擇這個點。
a定義:與人類思想完全吻合,按照人類思想而設計
b特點:既要保證最優路徑又要保證性能
三、估價函數
(1)f(n) = g(n) + h(n)
f(n)是n節點的估價函數
g(n)是初始點到n節點的實際代價
h(n)是n節點到目標點的實際代價
(2)A*算法程序實現
- open隊列——排序估價函數
- close隊列——排除幹擾節點
- 查詢相鄰位置
- 封裝估價函數 f() g() h()
- 設置父節點指針
(3)
JS算法與數據結構