Graph theory圖論 DFS、BFS演算法的統整與比較

閱讀時間約 3 分鐘
raw-image

本篇文章將會著重在幾個圖論常用的演算法BFS 與 DFS 的統整與比較。


DFS 深度優先搜索: 先天具有一股腦往前探索一條路走到底的性質。

適合的底層資料結構:

Stack 或者 Recursion function 遞迴函式呼叫(站在人的觀點,比較好寫)

利用Stack 和 Recursion function時對應建立call stack的Last in First out性質,來維持深度優先的探索順序。

適合的應用領域:

  1. 尋找路徑的存在性(有一條路徑從起點走到終點即可)

例題:

Find if Path Exists in Graph — LeetCode

2. 在探索Tree/Binary tree相關的領域中,還有一個名字,叫做preorder前序/inorder中序/postorder後序 traversal,依照指定的順序拜訪整棵樹。

Binary Tree Preorder Traversal-Leetcode

Binary Tree Inorder Traversal-Leetcode

Binary Tree Postorder Traversal-Leetcode

3. 從樹根開始搜索到葉子節點,在這種題目中,其實DFS就是我們Single source path algorithm的模板,把Root視為探索的起點。

例如 Path sum系列的題目

Path Sum — LeetCode

Path Sum II — LeetCode

Path Sum III — LeetCode

4. 展開整個搜索空間(Search space/State space)的題目,常常結合回溯法backtracking一起使用,適合子集合組合直線排列...等類型的題目。

Subsets — Leetcode

Combinations — Leetcode

Permutations — Leetcode


BFS 廣度優先: 先天具有點播源擴散的性質,起點視為波源,由內往外一層一層擴散,抵達終點時的擴散層數就代表最短路徑

適合的底層資料結構:

Queue 佇列,利用佇列First in First out的特性,來維持廣度優先 level by level探索的前後順序。

  1. 無權重圖或者圖中權重默認相等的最短路徑

Shortest path in binary matrix -Leetcode

Shortest path to get all keys — Leetcode

2. 在探索Tree/Binary tree相關的領域中,還有一個名字,叫做Level-order traversal 逐層探索演算法。從第一層Root根接點,逐層探索到Leaf葉子節點 也是最深的那一層。

Binary Tree Level Order Traversal — Leetcode

Time Needed to Inform All Employees — LeetCode

3. 點波源擴散的模式,探索整張圖。也可以用這個性質來尋找起終點的路徑是否存在。

Find if Path Exists in Graph — LeetCode


