《DSAA》 9.3.2 Dijkstra 算法

曾經下圍棋樂此不疲,雖說棋力總也不漲,最近聽朋友的建議學學算法,找來一本初級的《DSAA》,按照書上的講解或僞代碼寫了一些case,意外地覺得和下圍棋的樂趣有些類似。


這裏用 Dijkstra 算法求有向賦權圖中任一節點到其他所有節點的最小路徑,

該實現的大致思路:

1)將圖裝入一個鄰接表,設所有頂點爲未知,起點距離爲0,其他頂點距離(起點)爲無窮大

2)選擇距離最小的未知頂點,進行處理:

設該頂點爲已知

依次計算起點經由該頂點到其各鄰接點的距離,如小於鄰接點原記錄的距離,則調整距離並記下路徑

3)反覆執行第二步,直到所有頂點已知

4)根據記錄遞歸輸出最小路徑


僞代碼見原書,我的case運行結果如下:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章