← 返回学习笔记

Lecture 20:图基本概念

408 学习笔记:Lecture 20:图基本概念。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。

本页目录

20.1 基本概念

20.1.1 图的定义

定义:#图

描述:图是由顶点集合和边集合组成的一种非线性数据结构,通常记为: $$ G=(V,E) $$

  • $G$:Graph,表示一个图。
  • $V$:Vertex set,表示顶点集合。
  • $E$:Edge set,表示边集合,也可以理解为顶点之间关系的集合。

若: $$ V={v_1,v_2,\cdots,v_n} $$

则:

  • $\lvert V\rvert$ 表示图中顶点的个数,也称为图的阶。
  • $\lvert E\rvert$ 表示图中边的条数。
  • 图中的每一条边都要依附于顶点,边本身不能脱离顶点而存在。

对有向图而言,可能的弧来自顶点的有序对,因此应写成: $$ E\subseteq V\times V $$

无向边则用顶点的无序对表示。这里的“子集”非常重要:它只限定边的端点必须来自 $V$,并不表示任意两个顶点之间必然有边;只有完全图才把所有允许的顶点对都取为边。

易错点:#空图

描述:线性表可以为空表,树可以为空树,但图不允许没有顶点。

  • 图的顶点集合 $V$ 必须是非空有限集合。
  • 图的边集合 $E$ 可以为空。
  • 只有顶点、没有边的图是合法图。
  • 没有顶点的结构不能称为图。

因此: $$ V\ne \varnothing $$

但可以有: $$ E=\varnothing $$

基本术语:#图术语
符号 英文 中文 说明
$G$ Graph 图 整个图结构
$V$ Vertex 顶点 数据元素本身
$E$ Edge 边 顶点之间的关系

图与线性表、树的区别:

结构 关系特点 前驱后继关系
线性表 一对一 除表头表尾外,一个直接前驱、一个直接后继
树 一对多 一个结点可以有多个孩子,但通常只有一个双亲
图 多对多 任意两个顶点之间都可能存在关系

20.2 常见图

20.2.1 无向图

定义:#无向图

描述:若图 $G$ 中的每条边都没有方向,则称 $G$ 为无向图。

无向图中的边是一个无序对,记作: $$ (v,w) $$

因为没有方向,所以: $$ (v,w)=(w,v) $$

在无向图中:

  • 若边 $(v,w)$ 存在,则称顶点 $v$ 和顶点 $w$ 相邻。
  • 边 $(v,w)$ 依附于顶点 $v$ 和顶点 $w$。
  • 顶点 $v$ 和顶点 $w$ 是边 $(v,w)$ 的两个端点。
理解:

描述:无向边只表示“两个顶点之间有关系”,不区分关系从谁指向谁。

例如社交网络中的“好友关系”通常可以看作无向关系:

$$ A\text{ 是 }B\text{ 的好友}\Longleftrightarrow B\text{ 是 }A\text{ 的好友} $$


20.2.2 有向图

定义:#有向图

描述:若图 $G$ 中的每条边都有方向,则称 $G$ 为有向图。

有向图中的边也称为弧,用有序对表示: $$ <v,w> $$

其中:

  • $v$ 称为弧尾。
  • $w$ 称为弧头。
  • $<v,w>$ 表示从顶点 $v$ 指向顶点 $w$ 的一条弧。

因为有向边有方向,所以: $$ <v,w>\ne <w,v> $$

在有向图中:

  • 若弧 $<v,w>$ 存在,则称 $v$ 邻接到 $w$。
  • 也可以说 $w$ 邻接自 $v$。
  • $<v,w>$ 与 $<w,v>$ 是两条不同的弧。
理解:

描述:有向边不仅表示两个顶点有关系,还表示这个关系的方向。

例如网页链接关系:

$$ A\text{ 页面链接到 }B\text{ 页面} $$

不代表:

$$ B\text{ 页面也链接到 }A\text{ 页面} $$


20.2.3 简单图

定义:#简单图

描述:若图中不存在重复边,也不存在顶点到自身的边,则称该图为简单图。

简单图需要同时满足:

  • 不存在重复边。
  • 不存在自回路,即不存在从某个顶点指向自身的边。

无向简单图中不允许: $$ (v,v) $$

有向简单图中不允许: $$ <v,v> $$

易错点:

描述:408 中默认讨论的图一般是简单图,除非题目明确说明允许多重边或自回路。


20.2.4 多重图

定义:#多重图

描述:若图中允许两个顶点之间存在多条边,或允许顶点通过边和自身相关联,则称该图为多重图。

多重图可能出现:

  • 两个顶点之间有多条边。
  • 顶点到自身有边,也就是自回路。

与简单图相比,多重图的限制更少。

NOTE · 术语口径 有些教材把“允许平行边”称为多重图,把“还允许自环”另称伪图;本 PDF 将两者统一放在多重图下。做题时以题目给出的定义为准,但简单图始终不允许平行边和自环。

DS-L20-图类型对比.png

图示说明

  • 蓝色两图分别是简单无向图、简单有向图;灰色两图用红线标出了自环和平行边/弧。
  • 有向图中方向相反的两条弧不是重复弧,例如 $<A,B>$ 与 $<B,A>$ 可以同时存在于简单有向图。
对比总结:
图的类型 边是否有方向 是否允许重复边 是否允许自回路
简单无向图 无方向 不允许 不允许
简单有向图 有方向 不允许 不允许
多重无向图 无方向 可以允许 可以允许
多重有向图 有方向 可以允许 可以允许

20.3 顶点与度

20.3.1 无向图中顶点的度

定义:#度

描述:无向图中,顶点 $v$ 的度是依附于该顶点的边的条数,记作 $TD(v)$。

其中:

  • $TD(v)$ 表示 Total Degree,即总度数。
  • 在无向图中,每一条边都会让它的两个端点的度各增加 $1$。

若无向图有 $n$ 个顶点、$e$ 条边,则: $$ \sum_{i=1}^{n}TD(v_i)=2e $$

为什么是 $2e$:

描述:无向边有两个端点,所以统计所有顶点的度时,每条边会被统计两次。

例如一条边 $(v_1,v_2)$:

  • 对 $v_1$ 的度贡献 $1$。
  • 对 $v_2$ 的度贡献 $1$。

若题目允许无向自环,则一个自环在同一顶点处有两个端点,因此对该顶点的度贡献 $2$;握手定理 $\sum TD(v_i)=2e$ 仍成立。

所以一条边总共贡献 $2$。


20.3.2 有向图中顶点的入度和出度

定义:#入度

描述:有向图中,以顶点 $v$ 为终点的弧的数目称为 $v$ 的入度,记作 $ID(v)$。

定义:#出度

描述:有向图中,以顶点 $v$ 为起点的弧的数目称为 $v$ 的出度,记作 $OD(v)$。

有向图中顶点 $v$ 的总度为: $$ TD(v)=ID(v)+OD(v) $$

若有向图有 $n$ 个顶点、$e$ 条弧,则: $$ \sum_{i=1}^{n}ID(v_i)=\sum_{i=1}^{n}OD(v_i)=e $$

进一步有: $$ \sum_{i=1}^{n}TD(v_i)=2e $$

为什么入度和出度之和都等于 $e$:

描述:每一条有向边都只有一个弧尾和一个弧头。

对一条弧 $<v,w>$:

  • 它对顶点 $v$ 的出度贡献 $1$。
  • 它对顶点 $w$ 的入度贡献 $1$。

所以:

  • 所有顶点的入度之和 = 弧的条数。
  • 所有顶点的出度之和 = 弧的条数。
  • 若允许有向自环,它对同一顶点的入度和出度各贡献 $1$,上述公式仍成立。
常考判断:
图 单条边的贡献 度数公式
无向图 两个端点各加 $1$ $\sum TD(v_i)=2e$
有向图 一个出度、一个入度 $\sum ID(v_i)=\sum OD(v_i)=e$
有向图总度 入度加出度 $\sum TD(v_i)=2e$

