NetworkX系列教程(10)-算法之五:廣度優先與深度優先
阿新 • • 發佈:2018-06-29
TE aos 廣度優先搜索 寫到 廣度優先 comment work form path
小書匠 Graph 圖論
廣度優先搜索算法示例
深度優先搜索算法示例
重頭戲部分來了,寫到這裏我感覺得仔細認真點了,可能在NetworkX中,實現某些算法就一句話的事,但是這個算法是做什麽的,用在什麽地方,原理是怎麽樣的,不清除,所以,我決定先把圖論
中常用算法弄個明白在寫這部分.
圖論常用算法看我的博客:
下面我將使用NetworkX實現上面的算法,建議不清楚的部分打開兩篇博客對照理解.
我將圖論的經典問題及常用算法的總結寫在下面兩篇博客中:
圖論---問題篇
圖論---算法篇
目錄:
註意:如果代碼出現找不庫,請返回第一個教程,把庫文件導入.
11.6廣度優先搜索算法(BFS)
- #構建一個長度為10的路徑
- G = nx.path_graph(10
- #顯示graph
- nx.draw_spring(G,with_labels=True)
- plt.axis(‘on‘)
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #以4為頂點,廣度遍歷
- print(list(nx.bfs_tree(G,4).edges()))
廣度優先搜索算法示例
輸出:
[(1, 0), (2, 1), (3, 2), (4, 3), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
11.7深度優先搜索算法(DFS)
- #構建一個長度為10的路徑
- G = nx.path_graph(10
- #顯示graph
- nx.draw_spring(G,with_labels=True)
- plt.axis(‘on‘)
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #以5為頂點,深度遍歷,限定深度為3
- T = nx.dfs_tree(G, source=5, depth_limit=3)
- list(T.edges())
深度優先搜索算法示例
輸出:
[(3, 2), (4, 3), (5, 4), (5, 6), (6, 7), (7, 8)]
NetworkX系列教程(10)-算法之五:廣度優先與深度優先