1 / 11

廣度優先搜尋

廣度優先搜尋. 廣度優先搜尋. 在包含 n 個頂點與 m 個邊的圖形中進行 BFS 所花費的時間為 O ( n + m ) BFS 可以進一步延伸來解決其他的圖形問題 尋找並回報在兩個指定頂點之間包含最少邊數的路徑 找出一個簡單循環,如果有的話. 廣度優先搜尋 (BFS) 是一種一般性的圖形走訪技巧 圖形 G 的 BFS 走訪會 拜訪所有 G 的頂點與邊 判斷 G 是否連通 計算出 G 的連通成員 計算出 G 的生成森林. BFS 演算法. 此種演算法會使用某種設定及取得頂點與邊「標籤」的機制. 例子. 未拜訪頂點

zofia
Download Presentation

廣度優先搜尋

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 廣度優先搜尋 廣度優先搜尋

  2. 廣度優先搜尋 • 在包含n 個頂點與m 個邊的圖形中進行 BFS 所花費的時間為O(n + m ) • BFS 可以進一步延伸來解決其他的圖形問題 • 尋找並回報在兩個指定頂點之間包含最少邊數的路徑 • 找出一個簡單循環,如果有的話 • 廣度優先搜尋(BFS)是一種一般性的圖形走訪技巧 • 圖形 G 的 BFS 走訪會 • 拜訪所有 G 的頂點與邊 • 判斷 G 是否連通 • 計算出 G 的連通成員 • 計算出 G 的生成森林 廣度優先搜尋

  3. BFS 演算法 • 此種演算法會使用某種設定及取得頂點與邊「標籤」的機制 廣度優先搜尋

  4. 例子 未拜訪頂點 已拜訪頂點 未拜訪邊 已拜訪邊 交錯邊 廣度優先搜尋

  5. 例子 (續) 廣度優先搜尋

  6. 例子 (續) 廣度優先搜尋

  7. 性質 標記 Gs:s 的連通成員 性質 1 BFS (G, s) 會拜訪所有Gs 的頂點與邊 性質 2 BFS(G, s) 所標記的已拜訪邊,會構成Gs的生成樹Ts 性質 3 針對Li 中的每個頂點v • 在Ts 中從s 到v 的路徑有i 個邊 • 在Gs中所有從 s 到v 的路徑都至少有i 個邊 廣度優先搜尋

  8. 分析 • 設定/取得一個頂點/邊的標籤所花費的時間為O(1) • 每個頂點都會被標記兩次 • 一次是未拜訪 • 一次是已拜訪 • 每個邊都會被標記兩次 • 一次是未拜訪 • 一次是已拜訪或交錯 • 每個頂點都會被插入一次到序列Li 中 • 針對每個頂點,方法 incidentEdges 都會被呼叫一次 • 只要圖形是以鄰接串列結構表示,BFS 便能夠在O(n + m) 時間內執行 • 回想一下 廣度優先搜尋

  9. 應用 • 使用樣版方式樣式,我們可以特殊化圖形G 的 BFS 走訪,以在O(n + m) 時間內解決以下問題 • 計算G 的連通成員 • 計算G 的生成森林 • 找出G 中的簡單循環,或回報G 是一個森林 • 指定G 的兩個頂點,找出兩者之間擁有最少邊數的路徑,或回報此種路徑不存在 廣度優先搜尋

  10. DFS vs. BFS 廣度優先搜尋

  11. DFS vs. BFS (續) 交錯邊 (v,w) • 在已拜訪邊的樹中,w 與v 位於相同層級,或位於v 的下一層級 反向邊 (v,w) • 在已拜訪邊的樹中,w 為v 的祖先 廣度優先搜尋

More Related