關於深度優先和廣度優先的問題

2021-06-19 12:38:56 字數 674 閱讀 8171

depth-first search和breadth-first search,即深度優先和廣度優先是圖的兩種搜尋的方法。其實與其說是方法,不如說是兩種思想。下面我們就來介紹這兩種思想。

1) depth-first search

深度優先是指在圖的查詢中,對每乙個分支深入到不能再深入為止,如果到達了終點,則選擇另乙個未訪問的頂點,繼續查詢,知道每個節點都被訪問到,並且每個節點只能被訪問一次。

基本演算法:

a) 訪問頂點v

b) 依次從v的未訪問的節點出發,遍歷所有與v在相通路徑上的節點。

c) 選取還未被訪問的結點,重複上面的過程。

下圖就是深度優先的乙個遍歷過程。

廣度優先是分層次的展開檢查圖中的所有結點,知道找到最終的結果。也就是說首先搜尋與s距離為k的所有結點,然後在搜尋與s距離k+1的所有結點。演算法通過已找到的節點和未找到的節點的邊界向外擴充套件。dijkstra演算法以及prim演算法都是應用的這一思想。

下圖就是廣度優先的乙個遍歷過程。

深度優先和廣度優先

在爬蟲系統中,待抓取url佇列是很重要的一部分,待抓取url佇列中的url以什麼樣的順序排隊列也是乙個很重要的問題,因為這涉及到先抓取哪個頁面,後抓取哪個頁面。而決定這些url排列順序的方法,叫做抓取策略。下面是常用的兩種策略 深度優先 廣度優先 注 scrapy預設採用的是深度優先演算法 這裡是深...

深度優先 廣度優先

父類定義 class people def init self,name,age,weight self.name name self.age age self.weight weight defspeak self print s 說 我 d 歲。self.name,self.age 單繼承示例 ...

深度優先和廣度優先區別

一 深度優先搜尋的特點是 1.深度優先搜尋法有遞迴以及非遞迴兩種設計方法。一般的,當搜尋深度較小 問題遞迴方式比較明顯時,用遞迴方法設計好,它可以使得程式結構更簡捷易懂。當資料量較大時,由於系統堆疊容量的限制,遞迴容易產生溢位,用非遞迴方法設計比較好。2.深度優先搜尋方法有廣義和狹義兩種理解。廣義的...