【数据结构】——图的定义和基本术语

图表示的是一种多对多的关系,相比线性表的一对一以及树结构的一对多,图的使用范围更广泛结构也更复杂,所以基本概念就更加重要。
以下参考《数据结构C语言第2版》

图的定义

图(Graph)是由一组顶点和一组边的集合构成,记为 G = ( V, E ),其中V是vertex,顶点的意思;E是edge,边的意思。因此,V(G)和E(G)通常分别表示图G的顶点集合和边的集合。其中顶点集合不能为空,边的集合可以为空。

若E(G)为有向边的集合,则G为有向图;若E(G)为无向边的集合,则G为无向图。

有向图中顶点对有序,称为从顶点 x 到顶点 y 的一条有向边,x为始点,y为终点。也可以称为一条弧,x为弧尾,y为弧头。

无向图中顶点对 (x, y) 无序,称为顶点 x 与顶点 y 的一条边。(x, y) = (y, x)。

图的基本术语

子图: 图 G = ( V, E ) 和图 G’ = ( V’, E’ ),如果V’是V的子集,E’是E的子集,那么G’就是G的子图。注意这里的子集包括相等,说明一个图的子图也包括它本身。

无向完全图与有向完全图: 这里只需弄懂什么是完全图,这里的完全有些类似于满二叉树中的满,即对于无向完全图,任意两个顶点间都有一条边,对于有向完全图,任意两个顶点间都有两条不同方向的弧。因此 n 个顶点的无向完全图含有 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n1)条边,n个顶点的有向完全图因为边具有方向,所以弧数为前面的2倍即 n ( n − 1 ) n(n-1) n(n1)

无向完全图的总边数可以这么想,2个顶点只有1条边,第3个顶点就要与前面两个顶点连线也就增加了两条边,同理第4个顶点增加了3条边,…,第n个顶点增加n-1条边,然后1~n-1累加求和。

稀疏图和稠密图: 边或弧少的图是稀疏图,边或弧多的图是稠密图,这里多与少是相对的,一般二者以比较的方式出现。

权和网: 也叫网,网是边或弧带有权值的图。

邻接点: 两个顶点间存在着一条边或者弧,则这两个顶点互为邻接点。

度、出度和入度: 出度入度只存在于有向图中,其中一个顶点的出度是指以该顶点为弧尾的弧的数目。入度是指以该顶点为弧头的弧的数目。度在有向图和无向图中均存在。有向图中一个顶点的度 = 顶点的出度 + 顶点的入度。无向图中一个顶点的度 = 和这个顶点相连的边数。

这里有一个关系,对于任何图,所有顶点的度数和 = 2倍的边数(或者弧数)。也很好理解,一条边或者弧必定产生两个度。

路径和路径长度: 路径是指一个顶点到另一个顶点经过的顶点序列。一般图的路径长度指的是一条路径上边或者弧的数目。带权图的路径长度指的是路径上边或弧的权值之和。

回路: 也叫环,指的是第一个顶点和最后一个顶点相同的路径,也就是从一个顶点出发最后又回到了这个顶点。

简单路径: 从一个顶点到另一个顶点中间的顶点序列没有重复的路径。这里的简单并不是指最短,而是指不多余。

简单回路: 也叫简单环。简单回路 = 回路 + 简单路径,也就是一个回路中除了第一个顶点和最后一个顶点相同外,其余顶点均不重复。

连通图和连通分量: 这两个概念只存在于无向图。在一个无向图中,如果任意两个顶点之间都至少存在着一条直接或是间接的路径,那么这个图就是连通图。连通分量等价于无向图中的极大连通子图。

极大连通子图: 极大不是指连通子图形状上的大小,而是指如果此时加入任何一个不在连通子图的点集中的点都会导致它不再连通。因此连通图的极大连通子图只有一个就是它本身,非连通图有多个极大连通子图。

强连通图和强连通分量: 这两个概念只存在于有向图。一个有向图中,对于任意两个顶点 V i V_i Vi V j V_j Vj,既存在 V i V_i Vi V j V_j Vj的一条路径,又存在 V j V_j Vj V i V_i Vi的一条路径,则该图为强连通图。最简单的强连通图是环。强连通分量等价于有向图中的极大强连通子图。

极大强连通子图: 这里的极大和上面的极大相同,是指此时加入任何一个不在强连通子图的点集中的点都会导致它不再强连通。所以强连通图的极大强连通子图只有一个为它本身,非强连通图有多个极大强连通子图。

注:只有一个顶点既可以认为是连通图也可以认为是强连通图。

生成树: 是指选取连通图的所有顶点及一部分边,只要能连通所有顶点而又不产生回路的任何子图都是这个连通图的生成树。所以一个连通图的生成树不唯一。生成树是这个连通图的一个极小连通子图。

极小连通子图: 极小是指能用最少的边将连通图中的所有顶点连通。显然对于n个顶点的连通图,需要n-1条边。因此,连通图的极小连通子图顶点数和连通图相等,边数小于或等于连通图边数。

最小生成树: 是对连通图的边赋予权值,在所有生成树中边的权值之和最小的那棵生成树。

有向树: 一个顶点入度为0,其余顶点入度均为1的有向图。

总结

  • 极大连通子图指的是不能加(顶点),否则就不连通;极小连通子图指的是不能减(边),否则不连通。二者只针对无向图来说。
  • 极大连通子图是讨论连通分量的,极小连通子图是讨论生成树的。
  • 有向图中只有极大强连通子图,没有极小强连通子图

你可能感兴趣的:(数据结构)