20.4 路径、距离与连通性

20.4.1 路径

定义:#路径

描述:从顶点 $v_p$ 到顶点 $v_q$ 的路径,是一个顶点序列。

一般写作: $$ v_p,v_{i_1},v_{i_2},\cdots,v_q $$

这个序列表示:

  • $v_p$ 到 $v_{i_1}$ 之间有边。
  • $v_{i_1}$ 到 $v_{i_2}$ 之间有边。
  • 依次类推,最后能到达 $v_q$。

在有向图中,路径还必须满足方向一致。

路径长度:#路径长度

描述:路径长度是路径上边或弧的数目。

如果路径经过的顶点序列为: $$ v_0,v_1,v_2,\cdots,v_k $$

则路径长度为: $$ k $$

因为该路径包含: $$ (v_0,v_1),(v_1,v_2),\cdots,(v_{k-1},v_k) $$

共 $k$ 条边。


20.4.2 回路与简单路径

定义:#回路 #环

描述:若一条长度大于 $0$ 的路径的第一个顶点和最后一个顶点相同,则称该路径为回路,也称为环。

即: $$ v_0=v_k $$

定义:#简单路径

描述:若路径序列中各顶点不重复出现,则称该路径为简单路径。

注意:

  • 简单路径不允许顶点重复。
  • 简单回路除第一个顶点和最后一个顶点相同外,其余顶点不能重复。
易错点:

描述:路径不一定是简单路径;路径可以重复经过顶点或边,除非题目明确要求简单路径。


20.4.3 点到点的距离

定义:#距离

描述:从顶点 $u$ 到顶点 $v$ 的距离,是 $u$ 到 $v$ 的最短路径长度。

若 $u$ 到 $v$ 之间存在路径,则距离为最短路径上的边数。

若 $u$ 到 $v$ 之间不存在路径,则距离记为: $$ \infty $$

注意:
  • 距离强调的是最短路径。
  • 路径长度可以有很多种,距离只取其中最小的那一个。
  • 对无权图来说,距离就是最少经过几条边。
  • 对有权图来说,通常要区分“边数意义下的长度”和“权值意义下的长度”。
  • 无向图中 $d(u,v)=d(v,u)$;有向图中受弧方向影响,$d(u,v)$ 与 $d(v,u)$ 可能不同,甚至一个有限而另一个为 $\infty$。

20.4.4 无向图的连通

定义:#连通

描述:无向图中,若顶点 $v$ 到顶点 $w$ 之间存在路径,则称 $v$ 和 $w$ 是连通的。

定义:#连通图

描述:若无向图中任意两个顶点都是连通的,则称该图为连通图。

也就是说,对任意: $$ v,w\in V $$

都存在从 $v$ 到 $w$ 的路径。

常考性质:

描述:对于 $n$ 个顶点的无向图,若它是连通图,则至少需要 $n-1$ 条边。

公式: $$ e_{\min}=n-1 $$

原因:

  • 要让 $n$ 个顶点全部连通,最少可以构成一棵树。
  • 树有 $n$ 个顶点时,边数为 $n-1$。
  • 少于 $n-1$ 条边时,不可能把全部顶点连接成一个整体。

20.4.5 有向图的强连通

定义:#强连通

描述:有向图中,若顶点 $v$ 到顶点 $w$ 有路径,且顶点 $w$ 到顶点 $v$ 也有路径,则称 $v$ 和 $w$ 是强连通的。

即同时满足: $$ v\leadsto w $$

和: $$ w\leadsto v $$

定义:#强连通图

描述:若有向图中任意两个顶点都是强连通的,则称该图为强连通图。

也就是说,对任意两个顶点 $v,w$,都必须满足:

  • 从 $v$ 可以到达 $w$。
  • 从 $w$ 也可以到达 $v$。
常考性质:

描述:对于 $n\ge 2$ 个顶点的有向图,若它是强连通图,则至少需要 $n$ 条弧。

公式: $$ e_{\min}=n $$

