圖的遍歷(一)—深度優先遍歷
阿新 • • 發佈:2019-02-16
圖就是由一些頂點和連線這些頂點的邊組成的。
例如上圖就是由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
輸入資料:
執行結果: