跳轉到內容

圖遍歷

來自華夏公益教科書,開放的書籍,面向開放的世界

試卷 1 - ⇑ 演算法基礎 ⇑

圖遍歷 樹遍歷 →



廣度優先遍歷

[編輯 | 編輯原始碼]
廣度優先搜尋

廣度優先搜尋是一種演算法,它透過探索距離出發節點越來越遠的節點來訪問圖中的頂點。您可以把它想象成從出發節點向外輻射的波浪。

BFS 的一個典型應用是在無權圖中查詢最短路徑。

  1. 將源節點或構成起點集的節點入隊。
  2. 出隊一個節點並檢查它。
    • 如果在這個節點中找到目標元素,則退出搜尋並返回結果。
    • 否則,將尚未發現的任何後繼節點(直接子節點)入隊。
  3. 如果佇列為空,則已檢查可達子圖中的所有節點 - 退出搜尋並返回“未找到”。
  4. 如果佇列不為空,則從步驟 2 重複。

深度優先遍歷

[編輯 | 編輯原始碼]
深度優先搜尋

使用堆疊而不是佇列將把該演算法變成深度優先搜尋。DFS 儘可能向下遍歷分支,在遇到死衚衕時回溯。

DFS 的一個典型應用是導航迷宮。

上述方法是非遞迴的,因此為了進行 **後序** 遍歷(這是一個重要的變體),而不是在將所有子節點插入堆疊後處理當前頂點,而是將其插入第二個堆疊。然後從第二個堆疊中彈出頂點並按該順序對它們進行操作。

如果圖和父子關係表示依賴關係,例如各個工種的施工時間表、相關學習單元的課程,那麼清空第二個堆疊建立的順序會建立一個可行的計劃。

華夏公益教科書