原因:

  • 最少可以让所有顶点构成一个有向环。
  • 有向环中每个顶点出发都可以沿环到达其他顶点。
  • 有向环有 $n$ 个顶点时,弧数为 $n$。
  • 当 $n=1$ 时,单个顶点按长度为 $0$ 的路径可达自身,不需要弧也已强连通,因此最少弧数是 $0$。

20.4.6 不连通无向图的最多边数

结论:#不连通图最多边数

描述:若一个 $n\ge 2$ 顶点无向简单图是不连通的,则它最多有 $C_{n-1}^{2}$ 条边。

公式: $$ e_{\max}=C_{n-1}^{2}=\frac{(n-1)(n-2)}{2} $$

为什么这样取最大:

描述:要让图不连通,又让边数尽可能多,就让其中 $n-1$ 个顶点构成完全图,剩下 $1$ 个顶点孤立。

此时:

  • $n-1$ 个顶点之间边数达到最大。
  • 剩余 $1$ 个顶点不能和它们相连,否则整个图就连通了。
  • 所以最多边数是 $n-1$ 个顶点的无向完全图边数。

即: $$ C_{n-1}^{2} $$

题目反推:

描述:若一个 $n$ 顶点无向简单图的边数大于 $C_{n-1}^{2}$,则它一定连通。

写作: $$ e>C_{n-1}^{2}\Longrightarrow G\text{ 一定连通} $$


20.5 子图、连通分量、生成树和生成森林

20.5.1 子图

定义:#子图

描述:设图 $G=(V,E)$ 和图 $G'=(V',E')$,若 $V'\subseteq V$ 且 $E'\subseteq E$,则称 $G'$ 是 $G$ 的子图。

即: $$ V'\subseteq V,\quad E'\subseteq E $$

则: $$ G'\subseteq G $$

注意:
  • 子图首先必须是一个图。
  • 如果保留了一条边,则这条边依附的两个顶点也必须保留。
  • 不能只拿边、不拿边对应的顶点。

20.5.2 生成子图

定义:#生成子图

描述:若子图 $G'$ 包含原图 $G$ 的全部顶点,则称 $G'$ 为 $G$ 的生成子图。

