深度優先搜尋演算法

2022-09-23 23:06:15 字數 756 閱讀 7893

深度優先搜尋演算法:深度優先搜尋演算法是一種用於遍歷或搜尋樹或圖的演算法。沿著樹的深度遍歷樹的節點,盡可能深的搜尋樹的分支。當節點v的所在邊都己被探尋過,搜尋將回溯到發現節點v的那條邊的起始節點。

這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中乙個作為源節點並重複以上過程,整個程序反覆進行直到所有節點都被訪問為止。屬於盲目搜尋。

演算法實現:利用函式棧來儲存當前搜尋路徑中每個節點的狀態,每搜尋乙個新節點,就標記此節點被使用並遞迴呼叫一次dfs函式,確定此節點在本路徑中無法到達終點,則return上一級函式,更換下一節點

比如現在有標號為1 2 3的三個箱子 和 標號為1 2 3的撲克牌 每個箱子只能放一張撲克牌 那麼有幾種結果呢?

dfs演算法的解決方式就是遞迴的呼叫dfs函式對每個撲克牌進行處理

#include

/* a[10]陣列裡儲存的是每個箱子裡的數字 book[10]作為標記數標識手上是否還有牌

* b[i] = 0 說明有牌 b[i] = 1說明無牌

* 未初始化的全域性變數儲存在bss段 會被初始化為0 所以這裡無需再將其賦值為0

*/int a[10],book[10],n;

void dfs(int step)

printf("\n");

return; //返回之前的上一步(最近一次呼叫dfs函式的地方)

}for (i = 1; i <= n; i++)

}return;

} int main(void)

深度優先搜尋演算法

include include define vertexnum 9 struct node typedef struct node graph struct node head vertexnum 定義圖形結構 int visited vertexnum 頂點陣列 深度優先搜尋 void dfs ...

深度優先搜尋演算法

今天我們來複習一下萬能的搜尋演算法之深度優先搜尋演算法。深度優先搜尋演算法顧名思義就是按照樹的延伸不停的往下搜尋,直到樹的盡頭之後再一步一步的回溯回來。好吧,我們直接問你乙個問題,給你乙個數n,讓你輸出從1到這個樹的全排列,你會怎麼寫,會不會想到去用若干個for迴圈?好吧,你肯定錯了,其實他考的就是...

深度優先搜尋演算法

1.深度優先搜尋演算法的概念 深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個 節點只能訪問一次。如下例 該圖為乙個無向圖,假設我們從a開始進行深度優先搜尋,第二點可以是b c d中任意乙個,...