深度優先搜尋

2021-09-18 03:55:02 字數 466 閱讀 4030

基本思想:從初始狀態,利用規則生成搜尋樹下一層任乙個結點,檢查是否出現目標狀態,若未出現,以此狀態利用規則生成再下一層任乙個結點,再檢查,重複過程一直到葉節點(即不能再生成新狀態節點),當它仍不是目標狀態時,回溯到上一層結果,取另一可能擴充套件搜尋的分支。採用相同辦法一直進行下去,直到找到目標狀態為止。

所以深度優先搜尋是遍歷完某一狀態的所有子狀態後才對同一層的狀態進行搜尋,而廣度優先搜尋是現對一層進行搜尋,搜尋完後才會對下一層進行搜尋。

深度優先搜尋可以用遞迴來實現:

function dfs (int step, 當前狀態)

begin

可加結束條件

從當前狀態迴圈拓展下乙個狀態next

if 狀態next合法 then

dfs (step + 1, next ))

end遞迴更加簡單方便一些。

另外深度學習的複雜度為o(n!)所以他的效率很低,要去除沒用的搜尋分枝。

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...

廣度優先搜尋,深度優先搜尋

深度優先搜尋 depth first search 簡稱dfs。最直觀的例子就是 走迷宮 廣度優先搜尋 每個頂點都要進出一遍佇列,每個邊也都會被訪問一次,所以 時間複雜度o v e 主要消耗記憶體的是visited prev陣列 queue佇列,所以 空間複雜度o v 深度優先搜尋 每條邊最多會被訪...

深度優先搜尋 廣度優先搜尋

深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 package com.neusoft.data.structure 深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 public class dfsbfs 初始化 邊 mmatrix new int vlen vlen for...