重頭戲部分來了,寫到這里我感覺得仔細認真點了,可能在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)))

廣度優先搜索算法示例
輸出:
[4, 3, 5, 2, 6, 1, 7, 0, 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)

深度優先搜索算法示例
輸出:
[5, 4, 3, 2, 6, 7, 8]