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

2021-05-24 21:35:32 字數 1385 閱讀 2073

/* ---------------------------------------- */

/*  

圖形的深度優先搜尋法*/

/* ---------------------------------------- */

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("/n"); /*  換行*/

}printf(" 圖形的深度優先遍歷內容:/n");

dfs(1);  /*  印出遍歷過程*/

printf("/n");/*  換行*/}

/* **************************************** */

/*     圖形的廣度優先搜尋法*/

/* **************************************** */

#include 

#define maxqueue 10   /*  佇列的最大容量*/

struct node  /*  圖形頂點結構宣告*/

;typedef struct node *graph; /*  圖形的結構新型態*/

struct node head[9];  /*  圖形頂點結構陣列*/

int visited[9];  /*  遍歷記錄陣列*/

int queue[maxqueue]; /*  佇列的陣列宣告*/

int front = -1;  /*  佇列的前端*/

int rear = -1;  /*  佇列的後端*/

/* ---------------------------------------- */

/*   建立圖形*/

/* ---------------------------------------- */

void creategraph(int *node,int num)

}

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

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

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

深度優先搜尋屬於圖演算法的一種,是乙個針對圖和樹的遍歷演算法,英文縮寫為dfs depth first search 深度優先搜尋利用深度優先搜尋演算法可以產生目標圖的相應拓撲排序表,利用拓撲排序表可以方便的解決很多相關的圖論問題,如最大路徑問題等等。一般用堆資料結構來輔助實現dfs演算法。文字描述...

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

我們經常會碰到最短路徑問題,而最短路徑問題的解決方法多種多樣,廣度優先搜尋 bfs 深度優先搜尋 dfs 和dijkstra演算法貌似都能解決這個問題,這裡就簡單介紹一下這些演算法,分析一下它們的適用範圍。一 原理剖析 1 廣度優先搜尋 bfs 廣度優先搜尋依賴的是佇列解決問題。佇列中的每乙個節點需...