深搜和廣搜解析

2021-08-18 04:39:19 字數 755 閱讀 2530

深度優先搜尋(dfs)

如演算法名稱那樣,

深度優先搜尋

遞迴或者棧

來實現。由此可見,把通常問題轉化為樹的問題是至關重要的一步,完成了樹的轉換基本完成了問題求解。

(1)減少節點數,思想:盡可能減少生成的節點數

(2)定製回溯邊界,思想:定製回溯邊界條件,剪掉不可能得到最優解的子樹

在很多情況下,我們已經找到了一組比較好的解。但是計算機仍然會義無返顧地去搜尋比它更「劣」的其他解,搜尋到後也只能回溯。為了避免出現這種情況,我們需要靈活地去定製回溯搜尋的邊界。

bfs,屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說,它並不考慮結果的可能位置,徹底地搜尋整張圖,直到找到結果為止。

類似樹的按層遍歷,其過程為:首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過可到達的鄰接點vi1、vi2……vit,並均標記為已訪問過,然後再按照vi1、vi2……vit的次序,訪問每乙個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依此類推,直到圖中所有和初始點vi有路徑相通的頂點都被訪問過為止。

廣度優先搜尋使用

佇列(queue)來實現,整個過程也可以看做乙個倒立的樹形:

1、把根節點放到佇列的末尾。

2、每次從佇列的頭部取出乙個元素,檢視這個元素所有的下一級元素,把它們放到佇列的末尾。並把這個元素記為它下一級元素的前驅。

3、找到所要找的元素時結束程式。

4、如果遍歷整個樹還沒有找到,結束程式。

廣搜和深搜

一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...

深搜和廣搜

深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次 採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。基本思路 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依...

深搜和廣搜

qq 親密度用的是帶權圖中,每條邊都有乙個 weight 我們可以通過這個權重來表示 qq 好友間的親密度。鄰接矩陣儲存方法 對於無向圖來說,如果頂點 i 與頂點 j 之間有邊,我們就將 a i j 和 a j i 標記為 1 對於有向圖來說,如果頂點 i 到頂點 j 之間,有一條箭頭從頂點 i 指...