图状结构简称图,是另一种非线性结构(把图中的数据元素称为顶点)。
6.1图的基本概念
6.1.1图的定义
图(Graph)是由非空的顶点(Vertex)集合和描述顶点之间的关系——边(Edge)或弧(Arc)的集合组成,G=(V,E),V是顶点的集合,E是边或弧的集合。
6.1.2图的基本术语
1、无向图(Undirected Graph):顶点之间的连线没有方向(边)。
2、有向图(Directed Graph):顶点之间的连线有方向(弧)。
3、无向完全图(Undirected Complete Graph):在无向图中,如果任意两个顶点都有边相连,含N个顶点的无向完全图中,有N(N-1)/2条边。
4、有向完全图(Directed Complete Graph):在有向图中,如果任意两个顶点都有弧相连,则称该图为有向完全图,含N个顶点的有向完全图中,有N(N-1)条弧。
5、权(Weight)、网或网络(Network):有些图的边(或弧)附带有一些数据信息,这些数据信息称为边(或弧)的权,边(或弧)上带权的图称为网或网络。
6、路径(path):就是一个顶点到另一个顶点的路径。
7、路径长度(Path Length):路径上边或弧的数目。
8、简单路径(Simple Path):一条路径上的顶点不重复出现。
9、第一个顶点和最后一个顶点相同的路径称为回路(Cycle)或环。
10、除第一个顶点和最后一个顶点相同其余顶点都不重复的回路称为简单回路(Simple Cycle)。
11、在无向图中,若两个顶点之间有路径,则称这两个顶点是联通的(Connect)。
12、如果无向图G中任意两个顶点之间都是连通的,则称图G是连通图(Connected Graph)。
13、连通分量(Connected Compenent)是无向图G的极大连通子图。
14、在有向图中,若图中任意两个顶点之间都存在从一个顶点到另一个顶点的路径,则称该有向图是强连通图(Strongly Connected Graph)。
15、有向图的极大强连通子图称为强连通分量(Strongly Connected Component)。
6.2图的存储结构
6.2.1邻接矩阵
邻接矩阵(Adjacency Matrix)是用两个数组来表示图,一个数组是一维数组,存储图中顶点的信息,一个数组是二维数组,即矩阵,存储顶点之间相邻的信息,也就是边(或弧)的信息。
假设图G=(V,E)中有N个顶点,即V={v0,v1,···,vn-1},用矩阵A(i,j)表示边(或弧)的信息。矩阵A(i,j)是一个N*N的矩阵,矩阵的元素为:A(i,j)=1,(i,j)之间有边;A(i,j)=0,(i,j)之间没边。
若G是网,则邻接矩阵可定义为:A(i,j)=Wij,(i,j)之间有边;A(i,j)=0或∞,(i,j)之间没边,Wij表示边的权值。
(1)无向图或无向网的邻接矩阵一定是一个对称矩阵。因此,在具体存放邻接矩阵时只需存放上(或下)三角矩阵元素即可。
(2)可以很方便的查找图中任一顶点的度。
6.2.2邻接表