深度和廣度優先

2021-10-06 23:01:16 字數 480 閱讀 5090

深度優先演算法dfs(depth-first-search)

廣度優先演算法bfs(breadth-first-search)又叫做層次遍歷,自上向下,自左向右逐層訪問結點,訪問完一層再訪問下一層,直到無結點。

深度優先搜素演算法:不全部保留結點,占用空間少;有回溯操作(即有入棧、出棧操作),執行速度慢。其實回溯法就是對隱式圖的深度優先演算法,若使用回溯法求任乙個解時,只要搜尋到問題的乙個解就可以結束。

廣度優先搜尋演算法:保留全部結點,占用空間大; 無回溯操作(即無入棧、出棧操作),執行速度快。若圖中所有邊的長度相等,廣度優先搜尋演算法是最佳解——亦即它找到的第乙個解,距離根節點的邊數目一定最少;但對一般的圖來說,bfs並不一定回傳最佳解。這是因為當圖形為加權圖(亦即各邊長度不同)時,bfs仍然回傳從根節點開始,經過邊數目最少的解;而這個解距離根節點的距離不一定最短。這個問題可以使用考慮各邊權值,bfs的改良演算法成本一致搜尋法來解決。然而,若非加權圖形,則所有邊的長度相等,bfs就能找到最近的最佳解。

深度優先和廣度優先

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

深度優先和廣度優先區別

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

深度優先和廣度優先遍歷

1.深度優先遍歷 從某個節點r出發,訪問子節點l1,若l1還有左子節點l1l,則訪問l1l,否則訪問子節點l1的右子節點l1r,遞迴訪問,直到所有的節點都被訪問到為止。無向圖的深度優先搜尋 遍歷順序為 a c b d f g e 有向圖的深度優先搜尋 遍歷順序為 a b c e d f g 2.廣度...