資料結構與演算法

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

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

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

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

  • A. 能以 O(1) 檢查邊是否存在是正確的,但記憶空間與頂點數的平方成正比,對稀疏圖是很大的浪費。
  • B. 正確。記憶空間只需 O(V + E),也適合依序走訪相鄰頂點的處理。
  • C. 鄰接矩陣的大小與邊數無關,是頂點數的平方。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 在邊沒有權重的圖中,想求出從起點到各頂點的最少邊數。適合的搜尋方法與所使用的資料結構組合為下列何者?
  2. 在無向圖中,各頂點的相鄰頂點如下:A: B, C / B: A, D, E / C: A, F / D: B / E: B, F / F: C, E。從頂點 A 進行遞迴的深度優先搜尋。相鄰頂點依此處列出的順序檢查,一找到尚未拜訪的頂點就立刻前往。拜訪頂點的順序為下列何者?
  3. 在無向圖中,各邊的權重(距離)為 S−A: 4、S−B: 1、A−B: 2、A−C: 1、B−C: 5、C−T: 3、A−T: 6。以戴克斯特拉演算法求從 S 到 T 的最短路徑時,路徑與長度為下列何者?
  4. 要以戴克斯特拉演算法求出正確的最短路徑,關於圖的條件,下列何者正確?
  5. 工作 A~E 有「A 在 C 之前」「B 在 C 之前」「C 在 D 之前」「B 在 E 之前」「E 在 D 之前」的順序限制。滿足所有限制的工作順序(拓撲排序的結果)為下列何者?