生成子图满足: $$ V(G')=V(G) $$

但边集合可以是原图边集合的子集: $$ E(G')\subseteq E(G) $$

理解:

描述:生成子图不能删顶点,只能删边。


20.5.3 连通分量

定义:#连通分量

描述:无向图中的极大连通子图称为连通分量。

“极大”表示:

  • 它不是比较所有连通子图后挑“顶点数最多”的那一个,而是按包含关系不能再扩大。
  • 不能再从原图加入新的顶点及相应边而仍保持连通;若某个外部顶点能通过原图路径连到该分量,它本来就应属于同一连通分量。
  • 在确定的分量顶点集合内,应包含原图中这些顶点之间的全部边。
理解:

描述:连通分量就是无向图中一块一块互相连通的最大区域。

若无向图本身是连通图,则它只有一个连通分量,就是它自己。

若无向图不是连通图,则它有多个连通分量。


20.5.4 强连通分量

定义:#强连通分量

描述:有向图中的极大强连通子图称为强连通分量。

强连通分量内部任意两个顶点 $v,w$ 都要满足: $$ v\leadsto w,\quad w\leadsto v $$

理解:
  • 连通分量用于无向图。
  • 强连通分量用于有向图。
  • 强连通分量要求方向上能互相到达,条件比无向连通更强。

20.5.5 生成树

定义:#生成树

描述:连通图的生成树是包含图中全部顶点的一个极小连通子图。

生成树满足:

  • 包含原图全部顶点。
  • 保持连通。
  • 边数尽可能少。
  • 不含回路。

若连通图有 $n$ 个顶点,则它的生成树一定有: $$ n-1 $$

条边。

DS-L20-生成树.png

图示说明

  • 左侧是原连通图,右侧保留全部六个顶点并删去多余边,得到一棵含 $6-1=5$ 条边的生成树。
  • 生成树通常不唯一;不同删边选择可能得到不同树,但都必须连通、无环并包含全部顶点。
极小连通的含义:

描述:生成树已经是保持连通的最少边结构。

所以:

  • 删除生成树中的任意一条边,图就会变成不连通。
  • 向生成树中添加一条连接树内两个顶点的新边(例如原图中未选入的边),就会产生唯一回路。
生成树与原图的关系:
项目 原连通图 生成树
顶点 全部顶点 全部顶点
边 可以很多 必定 $n-1$ 条
是否连通 连通 连通
是否有环 可能有环 一定无环

20.5.6 生成森林

定义:#生成森林

描述:在非连通图中,各个连通分量的生成树组成的集合称为生成森林。

若一个无向图有 $k$ 个连通分量,且共有 $n$ 个顶点,则它的生成森林共有: $$ n-k $$

条边。

推导:

设第 $i$ 个连通分量有 $n_i$ 个顶点,则它的生成树有: $$ n_i-1 $$

条边。

所以整个生成森林的边数为: $$ \sum_{i=1}^{k}(n_i-1) =\sum_{i=1}^{k}n_i-k =n-k $$

生成树与生成森林对比:
项目 适用对象 结果
生成树 连通无向图 一棵树
生成森林 非连通无向图 多棵树

20.6 权值与特殊图

20.6.1 权值和网

定义:#权值

描述:图中边或弧上带有的数值称为权值。

权值可以表示:

  • 距离。
  • 时间。
  • 成本。
  • 容量。
  • 相似度。
  • 其他与关系相关的数量。
定义:#带权图 #网

描述:边上带有权值的图称为带权图,也称为网。

定义:#带权路径长度

描述:带权路径长度是路径上各条边权值之和。

若路径上各边权值为: $$ w_1,w_2,\cdots,w_k $$

则该路径的带权路径长度为: $$ \sum_{i=1}^{k}w_i $$

注意:
  • 无权图中的路径长度通常指边数。
  • 带权图中的路径长度可能指权值之和。
  • 题目要看清楚是问“边数最短”还是“权值和最小”。

20.6.2 无向完全图

定义:#无向完全图

描述:无向图中,若任意两个不同顶点之间都存在一条边,则称该图为无向完全图。

若无向完全图有 $n$ 个顶点,则边数为: $$ C_n^2=\frac{n(n-1)}{2} $$

一般无向简单图的边数范围:

描述:无向简单图最多达到无向完全图的边数。

所以: $$ 0\le e\le C_n^2=\frac{n(n-1)}{2} $$

其中:

  • $e=0$ 表示只有顶点、没有边。
  • $e=C_n^2$ 表示无向完全图。

20.6.3 有向完全图

定义:#有向完全图

描述:有向图中,若任意两个不同顶点之间都存在方向相反的两条弧,则称该图为有向完全图。

对任意两个不同顶点 $v,w$,有向完全图中都同时存在: $$ <v,w> $$

和: $$ <w,v> $$

若有向完全图有 $n$ 个顶点,则弧数为: $$ 2C_n^2=n(n-1) $$

一般有向简单图的边数范围:

描述:有向简单图最多达到有向完全图的弧数。

所以: $$ 0\le e\le n(n-1) $$

其中:

  • $e=0$ 表示只有顶点、没有弧。
  • $e=n(n-1)$ 表示有向完全图。

DS-L20-完全图.png

图示说明

  • 左图是五个顶点的无向完全图,每对不同顶点之间恰有一条边,共 $C_5^2=10$ 条。
  • 右图是四个顶点的有向完全图,每对不同顶点之间都有方向相反的两条弧,共 $4\times 3=12$ 条。

20.7 性质总结

20.7.1 完全图边数

图的类型 最多边数
无向简单图 $C_n^2=\dfrac{n(n-1)}{2}$
有向简单图 $2C_n^2=n(n-1)$

20.7.2 连通性边数

图的类型 条件 至少边数
无向图 连通 $n-1$
有向图 强连通且 $n\ge 2$ $n$

20.7.3 度数公式

图的类型 公式
无向图 $\sum_{i=1}^{n}TD(v_i)=2e$
有向图入度 $\sum_{i=1}^{n}ID(v_i)=e$
有向图出度 $\sum_{i=1}^{n}OD(v_i)=e$
有向图总度 $\sum_{i=1}^{n}TD(v_i)=2e$

SUMMARY · 原 PDF 性质总图核对 第 6 页手写总图中的完全图边数、连通/强连通最少边数和度数关系,已完整拆入上面三张可检索表;同时补出了原图未强调的 $n=1$ 强连通特例,因此不再重复嵌入低可读性的整页截图。


20.8 题型:图基本概念

题型一:根据度数判断边数

方法:

描述:看到“度数和”,先判断是无向图还是有向图。

  • 无向图: $$ e=\frac{1}{2}\sum TD(v_i) $$

  • 有向图: $$ e=\sum ID(v_i)=\sum OD(v_i) $$

  • 有向图如果给的是总度: $$ e=\frac{1}{2}\sum TD(v_i) $$

易错点:
  • 有向图的入度和出度都等于边数。
  • 有向图的总度之和才等于 $2e$。
  • 不要把无向图的度数公式直接套到入度或出度上。

题型二:判断至少需要多少边

方法:

描述:先判断题目要求的是连通还是强连通。

题目条件 最少边数 构造方式
$n$ 个顶点无向连通图 $n-1$ 构成一棵树
$n\ge 2$ 个顶点有向强连通图 $n$ 构成一个有向环
记忆:
无向连通:像树一样连起来,n 个点最少 n-1 条边。
有向强连通:n>=2 时像环一样转起来,最少 n 条弧;n=1 时为 0 条。

题型三:判断一定连通的边数条件

方法:

描述:无向简单图要保证一定连通,就要超过“不连通时的最多边数”。

不连通时最多: $$ C_{n-1}^{2} $$

因此,一定连通的条件是: $$ e>C_{n-1}^{2} $$

即最少需要: $$ C_{n-1}^{2}+1 $$

条边,才能保证图一定连通。

构造反例思路:
  • 让 $n-1$ 个顶点构成完全图。
  • 剩下 $1$ 个顶点孤立。
  • 这时图不连通,但边数已经尽可能多。

题型四:区分连通分量和生成树

概念 关键词 适用对象
连通分量 极大连通子图 无向图
强连通分量 极大强连通子图 有向图
生成树 极小连通子图 连通无向图
生成森林 各连通分量的生成树 非连通无向图
易错点:
  • “极大”强调不能再扩大。
  • “极小”强调不能再删边。
  • 连通分量是一个子图,不是单纯的顶点集合。
  • 生成树必须包含原图全部顶点。

相关知识

20.9 本节复盘

必须掌握:
  • 图的定义:$G=(V,E)$,且 $V$ 非空。
  • 无向图的边是无序对:$(v,w)=(w,v)$。
  • 有向图的边是有序对:$<v,w>\ne <w,v>$。
  • 简单图不允许重复边和自回路。
  • 无向图度数公式:$\sum TD(v_i)=2e$。
  • 有向图度数公式:$\sum ID(v_i)=\sum OD(v_i)=e$。
  • 路径长度是路径上的边数。
  • 距离是最短路径长度,不存在路径时为 $\infty$。
  • 无向连通图至少有 $n-1$ 条边。
  • $n\ge 2$ 时,有向强连通图至少有 $n$ 条弧;$n=1$ 时为 $0$ 条。
  • $n\ge 2$ 顶点不连通无向简单图最多有 $C_{n-1}^{2}$ 条边。
  • 无向完全图有 $C_n^2=\dfrac{n(n-1)}{2}$ 条边。
  • 有向完全图有 $n(n-1)$ 条弧。
  • 生成树是包含全部顶点的极小连通子图。
  • 生成森林是各个连通分量的生成树组成的集合。
一句话记忆:
图 = 顶点 + 边;无向看连通,有向看强连通;度数统计边,生成树保连通但边最少。