演算法筆記(廣度優先搜尋)

zgnMark發表於2019-09-30
  • 廣度優先搜尋指出是否有從 A 到 B 的路徑。

  • 如果有,廣度優先搜尋將找出最短路徑。

  • 面臨類似於尋找最短路徑的問題時,可嘗試使用圖來建立模型,再使用廣度優先搜尋來解決問題。

  • 有向圖中的邊為箭頭,箭頭的方向指定了關係的方向,例如,rama→adit 表示 rama 欠 adit 錢。

  • 無向圖中的邊不帶箭頭,其中的關係是雙向的,例如,ross - rachel 表示“ross 與 rachel 約會,而 rachel 也與 ross 約會”。

  • 佇列是先進先出(FIFO)的。

  • 棧是後進先出(LIFO)的。

  • 你需要按加入順序檢查搜尋列表中的人,否則找到的就不是最短路徑,因此搜尋列表必須是佇列。

  • 對於檢查過的人,務必不要再去檢查,否則可能導致無限迴圈。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章