a星演算法是一種探測性演算法,實現需要關注的重點:二維地圖陣列,關閉列表,開放列表(小根堆),每個點的父節點。
二維地圖陣列用來儲存地圖上是否可通過的標記資訊,假設現在要從地圖的起始點a移動到目的點b,如何尋找到最短的路徑呢?
1. 把地圖上的a點放入關閉列表中,然後將a點周圍的可走點放入乙個以小堆為結構的開放列表,並把它們的父節點指向a點。
2. 計算周圍可走點到a點的距離h和周圍可走點到b點的**距離v,將h和v相加調整更新小根堆。
3. 取出堆頂的點放到關閉列表中,繼續把該點的周圍可走點(該點不在關閉和開放列表中)放入開放列表中,重複第2步。(如果該點已經在開放列表中,就需要再次計算h值,是否可以更改它的父節點值)
4. 直到最後遇到b點才結束探測。
5. 最後通過父節點不斷追溯,便可以得到最短的路徑。
A 演算法理解
廣度優先 bfs 和深度優先 dfs 搜尋 深度優先搜尋,用俗話說就是不見棺材不回頭。演算法會朝乙個方向進發,直到遇到邊界或者障礙物,才回溯。一般在實現的時候,我們採用遞迴的方式來進行,也可以採用模擬壓棧的方式來實現。如下圖,s代表起點,e代表終點。我們如果按照右 下 左 上這樣的擴充套件順序的話,...
dijkstra 演算法理解
求有向圖中乙個源點到其他頂點的最短距離 自己的理解 剛開始的時候相當於有三個集合 v 頂點集合 s 已求得的最短距離頂點集合,假設求a到其他頂點的最短距離 s 剩餘頂點集合 d 儲存的是最短距離值 求一維陣列中的最小值的下標,這個陣列不包含已經求得的頂點 找出最小值下標後,放入到s中,然後求剩餘頂點...
KM演算法理解
二分圖帶權匹配與最佳匹配 什麼是二分圖的帶權匹配?二分圖的帶權匹配就是求出乙個匹配集合,使得集合中邊的權值之和最大或最小。而二分圖的最佳匹配則一定為完備匹配,在此基礎上,才要求匹配的邊權值之和最大或最小。二分圖的帶權匹配與最佳匹配不等價,也不互相包含。我們可以使用km演算法實現求二分圖的最佳匹配。方...