本文給大家分享的是python 無向圖最短路徑算法:請各位大大指教,繼續改進。(修改了中文字符串,使py2exe中文沒煩惱),需要的朋友可以參考下
一心想學習算法,很少去真正靜下心來去研究,前幾天趁着週末去了解了最短路徑的資料,用python寫了一個最短路徑算法。算法是基於帶權無向圖去尋找兩個點之間的最短路徑,數據存儲用鄰接矩陣記錄。首先畫出一幅無向圖如下,標出各個節點之間的權值。
python編寫的最短路徑算法 三聯
其中對應索引:
A ——> 0
B——> 1
C——> 2
D——>3
E——> 4
F——> 5
G——> 6
鄰接矩陣表示無向圖:
算法思想是通過Dijkstra算法結合自身想法實現的.。大致思路是:從起始點開始,搜索周圍的路徑,記錄每個點到起始點的權值存到已標記權值節點字典A,將起始點存入已遍歷列表B,然後再遍歷已標記權值節點字典A,搜索節點周圍的路徑,如果周圍節點存在於表B,比較累加權值,新權值小於已有權值則更新權值和來源節點,否則什麼都不做;如果不存在與表B,則添加節點和權值和來源節點到表A,直到搜索到終點則結束。
這時最短路徑存在於表A中,得到終點的權值和來源路徑,向上遞推到起始點,即可得到最短路徑,下面是代碼:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53