1. 程式人生 > >圖的遍歷(一)—深度優先遍歷

圖的遍歷(一)—深度優先遍歷

圖就是由一些頂點和連線這些頂點的邊組成的。

例如上圖就是由5個頂點(1、2、3、4、5)和5條邊(1-2、1-3、1-5、2-4、3-5)組成。

我們從1號頂點開始遍歷這個圖,遍歷就是把圖的每一個頂點都訪問依次。

深度優先遍歷的結果:

遍歷順序為:

深度優先遍歷的思想:

首先以一個未被訪問過的頂點作為起始頂點,沿著當前頂點的邊走位未訪問過的頂點;當沒有未訪問過的頂點時,則回到上一個頂點,繼續試探訪問別的頂點,直到所有的頂點都被訪問過。

沿著圖的某一個分支遍歷直到末端,然後回溯,再沿著另一條進行同樣的遍歷,直到所有的頂點都被訪問過為止。

用鄰接矩陣,二維陣列e來儲存一個圖:

1表示有邊,∞表示沒有邊,自己到自己為0.

無向圖的鄰接矩陣儲存法。無向圖指的就是圖的邊沒有方向。無向圖的鄰接矩陣沿主對角線對稱,無向圖的特徵。

程式碼如下:

輸入:


執行結果:

深度優先遍歷的應用——城市地圖


有向圖,有5個城市,8條公路,(a,b,c)表示從城市a到城市b的路程為c公里,求出1號城市到5號城市的最短路程。

鄰接矩陣儲存圖,規則和上面一樣:

從上圖可以觀察到一共有3條路徑可從1->5:

1-2-3-4-5  長度14

1-2-5        長度9

1-5           長度10



輸入資料:

執行結果: