深度優先搜尋演算法(DFS)

2021-06-19 08:12:39 字數 958 閱讀 8624

1.

深度優先搜尋屬於圖的遍歷演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次。

2.搜尋策略:

深度優先遍歷圖的方法是,從圖中某頂點v出發:

(1)訪問頂點v;

(2)依次從v的未被訪問的鄰接點出發,對圖進行深度優先遍歷;

直至圖中和v有路徑相通的頂點都被訪問;

(3)若此時圖中尚有頂點未被訪問,則從乙個未被訪問的頂點出發,

重新進行深度優先遍歷,直到圖中所有頂點均被訪問過為止。

3.搜尋偽**:

dfs(node)

當然一般情況下的dfs演算法的實現會用到資料結構-棧,也可以使用遞迴來實現,但是效率額偏低,所以要注意剪枝(就是提前排除不可能的情況)。

4.具體題目:

質數環

//簡單的dfs 不用剪枝,也可以a

//time:890ms

//mem :376k

#include #include using namespace std;

int ring[25];

int visited[25];

int n;

int isprime(int p)

void dfs(int dep)

,,,}; //表示四個方向。

void dfs(int si,int sj,int cnt)

} return;

} int main()

//開始地

else if(map[i][j]=='d') //目的地

else if(map[i][j]=='x') wall++; //牆的數目

} if(n*m-wall<=t)// n*m - t包括s和d節點。

{cout<<"no"<

DFS深度優先搜尋演算法

例題一 題目大意 約翰的農場被暴風雨給淹沒了,損失很大,他的保險公司將支付給他,但是支付金額取決於被淹沒的最大面積。這個農場是乙個邊長分別為n m的矩形,包含nm個空間,每個空間要麼是幹的,要麼是被淹沒的,一共有k個空間被淹沒。求最大的淹沒面積。ac include include include ...

DFS 深度優先搜尋演算法

深度優先搜尋演算法 depth first search,簡稱dfs 一種用於遍歷或搜尋樹或圖的演算法。沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所在邊都己被探尋過或者在搜尋時結點不滿足條件,搜尋將回溯到發現節點v的那條邊的起始節點。整個程序反覆進行直到所有節點都被訪問為止。屬於盲...

深度優先搜尋演算法DFS

深度優先搜尋每一次搜尋都要走到底的 從左到右遍歷,每一次遍歷從上到下遍歷完 深度優先搜尋主要用遞迴實現,因此也很容易超時.回溯演算法實際上乙個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就 回溯 返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋...