掌握图主要掌握图的优先搜索与广度优先搜索。
掌握图的基本概念以及基本性质、图的存储结构(邻接矩阵、邻接表、邻接多重表和十字链表)及特性、存储结构之间的转化、基于存储结构上的各种遍历操作和各种应用(拓扑排序、最小生成树、最短路径和关键路径)等。
一、图的基本概念
1、图可分为无向图和有向图(左侧为无向图,右侧为有向图)
接下来,假设存在一条边(i,j) ,顶点i和顶点j为该边的两个端点,并称它们互为邻接点。关联相同两个端点的两条或者两条以上的边称为多重边,在数据结构中讨论的图都是指没有多重边的图。
2、顶点的度:应该顶点所关联的边
入度:有向图中,以顶点j为终点的边数目
出度:有向图中,以顶点i为起点的边数目;一个顶点的入度与出度的和为该顶点的度。
若一个图中有n个顶点和e条边,每个顶点的度为d:(0≤i≤n-1),则有:
也就是说,一个图中所有顶点的度之和等于边数的两倍。因为图中的每条边分别作为两个邻接点的度各计一次。
3、完全图
若无向图中的每两个顶点之间都存在着一条边,有向图中的每两个顶点之间都存在着方向相反的两条边,则称此图为完全图(completed graph)。显然,无向完全图包含r(n-1)/2条边,有向完全图包含n(n-1)条边。例如,下图(a)所示的图是一个具有4个项点的无向完全边,例如,图(b)所示的图是一个具有4个项点的无向完全图,共有6条边。图8.2(b)所示的图是一个具有4个顶点的有向完全图,共有12条边。
4.刺密图和桶蔬图
当一个图接近完全图时,称为稠密图(dense graph)。相反,当一个图含有较少的边数例如(e<nlog,n)时,称为稀疏图(sparse graphi)。
5.子图
设有两个图G=(V.E)和(G'=(V',E'),,若v'是v的子集,即V'cV,且E”是E的子、即E'是E的子集,则称G'是G的子图(subgraph)。
说明:图G的子图一定是个图,所以并非v的任何子集v和E的任何子集E'都能构或G的子图,因为这样的(V”,E')并不一定构成一个图。
6.路径和路径长度
在一个图G=(V.E)中,从顶点i到顶点j的一条路径(path)是一个顶点序列(ii,·5 -… ,im.j。若此图是无向图,则边(,),(1,i),…,(in-i,tm),(im,j)属于E(G);若此图是有向图,则<ii>,<i,ia>,",<im-L,im>,<im,j>属于E(G)。路径长度(pathlength)是指一条路径上经过的边的数目,若一条路径上除开始点和结束点可以相同以外,其余顶点均不相同,则称此路径为简单路径(simple path)。例如,在图8.2(b)中(0.2.1〕就是一条简单路径,其长度为2。
7,回路或环
若一条路径上的开始点与结束点为同一个顶点,则此路径被称为回路或环(cycle)。开始点与结東点相同的简单路径被称为简单回路或简单环(simple cycle)。例如,在图8.2(b)中(0,2.1,D)就是一条简单回路,其长度为3。
8.连通、连通图和连通分量
在无向图c中,若从顶点i到顶点j有路径,则称顶点;和顶点j是连通的。若图G中的任意两个顶点都是连通的,则称G为连通图(connected graph〕,否则称为非连通图。无向图G中的极大连通子图称为G的连通分量(connected component)。显然,连通图的连通分量只有一个(即本身),而非连通图有多个连通分量。
9.强连通图和强连通分量
在有向图G中,若从顶点i到顶点j有路径,则称从顶点i到顶点j是连通的。若图G中的任意两个顶点i和j都连通,即从頂点i到顶点j和从顶点j到顶点i都存在路径,则称图G是强连道图(strongly cornected graph).有向图G中的极大强通子图称为图G的强连通分量(stronglyconnected component)。显然,强连通图只有一个强连通分量(即本身),非强连通图有多个强连通分量。
在一个非强连通图中找强连通分量的方法如下;
(1)在图中找有向环。
(2)扩展该有向环;如果某个顶点到该环中的任一顶点有路径,并且该环中的任一顶点到这个顶点也有路径,则加入这个顶点。例如,图8.3(a)所示的是一个非强连通图,其中顶点0、1、2构成一个有向环,然后考查顶点3,可以将它加入,而顶点4和5不能加入。最后得到3个强连通分量,如图8.3(b)所示。
10.权和网
图中的每一条边都可以附有一个对应的数值,这种与边相关的数值称为权。权可以表示从一个顶点到另一个顶点的距离或花费的代价。边上带有权的图称为带权图(weighted graph),也称作网(net)。例如,图8.4所示为一个带权有向图G3。
【例8.1】n(n>2)个顶点的强连通图至少有多少条边?这样的有向图是什么形状?
解:根据强连通图的定义可知,图中的任意两个顶点i和j都连通,即从顶点i到顶点j和从顶点j到顶点i都存在路径。这样,每个顶点的度di>2,设图中总的边数为e,有:
即e≥n。因此n个顶点的强连通图至少有n条边。而只有n条边的强连通图是环形的,即从顶点O到顶点1有一条有向边,从顶点1到顶点2有一条有向边,…,从顶点n-1到顶点0有一条有向边,如图8.5所示。