廣度優先與深度優先類似嗎? - Mario

banq發表於2020-11-01

主要的兩個圖遍歷演算法:
  • -廣度優先搜尋(BFS)
  • -深度優先搜尋(DFS)

您知道它們本質上是相同的演算法嗎?主要區別在於:BFS使用佇列,而DFS使用堆疊。
基礎資料結構完全更改遍歷順序。
 
最初,它們看起來完全不同,因為DFS通常是透過遞迴實現的。但是,如果您使用堆疊來迭代實現,那麼您會意識到它幾乎與BFS完全相同 
 
這兩個例子很好地說明了資料結構的巧妙用法!令人難以置信的是,兩種行為看起來如此不同的演算法實際上是相同的,只是使用了不同的資料結構。
 
BFS和DFS就像是更通用的“模板”(可以這麼說),但是您可以在演算法的每個步驟上做額外的工作和保持值以解決特定問題(例如Dijkstra和Minimum的最短路徑)如果是Prim's,則為生成樹)。

 

相關文章