數據結構之圖

一,什麼是圖

表示多對多的關係算法

圖包含一組頂點和一組邊(不考慮重邊和自迴路)網絡

二,圖的表示

鄰接矩陣表示圖:有邊的表示1,無邊的表示0

鄰接矩陣優勢:3d

  1.  直觀
  2. 查找方便
  3. 查詢一個頂點的全部鄰接點方便
  4. 方便計算度(該頂點的邊數),入度,出度(有向圖須要查看行(出度)和列(入度))

鄰接矩陣缺點:blog

  1. 浪費空間:稀疏圖(點不少而邊不多)
  2. 浪費時間:

鄰接表:只存非零元素,不惟一,稀疏圖

三,圖的遍歷

DFS(深度優先搜索,Depth First Search): 原路返回=>樹的先序遍歷

BFS(廣度優先搜索,Breath First Search)=>樹的層次遍歷

 

 連通:若是從v到w存在一條(無向)路徑,則稱v和w是連通的排序

 路徑:v到w的路徑是一系列的頂點的集合,其中任一對相鄰的頂點間都有圖中的邊。路徑的長度是路徑中的邊數(若是帶權,則是全部邊的權重和)。若是v和w之間的全部頂點都不一樣,則稱簡單路徑(無迴路)it

迴路:起點等於終點的路徑bfc

連通圖:圖中任意兩頂點均連通搜索

連通份量:無向圖中的極大連通子圖遍歷

強連通;有向圖中頂點v和w之間存在雙向路徑(既有從v->w又有從w->v,能夠不是同一條),則稱v和w是強連通方法

弱連通:去掉方向後的v和w是連通的

強連通圖:有向圖中任意兩頂點均強連通

強連通份量:有向圖的極大強連通子圖

 

六度空間算法

中序遍歷和前序遍歷直接求後序遍歷 

 

 

徹底二叉搜索樹的核心代碼

 

 

最短路徑

網絡:帶權的圖,

  1. 單元最短路徑:固定源點;
    1. (有向)無權圖
      1. 遞增順序
    2. (有向)有權圖
      1. 負值圈(不考慮)
      2. Dijkstra算法

        實現上述代碼中紅線僞代碼的方法

  2. 多元最短路徑:任意兩點
    1. 直接將單元最短路算法調用V遍
    2. Floyd算法
      1.  

 最小生成樹

定義:

 

稠密圖的貪心算法:Prim算法,從一個點一點一點向外擴張延伸,進入樹內的點的dist都爲0,往外延伸時是與樹中任意一個結點距離最小

稀疏圖的貪心算法:每次從剩餘全部邊中取最短的邊,所選邊不能構成迴路

 

拓撲排序

1. AOV(Activity On Vertex) 網絡

 

 

 算法部分:

 

 

 

 

 

 

相關文章
相關標籤/搜索