NetworkX系列教程(10)-算法之五:廣度優先與深度優先


重頭戲部分來了,寫到這里我感覺得仔細認真點了,可能在NetworkX中,實現某些算法就一句話的事,但是這個算法是做什么的,用在什么地方,原理是怎么樣的,不清除,所以,我決定先把圖論中常用算法弄個明白在寫這部分.

圖論常用算法看我的博客:

下面我將使用NetworkX實現上面的算法,建議不清楚的部分打開兩篇博客對照理解.
我將圖論的經典問題及常用算法的總結寫在下面兩篇博客中:
圖論---問題篇
圖論---算法篇

目錄:


注意:如果代碼出現找不庫,請返回第一個教程,把庫文件導入.

11.6廣度優先搜索算法(BFS)

  1. #構建一個長度為10的路徑 
  2. G = nx.path_graph(10) 
  3.  
  4. #顯示graph 
  5. nx.draw_spring(G,with_labels=True) 
  6. plt.axis('on') 
  7. plt.xticks([]) 
  8. plt.yticks([]) 
  9. plt.show() 
  10.  
  11. #以4為頂點,廣度遍歷 
  12. print(list(nx.bfs_tree(G,4))) 

廣度優先搜索算法示例
廣度優先搜索算法示例

輸出:

[4, 3, 5, 2, 6, 1, 7, 0, 8, 9]


11.7深度優先搜索算法(DFS)

  1. #構建一個長度為10的路徑 
  2. G = nx.path_graph(10) 
  3.  
  4. #顯示graph 
  5. nx.draw_spring(G,with_labels=True) 
  6. plt.axis('on') 
  7. plt.xticks([]) 
  8. plt.yticks([]) 
  9. plt.show() 
  10.  
  11. #以5為頂點,深度遍歷,限定深度為3 
  12. T = nx.dfs_tree(G, source=5, depth_limit=3) 
  13. list(T) 

深度優先搜索算法示例
深度優先搜索算法示例

輸出:

[5, 4, 3, 2, 6, 7, 8]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM