深度優先演算法思想

2021-07-10 05:11:10 字數 766 閱讀 3963

深度優先演算法思想

深度優先搜尋遍歷類似於樹的先序遍歷。假定給定圖

g的初態是所有頂點均未被訪問過,在

g中任選乙個頂點

i作為遍歷的初始點,則深度優先搜尋遞迴呼叫包含以下操作:

(1)訪問搜尋到的未被訪問的鄰接點;

(2)將此頂點的visited陣列元素值置1;

(3)搜尋該頂點的未被訪問的鄰接點,若該鄰接點存在,則從此鄰接點開始進行同樣的訪問和搜尋。

深度優先搜尋dfs可描述為:

(1)訪問v0

頂點;

(2)置visited[v0]=1;

(3)搜尋v0

未被訪問的鄰接點w,若存在鄰接點w,則dfs(w)。

遍歷過程:

dfs 在訪問圖中某一起始頂點v 後,由v 出發,訪問它的任一鄰接頂點w1;再從w1 出發,訪問與w1鄰 接但還沒有訪問過的頂點w2;然後再從w2 出發,進行類似的訪問,… 如此進行下去,直至到達所有的鄰接頂點都被訪問過的頂點u 為止。

接著,退回一步,退到前一次剛訪問過的頂點,看是否還有其它沒有被訪問的鄰接頂點。如果有,則訪問此頂點,之後再從此頂點出發,進行與前述類似的訪問;如果沒有,就再退回一步進行搜尋。重複上述過程,直到連通圖中所有頂點都被訪問過為止。如下圖所示:

深度優先演算法和廣度優先演算法

圖形的深度優先搜尋法 void dfs int current 主程式 建立圖形後,將遍歷內容印出.void main 邊線陣列 int i for i 1 i 8 i creategraph node,20 建立圖形 printf 圖形的鄰接鍊錶內容 n for i 1 i 8 i printf ...

演算法 廣度優先演算法和深度優先演算法

廣度 bfs 和深度 dfs 優先演算法這倆個演算法是圖論裡面非常重要的兩個遍歷的方法。下面乙個例子迷宮計算,如下圖 解釋 所謂廣度,就是一層一層的,向下遍歷,層層堵截,看下面這幅圖,我們如果要是廣度優先遍歷的話,我們的結果是v1 v2 v3 v4 v5 v6 v7 v8。廣度優先搜尋的思想 訪問頂...

深度優先 迷宮演算法

前一陣一直想寫這個程式,一直沒有有效的解決儲存路徑的問題。現在想到的辦法是用佇列儲存每個節點的下表來表示路徑。這個演算法解決問的問題是 建乙個迷宮 用矩陣表示m行,n列 期中矩陣的左上角 座標為 0,0的點 為入點,找尋到所有到 m 1,n 1 的所有不重複路徑,並列印出來。注釋如下 include...