什麼是廣度優先搜尋

依離起點由近到遠的順序(先是經1條邊可到達的頂點,再來是經2條邊可到達的頂點……)拜訪圖或樹的搜尋方法。以佇列實作,在邊沒有權重的圖中,能求出從起點到各頂點的最少邊數。取英文字首也稱為 BFS。

日文名稱: 幅優先探索

「廣度優先搜尋」出現在1領域的4道練習題中(資料結構與演算法等)。

這個名詞所屬的領域: 資料結構與演算法

練習廣度優先搜尋的題目

對空的佇列依序放入 A、B、C,取出1個,放入 D 後取出1個,再放入 E 後取出1個。依序排列取出的元素,下列何者正確?

  1. AA, B, C
  2. BC, D, E
  3. CC, B, A
查看答案與解析

正確答案:A. A, B, C

佇列是依先放入的順序取出的先進先出(FIFO)結構。放入 A、B、C 後第一次取出的是 A。之後即使在尾端加入 D 或 E,位於前端的 B、C 也會先取出,因此取出順序為 A、B、C,最後留下 D 與 E。C、D、E 是當作每次取出最後放入者的堆疊(LIFO)時的順序。佇列用於印表機的列印等待、在工作之間傳遞資料的訊息佇列、廣度優先搜尋等。

像頂點約100萬個、邊約300萬條的道路網這樣,邊數相對於頂點數很少的(稀疏)圖,適合以下列何種方式存放在記憶體中?

  1. A鄰接矩陣。能以 O(1) 檢查兩個頂點之間是否有邊,記憶空間也最少
  2. B鄰接串列。記憶空間與頂點數加邊數的和成正比,適合依序走訪從某個頂點出發的邊
  3. C鄰接矩陣。記憶空間只與邊數成正比
查看答案與解析

正確答案:B. 鄰接串列。記憶空間與頂點數加邊數的和成正比,適合依序走訪從某個頂點出發的邊

鄰接矩陣對 V 個頂點使用 V×V 的表格,100萬個頂點需要10¹²個元素,即使每個元素1位元也約需125 GB。鄰接串列只列出與各頂點相連的頂點,因此記憶空間為 O(V + E),這個例子只需數百萬筆左右。鄰接矩陣的優點是能以 O(1) 檢查邊是否存在,適合邊多的(稠密)圖或頂點少的圖。對於像廣度優先搜尋或戴克斯特拉演算法這樣依序走訪從頂點出發之邊的處理,鄰接串列的效率較好。

解析中的「廣度優先搜尋」

出現「廣度優先搜尋」的題目(4題)

  1. 對空的佇列依序放入 A、B、C,取出1個,放入 D 後取出1個,再放入 E 後取出1個。依序排列取出的元素,下列何者正確?
  2. 像頂點約100萬個、邊約300萬條的道路網這樣,邊數相對於頂點數很少的(稀疏)圖,適合以下列何種方式存放在記憶體中?
  3. 在邊沒有權重的圖中,想求出從起點到各頂點的最少邊數。適合的搜尋方法與所使用的資料結構組合為下列何者?
  4. 在無向圖中,各頂點的相鄰頂點如下:A: B, C / B: A, D, E / C: A, F / D: B / E: B, F / F: C, E。從頂點 A 進行遞迴的深度優先搜尋。相鄰頂點依此處列出的順序檢查,一找到尚未拜訪的頂點就立刻前往。拜訪頂點的順序為下列何者?

半導體、電子電路與資訊計算工具

相關名詞

佇列 堆疊 深度優先搜尋 遞迴 戴克斯特拉演算法 二元堆積 二元搜尋樹 二分搜尋 時間複雜度(大O符號) 動態規劃

前往名詞解釋列表