[DSA] 深度優先搜索 (Deep First Search, DFS) 和廣度優先搜索 (Breadth-First Search, BFS)

深度優先搜索 (DFS) 和廣度優先搜索 (BFS) 的介紹,包括英文專有名詞:


**深度優先搜索 (Depth-First Search, DFS)**


DFS 是一種用於遍歷或搜索樹 (tree) 或圖 (graph) 的算法。它從一個起點開始,然後深入到每一個分支,直到該分支終點。


**基本步驟:**

1. 從起始節點 (starting node) 開始。

2. 移動到某個相鄰的未被訪問的節點 (adjacent unvisited node)。

3. 繼續深入直到目前的節點沒有未被訪問的相鄰節點。

4. 回退 (backtrack) 到上一個節點,並嘗試訪問其他未被訪問的節點。

5. 重複上述過程直到探索完畢。


**常見問題:**

1. **迷宮問題 (Maze problem):** 從迷宮的一個入口到出口的路徑。

2. **連通性 (Connectivity):** 判斷兩個節點是否連通。

3. **拓撲排序 (Topological Sorting):** 對一個有向無環圖 (Directed Acyclic Graph, DAG) 進行排序。

4. **判斷圖中是否有環 (Cycle Detection)。**

5. **尋找有向圖或無向圖的強連通分量 (Strongly Connected Components)。**


**時間複雜度 (Time Complexity):**

- 在無權重圖 (unweighted graph) 中,DFS 的時間複雜度是 **O(V + E)**,其中 V 是節點的數量 (number of vertices),E 是邊的數量 (number of edges)。

- 如果使用鄰接矩陣 (adjacency matrix) 表示圖,DFS 的時間複雜度是 **O(V^2)**。

- 如果使用鄰接列表 (adjacency list) 表示圖,DFS 的時間複雜度是 **O(V + E)**。


---


**廣度優先搜索 (Breadth-First Search, BFS)**


BFS 也是一種用於遍歷或搜索樹或圖的算法。它從一個起點開始,然後逐層探索。


**基本步驟:**

1. 從起始節點開始。

2. 訪問所有相鄰的未被訪問的節點。

3. 對於所有這些相鄰節點,再進一步訪問它們的未被訪問的相鄰節點。

4. 重複上述過程直到所有的節點都被訪問。


在這個過程中,通常使用隊列 (queue) 來保存待訪問的節點。


**常見問題:**

1. **最短路徑問題 (Shortest Path Problem):** 在無權重圖中,找到從一個節點到另一個節點的最短路徑。

2. **連通性 (Connectivity):** 判斷兩個節點是否連通。

3. **分層 (Level-order Traversal):** 確定圖中的層次結構。

4. **網路廣播問題 (Network Broadcasting):** 如何有效地廣播一個消息到網路中的所有節點。


**時間複雜度 (Time Complexity):**

- 在無權重圖中,BFS 的時間複雜度是 **O(V + E)**,其中 V 是節點的數量,E 是邊的數量。

- 如果使用鄰接矩陣表示圖,BFS 的時間複雜度是 **O(V^2)**。

- 如果使用鄰接列表表示圖,BFS 的時間複雜度是 **O(V + E)**。



相關討論:

深度優先搜索 Deep First Search:”200. Number of Islands” 是一題涉及DFS的問題。

留言

Google Search

推薦內容橫式

本月熱門文章

國民黨陳玉珍翁曉玲自肥條款 可望再出現連戰兩億公務員? 各種荒腔走板的陳玉珍、翁曉玲 真是令人傻眼

[FAANG面試] Amazon/AWS 領導力準則 14 Amazon Leadership Principles

悲痛!XREX區塊鏈金融犯罪調查師陳梅慧Miffy殞落,揭露虛擬貨幣犯罪背後的黑幕

中華民國國軍辛苦了 因應中共軍演努力監視

20241123 BoA : One's Own in TAIPEI 難得一見的BoA來台灣演出

[FAANG面試] 如何準備Google Technical Program Manager (TPM) 面試

金融犯罪調查專家陳梅慧 離奇車禍死亡 疑點整理

ASMR 自主性感官經絡反應 用ASMR 音樂/影片 來助眠? 篠田優 Shinoda Yui 的ASMR影片

常見詐騙案例犯罪手法及預防方式一覽表 (持續更新)

大學生暑假打工 新北市政府 109 年度 大專青年公部門暑期工讀計畫

這個網誌中的熱門文章

Android應用開發豆知識:利用 adb 安裝 apk 到裝置上

Android 中文輸入法 官方版 ! Gboard - Google 鍵盤 開始支援注音輸入啦

Google Play 推薦Android app 誠徵App排行榜

北京故宮首訪,一窺清宮秘史 大玉兒 & 甄嬛

[家教][社會觀察] 建中教我的事 沒上建中被父母親折磨? 在建中到底是如何 ...

[FAANG面試] Amazon/AWS 領導力準則 14 Amazon Leadership Principles

Acer ICONIA Smart S300 更新後越來越好 Acer也有出手機?!

[品質控制] 什麼是Sanity test ? 軟體測試常見名詞整理 包含不同部門的測試人員負責範圍

新鮮人找工作:職場名詞解釋 AE FAE Pre-sales Post-sales