阿摩線上測驗 登入

申論題資訊

試卷:114年 - 114 身心障礙特種考試_三等_資訊處理:資料結構#126562
科目:公職◆資料結構
年份:114年
排序:0

題組內容

三、下列的無向圖(undirected graph)表示點與點之間的關係,如 A 與 B 有關係,代表 A 與 B 之間有邊(edge)相連,則可走訪。若以英文字母順序作 為走訪的先後順序。

申論題內容

(二)由 A 出發,做深度優先搜尋(depth-first search)走訪所有節點,請依序寫出走訪的節點內容。(15 分)

詳解 (共 1 筆)

詳解 提供者:Kevin
以下為我的理解,若有疏漏煩請指正:
 
深度優先搜尋為使用堆疊(stack)進行走訪的方法,首先將起點走訪、然後選擇一個相鄰的節點走訪後push上一節點進stack、當某條路徑走到底(即所有鄰接頂點都已訪問過)時,使用pop來找到並回溯到上一層頂點,繼續其他未訪問的鄰接頂點的探索。
 
以本題為例,具體操作流程如下:
  1. 起點為A,走訪A。
  2. 選擇B為下個走訪的節點,走訪並將上一節點Apush進stack:s = [A]。
  3. 選擇D為下個走訪的節點,走訪並將上一節點Bpush進stack:s = [A, B]。
  4. 選擇H為下個走訪的節點,走訪並將上一節點Dpush進stack:s = [A, B, D]。
  5. 選擇E為下個走訪的節點,走訪並將上一節點Hpush進stack:s = [A, B, D, H]。
  6. E後面已經沒有為走訪的節點,因此pop出H尋找與H相鄰的其他節點:s = [A, B, D]。
  7. 找到F,選擇F為下個走訪的節點,走訪並將上一節點Hpush進stack:s = [A, B, D, H]。
  8. 選擇C為下個走訪的節點,走訪並將上一節點Fpush進stack:s = [A, B, D, H, F]。
  9. C後面已經沒有為走訪的節點,因此pop出F尋找與F相鄰的其他節點:s = [A, B, D, H]。
  10. F後面已經沒有為走訪的節點,因此pop出H尋找與H相鄰的其他節點:s = [A, B, D]。
  11. 找到G,選擇G為下個走訪的節點,走訪並將上一節點Hpush進stack:s = [A, B, D, H]。
  12. G後面已經沒有為走訪的節點,而連續pop出H、D、B、A都沒有找到其他未走訪的相鄰節點。
  13. 得出走訪順序為ABDHEFCG。
有一點值得提的是,走訪順序並非唯一,所以得出其他順序也並非一定錯誤。
附上不錯的教學影片:https://www.youtube.com/watch?v=pcKY4hjDrxk&ab_channel=AbdulBari