本章重点:
图的基本概念和基本性质
图的存储结构(邻接矩阵、邻接表、邻接多重表、十字链表)及其特性、存储结构之间的转化
基于存储结构上的遍历操作和各种应用(拓扑排序,最小生成树,最短路径,关键路径)等
算法难度大,主要掌握深度优先搜索和广度优先搜索
1.图的定义
图G
是由集合
(顶点集)V
和
(边集)E
组成,记为G = (V, E),其中V是顶点的
有限非空集合
,E表示图G中顶点之间的关系(边)的集合。
注意:图中不能一个顶点也没有,图的顶点集V一定非空,但边集E可以为空。
线性表可以是空表,树可以是空树,但图不可以是空图。
2.图的概念
2.1 简单图
简单图:图中
不存在顶点到其自身的边
,且
不存在重复的边。
多重图:图中顶点存在与自身相连的边(自环),或无向图中任意两个顶点之间有多余的边直接相连
数据结构中只讨论简单图
2.2 ⽆向图
在图G中,如果代表边的顶点对是无序的,则称G为无向图。边记为(Vi,Vj)。
![](https://i-blog.csdnimg.cn/blog_migrate/bf36601a425ce3e1a61ea900bd681ee1.png)
2.3 有向图
在图G中,如果代表边(弧)的顶点对是有序的,则称G为有向图。弧记为<Vi,Vj>,存在方向性。
Vi为弧尾,Vj为弧头,如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/54967b77237fe9e28d68bbae085bf344.png)
2.4 完全图
如果图中的
每两个顶点之间,都存在⼀条边
,我们就称这个图为完全图。
无向完全图:有
n(n-1)/2
条边
有向完全图:有
n(n-1)
条边
2.5 顶点的度、入度和出度
顶点的度:图中以该顶点为一个端点的边的数目。
在无向图中,依附于顶点v的边的数目,记为TD(v)。对具有n个顶点,e条边的无向图,无向图的全部顶点的度的和等于边数的2倍,因为每条边和两个顶点相关联。
入度和出度:
入度(In-degree):
入度是以顶点v为终点的有向边的数目,记为ID(v)。
出度(
Out-degree):
出度是以顶点v为起点的有向边的数目,记为OD(v)。
顶点v的度等于其出度和入度之和,即TD(v)=ID(v)+OD(v)
对于具有n个顶点,e条边的有向图,有向图的全部顶点的入度之和与出度之和相等,并且等于边数,这是因为每条有向边都有一个起点和终点。
2.6 路径和路径长度
路径:在一个图G=(V, E)中,从顶点i到顶点j的⼀条路径是⼀个
顶点序列
(i, i1, i2, ..., im, j),当然相关联的边也可理解为路径的构成要素。
顶点和相邻顶点序偶构成的边所形成的序列
路径长度:路径长度是指⼀条路径上经过的边的数目
简单路径:在路径序列中,若一条路径顶点不重复,则称此路径为简单路径
回路(环): 第一个顶点和最后一个顶点相同的路径
若无向图中有n个顶点,并且有大于n-1条边,则此图一定有环。
简单回路(简单环):第一个顶点和最后一个顶点相同的简单路径。
权:图中边具有与之相关的数值,称之为权重。权重可以表示从一个顶点到另一个顶点之间的距离、花费的代价等。这种带权图也叫网络。
2.7 子图、生成子图
子图:设有两个图G=(V,E)和G'=(V', E'),若V'是V的子集且E'是E的子集,则称G'是G的子图。
生成子图:如果满足
V(G')=V(G)
,则称其为G的生成子图。
2.8 连通、连通图、连通分量
连通:在无向图中,如果从顶点v到顶点w有路径存在,则称顶点v到w是连通的。
连通图:无向图G中任意两个顶点都是连通的。
如果一个图中有n个顶点和小于n-1条边,必然是非连通图。
连通分量:无向图中的极大连通子图。(如果本身就是连通图,则本身就是其连通分量,而非连通图的各个连通图作为其组成部分均为其连通分量)
极小连通子图:保证了连通图的基础上,又有着最少边数
![](https://i-blog.csdnimg.cn/blog_migrate/0dd8489f419f9cbe91b984a126eee122.png)
2.9强连通、强连通图、强连通分量
强连通:有向图中,如果从顶点v到顶点w和顶点w到顶点v之间都有路径,则称v和w是强连通的。
强连通图 :有向图G中任意两个顶点都是强连通的。
强连通分量:有向图中的极大强连通子图(极大指的是要包含当前图中所有的点)。
2.10 生成树、生成森林
生成树(针对无向图):连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中顶点数为n,则它的生成树有n-1条边,生成树可能不唯一。(在极小连通子图的基础上,保证包含了图的全部顶点)
生成森林:非连通图中,连通分量的生成树构成了非连通图的生成森林