演算法設計與分析 廣度優先搜尋 深度優先搜尋

2021-09-06 13:34:58 字數 1091 閱讀 1808

三、實驗環境

四、實驗過程

五、實驗結果

六、實驗總結

實驗**(github)

bfs核心思想:

解讀偽碼:

vertex* vertex;

node* nextnode;

int vertexid;

//頂點的唯一識別符號

vertex* nextvertex;

//把所有頂點放在乙個鍊錶中,這個指標指向它的下乙個頂點

node* headnode;

//這裡存放與它相鄰的頂點

vertex* parent;

//這裡存放它的父節點

color color;

//這是它的顏色

int discovery;

//這是它的發現時間(dfs中)

int finish;

//這是它的完成時間(bfs中)

vertex* headvertex;

//這裡存放它的所有頂點

typeofgraph graphtype;

//這裡存放這個圖是有向圖還是無向圖

vertex* topologicalsort;

//這裡存放的是拓撲排序的結果

vertex* gt;

//這裡存放把所有邊反向後的結果,主要用在求解強連通圖的過程中。

/*

*檢查 fromvertex 和 tovertex 是否存在

*如果沒有則把他們新增到頂點列表

*/bool

addallvertex

(int fromvertexid_in,

int tovertexid_in);/*

*新增一條從fromvertexid_in到tovertexid_in的邊

*這兩個頂點必須都已經在頂點列表中才能呼叫這個函式

*/bool

addoneedge

(int fromvertexid_in,

int tovertexid_in)

;

深度優先與廣度優先搜尋演算法

1.深度優先搜尋演算法 depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次.深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依次從v的未被訪問的鄰接點出發,對圖進行深度優先遍歷 直至圖中和v有路徑相通的頂點都被訪...

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

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

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

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