文章目录
图的基本概念
考纲内容
(一)图的基本概念
(二)图的存储及基本操作
邻接矩阵;邻接表;邻接多重表;十字链表
(三)图的遍历
深度优先搜索;广度优先搜索
(四)图的基本应用
最小(代价)生成树;最短路径;拓扑排序;关键路径
复习提示
图算法的难度较大,主要掌握深度优先搜索与广度优先搜索。掌握图的基本概念及基本性质、图的存储结构(邻接矩阵、邻接表、邻接多重表和十字链表)及特性、存储结构之间的转化、基于存储结构上的各种遍历操作和各种应用(拓扑排序、最小生成树、最短路径和关键路径)等。
图的相关算法较多,通常只需掌握其基本思想和实现步骤,而实现代码不是重点。
1.图的定义
图 G由顶点集 V和边集 E组成,记为 G=(V,E),其中 V(G)表示图 G 中顶点的有限非空集;E(G)表示图 G中顶点之间的关系(边)集合。
若 ,则用|V|表示图 G中顶点的个数,也称图G的阶,E={(u,v)|u∈V,v∈V},用|E|表示图G中边的条数。
注意:线性表可以是空表,树可以是空树,但图不可以是空图。也就是说,图中不能一个顶点也没有,图的顶点集V一定非空,但边集E可以为空,此时图中只有顶点而没有边。
下面是图的一些基本概念及术语。
1.1有向图
若E是有向边(也称弧)的有限集合,则图G为有向图。弧是顶点的有序对,记为<v,w>,
其中v,w是顶点,v称为弧尾,w称为弧头,<v,w>称为从v到w的弧,也称v邻接到w。
图 6.1(a)所示的有向图G1可表示为
1.2无向图
若E是无向边(简称边)的有限集合,则图G为无向图。边是顶点的无序对,记为(v,w)或(w,v)。
可以说w和v互为邻接点。边(v,w)依附于w和v,或称边(v,w)和v,w 相关联。
图 6.1(b)所示的无向图 G2可表示为
1.3简单图、多重图
一个图 G若满足:
①不存在重复边;
②不存在顶点到自身的边;
则称图 G为简单图。
图 6.1中 G1 和 G2 均为简单图。若图 G中某两个顶点之间的边数大于1条,又允许顶点通过一条边和自身关联,则称图G为多重图。
多重图和简单图的定义是相对的。本书中仅讨论简单图。
1.4完全图(简单完全图)
对于无向图,|E| 的取值范围为0到 n(n-1)/2,有 n(n-1)/2 条边的无向图称为完全图,在完全图中任意两个顶点之间都存在边。
对于有向图,|E| 的取值范围为0到n(n-1),有 n(n-1)条弧的有向图称为有向完全图,在有向完全图中任意两个顶点之间都存在方向相反的两条弧。
图 6.1中 G2为无向完全图,而G3为有向完全图。
1.5子图
设有两个图 G =(V,E)和 G'=(V',E'),若V'是V的子集,且E'是E的子集,则称G'是G的子图。
若有满足 V(G')=V(G)的子图 G',则称其为G的生成子图。图 6.1中G3为G1 的子图。
注意:并非 V和E的任何子集都能构成 G的子图,因为这样的子集可能不是图,即E的子集中的某些边关联的顶点可能不在这个V的子集中。
1.6连通、连通图和连通分量
【命题追踪——图的连通性与边和顶点的关系】
在无向图中,若从顶点v到顶点w有路径存在,则称v和w是连通的。若图G中任意两个顶点都是连通的,则称图 G为连通图,否则称为非连通图。
无向图中的极大连通子图称为连通分量,在图 6.2(a)中,图 G4有3个连通分量如图 6.2(b)所示。
假设一个图有n个顶点,若边数小于n-1,则此图必是非连通图;
思考:若图是非连通图,则最多可以有多少条边?
解答:非连通情况下边最多的情况:由n-1个顶点构成一个完全图,此时再加入一个顶点则变成非连通图。
1.7强连通图、强连通分量
在有向图中,若有一对顶点v和 w,从v到w和从 w到v之间都有路径,则称这两个顶点是强连通的。
若图中任意一对顶点都是强连通的,则称此图为强连通图。
有向图中的极大强连通子图称为有向图的强连通分量,图G1的强连通分量如图6.3所示。
思考:假设一个有向图有n个顶点,若是强连通图,则最少需要有多少条边?
解答:有向图强连通情况下边最少的情况:至少需要n条边,构成一个环路。
注意:在无向图中讨论连通性,在有向图中讨论强连通性。
1.8生成树、生成森林
连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中顶点数为n,则它的生成树含有n-1条边。
包含图中全部顶点的极小连通子图,只有生成树满足这个极小条件,对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。
在非连通图中,连通分量的生成树构成了非连通图的生成森林。
图G2的一个生成树如图 6.4所示。
注意:区分极大连通子图和极小连通子图:
极大连通子图要求子图必须连通,而且包含尽可能多的顶点和边;
极小连通子图是既要保持子图连通又要使得边数最少的子图。
1.9顶点的度,入度和出度
【命题追踪——无向图中顶点和边的关系】
在无向图中,顶点v的度是指依附于顶点v的边的条数,记为TD(v)。
在图 6.1(b)中,每个顶点的度均为3。无向图的全部顶点的度之和等于边数的2倍,因为每条边和两个顶点相关联。
在有向图中,顶点v的度分为入度和出度,入度是以顶点v为终点的有向边的数目,记为ID(v);而出度是以顶点v为起点的有向边的数目,记为 OD(v)。
在图 6.1(a)中,顶点 2 的出度为2、入度为 1。顶点v的度等于其入度与出度之和,即 TD(v)= ID(v)+ OD(v)。
有向图的全部顶点的入度之和与出度之和相等,并且等于边数,这是因为每条有向边都有一个起点和终点。
1.10边的权和网
在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。这种边上带有权值的图称为带权图,也称网。
1.11稠密图、稀疏图
边数很少的图称为稀疏图,反之称为稠密图。稀疏和稠密本身是模糊的概念,稀疏图和稠密图常常是相对而言的。一般当图 G满足|E|<|V|log|V|时,可以将 G视为稀疏图。
1.12路径、路径长度和回路
顶点 到顶点之间的一条路径是指顶点序列当然关联的边也可理解为路径的构成要素。
路径上的边的数目称为路径长度。第一个顶点和最后一个顶点相同的路径称为回路或环。
若一个图有n个顶点,且有大于n-1条边,则此图一定有环。
1.13简单路径、简单回路
在路径序列中,顶点不重复出现的路径称为简单路径。除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路。
1.14距离
从顶点u出发到顶点v的最短路径若存在,则此路径的长度称为从u到v的距离。若从u到v根本不存在路径,则记该距离为无穷(∞)。
1.15有向树
一个顶点的入度为 0、其余顶点的入度均为1的有向图,称为有向树。