深度優先搜尋與寬度優先搜尋

2021-06-22 11:32:00 字數 586 閱讀 9805

深度優先搜尋類似於樹的先序遍歷,從每個頂點開始深度優先遍歷,對該分支路徑深入遍歷到不能再深入為止,返回上層,

若上一層有新的分支路徑,繼續遍歷該分支,直到所有點都被訪問

(1)訪問該頂點,並標記為已訪問

(2)if(該頂點的連線點未被訪問過)

遞迴呼叫dfs

(3)重複(2)直到該頂點的所有連線點都被訪問

typedef struct

graph;

vectorvisited;

void dfs(graph &g, int v)

}void dfssearch(graph &g, int v)

寬度優先搜尋類似於樹的層序遍歷,從某個點開始,遍歷完同一層後再遍歷下一層節點

(1)取出某個未訪問的節點作為起始點加入到佇列q中

(2)while(佇列q不為空)

(3)重複(1)(2)直到所有節點都被遍歷(用於處理非連通圖)

void bfs(graph &g)

} }}

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

深度優先遍歷的主要思想就是 首先以乙個未被訪問過的頂點作為起始頂點,沿當前頂點的邊走到未訪問過的頂點 當沒有未訪問過的頂點時,則回到上乙個頂點,繼續試探訪問別的頂點,直到所有的頂點都被訪問。沿著某條路徑遍歷直到末端,然後回溯,再沿著另一條進行同樣的遍歷,直到所有的頂點都被訪問過為止。通過上面的圖例可...

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

廣度優先搜尋使用的是步步為營的策略,每執行一步迴圈就會把所有可能的情況加入佇列,直到調出迴圈。適用於求最短的問題。深度優先搜尋則是依次遍歷每一種情況,直至找到問題的解。深度優先搜尋和廣度優先搜尋都屬於窮竭法。在執行記憶體空間上面,廣度優先搜尋與情況數成正比,而深度優先搜尋與遞迴深度成正比。inclu...

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

首先我們以鍊錶的形式儲存乙個圖 struct edge vectorg2 maxvex int source 6 3 表示從頂點0到頂點1的邊的權值為10。以鄰接鍊錶形式生成該圖 void genedge 首先以乙個未被訪問過的頂點作為起始頂點,沿著當前頂點的邊走到未訪問過的頂點 當沒有未訪問過的頂...