87會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
Leetcode #100: Same Tree 題目會給定兩棵Binary Tree的根結點,要求我們判斷兩棵樹是否一模一樣。 也就是說,形狀相同,節點的數值也相同。
進階圖論題目: 計算最短的一筆畫路徑長 題目會給定我們一張圖和對應的相鄰矩陣,要求我們返回一筆畫拜訪所有節點的最短路徑長,起終點不拘。
Coin Change + DP 策略_Leetcode 面試題 上機考 題目 詳細解說
Leetcode #100: Same Tree 題目會給定兩棵Binary Tree的根結點,要求我們判斷兩棵樹是否一模一樣。 也就是說,形狀相同,節點的數值也相同。
進階圖論題目: 計算最短的一筆畫路徑長 題目會給定我們一張圖和對應的相鄰矩陣,要求我們返回一筆畫拜訪所有節點的最短路徑長,起終點不拘。
Coin Change + DP 策略_Leetcode 面試題 上機考 題目 詳細解說
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
定義 圖Graph: 由節點和邊所組成的一個網狀資料結構。 圖的表達方式Graph representation: 常見的有相鄰串列adjacency list或相鄰矩陣adjacency matrix。 本文以adjacenct list作為示範。 節點Vertex: 節點
Thumbnail
上篇進一步認識基本的圖形架構與三大 Graph 算法,那首先從 shortest path 開始,我們會陸續去理解這些算法,以及可能的應用,如果還沒有看過上一篇的,可以點以下連結~那我們就開始吧! 【圖論Graph】Part1:初探圖形與圖形演算法之應用
Thumbnail
本篇文章深入介紹了圖形的基本概念、組成和應用。從圖形的基本組成,到圖的類型與種類,再到圖形演算法的三大類型,本文將接續圖形領域的深入學習,並分享了對圖形的初步認識和學習方向的小心得。希望對正在學習圖形的人有所幫助。
Thumbnail
圖形演算法在資料處理上扮演重要角色。本文介紹圖形的歷史、定義、技術用途,以及為什麼我們要關心圖形演算法。文末還提及圖形演算法在機器學習領域的應用。下次將介紹更詳細的圖形演算法內容。
Thumbnail
圖論常用的演算法BFS 與 DFS 的統整與比較。 介紹常用且相關的底層資料結構 並且,介紹幾個適合使用的應用領域、解題分類。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
給大家拜個年,兔年行大運。 這邊介紹一下未來10年增值空間巨大的去中心化Token,讓大家可以在累積財富的路上,逢低買進,不斷的滾雪球。這次的主題會放在 Fractional Ownership Token上面,投資的最佳時機就是今年升息到頂峰,導致的價格泡沫破裂,可能是2023 年 3月 至 6月
Thumbnail
香氣特別,巧克力,花香,香草,入口烈,尾較短,比VSOP好但比不上XO(1955) 購入地點:橡木桶
Thumbnail
現在可以靠機器學習的演算法,幫助自己找到筆記中有價值的洞見了。近期 Obsidian 社群出現了一款非常有意思的插件 — Graph Analysis,它能依靠筆記之間的內部連結 (internal link) 計算相關性,讓我們在自己寫下的筆記中 “挖寶”。我發現這對於寫「人物筆記」非常有幫助,這
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
定義 圖Graph: 由節點和邊所組成的一個網狀資料結構。 圖的表達方式Graph representation: 常見的有相鄰串列adjacency list或相鄰矩陣adjacency matrix。 本文以adjacenct list作為示範。 節點Vertex: 節點
Thumbnail
上篇進一步認識基本的圖形架構與三大 Graph 算法,那首先從 shortest path 開始,我們會陸續去理解這些算法,以及可能的應用,如果還沒有看過上一篇的,可以點以下連結~那我們就開始吧! 【圖論Graph】Part1:初探圖形與圖形演算法之應用
Thumbnail
本篇文章深入介紹了圖形的基本概念、組成和應用。從圖形的基本組成,到圖的類型與種類,再到圖形演算法的三大類型,本文將接續圖形領域的深入學習,並分享了對圖形的初步認識和學習方向的小心得。希望對正在學習圖形的人有所幫助。
Thumbnail
圖形演算法在資料處理上扮演重要角色。本文介紹圖形的歷史、定義、技術用途,以及為什麼我們要關心圖形演算法。文末還提及圖形演算法在機器學習領域的應用。下次將介紹更詳細的圖形演算法內容。
Thumbnail
圖論常用的演算法BFS 與 DFS 的統整與比較。 介紹常用且相關的底層資料結構 並且,介紹幾個適合使用的應用領域、解題分類。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
給大家拜個年,兔年行大運。 這邊介紹一下未來10年增值空間巨大的去中心化Token,讓大家可以在累積財富的路上,逢低買進,不斷的滾雪球。這次的主題會放在 Fractional Ownership Token上面,投資的最佳時機就是今年升息到頂峰,導致的價格泡沫破裂,可能是2023 年 3月 至 6月
Thumbnail
香氣特別,巧克力,花香,香草,入口烈,尾較短,比VSOP好但比不上XO(1955) 購入地點:橡木桶
Thumbnail
現在可以靠機器學習的演算法,幫助自己找到筆記中有價值的洞見了。近期 Obsidian 社群出現了一款非常有意思的插件 — Graph Analysis,它能依靠筆記之間的內部連結 (internal link) 計算相關性,讓我們在自己寫下的筆記中 “挖寶”。我發現這對於寫「人物筆記」非常有幫助,這