圖的概念:

包含

  • 一組頂點:通常用V(Vertext)表示頂點集合
  • 一組邊:通常用E(Edge)表示邊的集合
    邊是頂點隊:(v, w)∈ E, 其中v,w∈V
    有向邊

抽象數據類型定義

類型名稱:圖(Graph)
數據對象集:G(V, E)由一個非空的有限頂點集合V和一個有限邊集合E組成。
操作集:對任意圖G∈Graph,以及v∈V, e∈E

-Graph Create( ):建立並返回空圖;
-Graph InsertVertext(Graph G, Vertex v):將v插入G;
-Graph InsertEdge(Graph G, Edge e):將e插入G;
- void DFS(Graph G, Vertext v):從頂點出發深度優先遍歷圖G;
- void BFS(Graph G, Vertext v):從頂點v出發寬度優先遍歷圖G;
- void ShortestPath(Graph G, Vertex v, int Dist[]):計算圖G中頂點v到任意其他頂點的最短距離;

圖的表示

例如如下一張圖:
這裏寫圖片描述

該怎麼在程序中表示他們的呢?
實際上我們想要表示的是這些頂點之間的關係。
但是這又怎麼表呢?
其實可以使用鄰接矩陣來表示:

鄰接矩陣G[N][N]——N 個頂點從0 到N-1 編號
G[i][j] =1 若<v i ,v j > 是G的邊
G[i][j] = 0 若<v i ,v j > 不是G的邊

使用矩陣表示下來之後就是這個樣子:

這裏寫圖片描述

但是對於這樣一個圖表示之後我們會發現沿着對角線是對稱的,爲什麼呢?
實際上這種表示方法將兩個頂點之間的邊表示兩次,這是無向圖,就比較的浪費空間,我們就可以在計算機中存儲矩陣的一部分例如:
這裏寫圖片描述

這樣就可節省很多空間:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章