是從圖中的某個初始點v出發,首先訪問初始點v,而後選擇一個與定點v相鄰且沒有被訪問過的定點w,再以w爲初始頂點,重複深度優先遍歷 遞歸調用總次數爲n 用鄰接表表示圖時DFS算法時間複雜度爲o(n+e) 用鄰接矩陣表示圖時DFS算法時間複雜度爲o(n^2)
廣度優先遍歷的過程是首先訪問初始點v,而後訪問v的全部違背訪問過的鄰接點v1v2v3v4……,而後再按照v1v2v3v4……的次序訪問每個頂點的全部未被訪問過的鄰接點,以此類推,直到圖中全部的和初始點v有路徑相通的頂點都被訪問過爲止 用鄰接表表示圖時BFS算法時間複雜度爲o(n+e) 用鄰接矩陣表示圖時BFS算法時間複雜度爲o(n^2) 以鄰接表爲存儲結構,在用廣度優先遍歷圖時須要咦相似於二叉樹的層次遍歷方式用環形隊列遍歷圖
採用鄰接矩陣存儲 取頂點設其它邊爲侯選邊 從侯選邊中挑選權值最小的加入生成樹 重複上述步驟並按權值不斷修改 時間複雜度o(n^2)
按權值遞增次序選擇合適的邊來構造最小生成樹 將圖中的邊按權值從小到大的次序依次選取,若選取的邊未使生成樹造成迴路則加入生成樹,不然捨棄,直到生成樹中包含(n-1)條邊爲止 適合稀疏圖
時間複雜度o(n^2) 求出最短路徑的頂點集合,用S表示 第二組爲其他未肯定最短路徑的頂點集合,用U表示 源點v到S中各頂點的最短路徑長度不大於從源點v到U中任何頂點的最短路長度
採用鄰接表做爲存儲結構 可用於檢測圖中是否有迴路 在一個有向圖中找一個拓撲序列的過程稱爲拓撲排序: 1.從有向圖中選擇一個沒有前驅的頂點並輸出它 2.從圖中刪去該頂點,而且刪去從該頂點出發的所有有向邊 3.重複上述兩步,直到剩餘的圖中再也不存在沒有前驅的頂點爲止
隊不爲空 取隊首 v for i=1 to n if 邊連通且頂點 i 爲訪問過 頂點 i 入隊, vis[i]=1, 數值++ if v 爲該層最後一個結點 將下一層的最後一個結點置爲新的層末頂點, degree加一