三、實驗環境
四、實驗過程
五、實驗結果
六、實驗總結
實驗**(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...