(一)图(Graph)
1. 什么是图
- 表示“多对多”的关系
- 包含
- 一组顶点:通常用 V(Vertex) 表示顶点集合
- 一组边:通常用E (Edge) 表示边的集合
- 边是顶点对: ( v , w ) ∈ E (v, w)\in E (v,w)∈E, 其中 v , w ∈ V v, w \in V v,w∈V
- 有向边 < v , w > <v, w> <v,w>表示 v v v指向 w w w的边(单边线)
- 不考虑重边和自回路
2. 抽象数据类型定义
类型名称:图(Graph)
数据对象集: G ( V , E ) G(V, E) G(V,E)由一个非空的有限顶点集合 V V V 和一个有限边集合 E E E 组成
操作集:对于任意图 G ∈ G r a p h G\in Graph G∈Graph,以及 v ∈ V , e ∈ E v\in V, e\in E v∈V,e∈E
-
Graph Create(): 建立并返回空图
-
Graph InsertVertex (Graph G, Vertex v): 将v插入G
-
Graph InsetEdge (Graph G, Edge e): 将e插入G
-
void DFS (Graph G, Vertex v): 从顶点v出发深度优先遍历图
-
void BFS (Graph G, Vertex v): 从顶点v出发广度优先遍历图
-
void ShortestPath (Graph G, Vertex v, int Dist[]):
计算图G中顶点v到任意其他顶点的最短距离
-
void MST (Graph G):计算图G的最小生成树
3. 常见术语
无向图、有向图、网络…
4. 表示一个图
[外链图片转存失败(img-q7FVyJvf-1567356340202)(C:\Users\alway\AppData\Roaming\Typora\typora-user-images\1567340257441.png)]
- 对于无向图,邻接矩阵是对称矩阵,即可采用只存储下三角来省一半空间。
用一个长度 N ( N + 1 ) / 2 N(N+1)/2 N<