廣度優(yōu)先搜索(BFS)
用于在無權(quán)圖中尋找從指定起點到目標的最短路徑,無法處理帶權(quán)值的圖,因為是模擬行走過程,只記錄經(jīng)過的步數(shù)。無權(quán)圖的典型代表即x,y坐標網(wǎng)格。
算法思想:
從起點出發(fā)模擬行走過程,維護一個邊緣隊列,循環(huán)處理隊列中的邊緣點,每個循環(huán)為一步,從當前隊列中的每個邊緣點外推新的邊緣點,加入邊緣隊列,同時將該舊邊緣點移出隊列,標記為已到達。最終到達目標終點時的循環(huán)次數(shù)也就是最少步數(shù),在無權(quán)的前提下也等同于最短路徑。
Dijkstra算法
用于處理帶權(quán)但無負權(quán)邊的圖的最短路徑問題。
算法思想:
不斷擴張已訪問點集合,初始時集合中只有起點,每輪循環(huán)將一個未訪問點加入集合,這個點應當選取所有未訪問點中與“整個已訪問集合”最距離近的一個點。每輪循環(huán)需要持續(xù)更新維護的是每個未訪問點與“整個已訪問集合”的最短距離,以及此距離是通過集合中那個點到達該未訪問結(jié)點得到的。每當有未訪問點被納入集合,就可能因為多了這個中轉(zhuǎn)點導致部分未訪問點與集合距離的縮短。只有在所有點都被納入集合后才能決定起點到終點的最短路徑。