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


86會員
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
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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) 計算相關性,讓我們在自己寫下的筆記中 “挖寶”。我發現這對於寫「人物筆記」非常有幫助,這