數據結構之圖


一,什么是圖

表示多對多的關系

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

二,圖的表示

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

鄰接矩陣優點:

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

鄰接矩陣缺點:

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

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

三,圖的遍歷

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

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

 

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

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

回路:起點等於終點的路徑

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

連通分量:無向圖中的極大連通子圖

強連通;有向圖中頂點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) 網絡

 

 

 算法部分:

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM