1. 程式人生 > >JS算法與數據結構

JS算法與數據結構

人類 深度優先 技術分享 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算法與數據結構