[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

日本旅行 去東京可以在哪邊買羽球相關用品? WEMBLEY/WINDSOR/梭家/Victoria/Alpen TOKYO

PM到底在做什麼 ? Project Manager, Product Manager 以及 Program Manager的差別

蔣經國時代 1979年 美麗島事件 回顧

快速上手的ComfyUI與Stable Diffusion生成圖片的cheat sheet

柯文哲弊案:關於橘子

ComfyUI搭配各個Stable Diffusion模型版本的介紹、檔案名稱及相應的目錄結構。

許多深藍人士懷念的兩蔣時代

川普第二次擔任美國總統

Netflix 勁爆女子監獄 Orange is the New Black /OINTB 成立了 Poussey Washington Fund 這個基金將會幫助更生人及移民人權問題 !!

這個網誌中的熱門文章

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