圖的搜索算法——深度優先搜索DFS、廣度優先搜索BFS

深度優先搜索算法(DFS)和廣度優先搜索算法(BFS)都是圖的搜索算法,放在一起研究比較容易發現他們的特點

一、深度優先搜索算法(DFS)

思想:前提是每個結點只能訪問一次,對每個分支深入到不能再深入爲止,再回退訪問另一個分支

  • 可以用來實現DFS
  • DFS可以判斷圖中是否有迴路。當前結點的下一步可以搜索到已經訪問過的結點,則說明有迴路

例:從結點1開始深搜
在這裏插入圖片描述
圖存儲在鄰接矩陣的搜索過程
鄰接矩陣如下,無向圖的鄰接矩陣是一個對稱矩陣
在這裏插入圖片描述
深搜從結點1出發,(1,2)的值爲1,說明結點1和結點2連通,以此類推,搜索過程爲
(1, 2)->(2, 3)->(3, 4)->(1,5)

  • 時間複雜度:O(V^2)

V爲vertex即頂點數
圖存儲在鄰接表的搜索過程
鄰接表如下
在這裏插入圖片描述
深搜從結點1出發,與結點1鄰接的結點有2和5,遍歷結點2,與結點2鄰接的結點有3和4,以此類推
搜索順序爲:1->2->3->4->5

  • 時間複雜度:O(V+E)

E爲edge即邊數

二、廣度優先搜索(BFS)

思想:從某一結點開始,沿着圖的寬度開始遍歷,完全遍歷完所有分支之後,再進入下一層深度,直到遍歷完所有連通的結點

  • 隊列來實現BFS
  • BFS可以用於求最短路徑

例:從結點1開始廣搜
在這裏插入圖片描述
圖存儲在鄰接矩陣的搜索過程
在這裏插入圖片描述
搜索順序:
從結點1開始,查看鄰接表第1行值爲1的位置,(1, 2)、(1, 5)值爲1,遍歷結點2和5,然後從第二行開始,以此類推,知道所有結點都遍歷完。
(1, 2)->(1, 5)->(2, 3)->(2, 4)

  • 時間複雜度:O(V^2)

圖存儲在鄰接表的搜索過程
在這裏插入圖片描述
與結點1鄰接的邊有(1,2)和(1,5),遍歷結點2和5,與結點2鄰接的邊有(2,3)和(2,4)遍歷結點3和4,以此類推知道遍歷完所有結點
搜索順序爲:1->2->5->3->4

  • 時間複雜度:O(V+E)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章