一、图的基本概念

1、图

定义:一个图(Graph)是一个序偶V,E\langle V,E \rangle,记为G=V,EG= \langle V,E \rangle,其中:
(1)V={v1,v2,vn}V= \{ v_1,v_2,\cdots v_n \}是有限非空集合,viv_i称为结点(Nodal Point),简称点(Point),VV称为结点集(Nodal Set)。
(2)EE是有限集合,称为边集(Frontier Set)。EE中的每个元素都有VV中的结点对与之对应,称之为边(Edge)。
与关系类似,图也有集合表示,图形表示,邻接矩阵三种表示方法。

一些名词:在图G=V,EG= \langle V,E \rangle中,
(1)若两个结点viv_ivjv_j是边ee的端点,则称viv_ivjv_j互为邻接点(Adjacent Point),否则viv_ivjv_j不邻接
(2)具有公共结点的两条边称为邻接边(Adjacent Edge)
(3)两个端点相同的边称为(Ring)或自回路(Self-Loop)
(4)图中不与任何结点相邻接的结点称为孤立结点(Isolated Point)
(5)仅由孤立结点组成的图称为零图(Null Graph)
(6)仅含一个结点的零图称为平凡图(Trivial Graph)
(7)含有nn个结点,mm条边的图,称为(n,m)(n, m)
(8)在有向图中,两结点间(包括结点自身间)若有同始点和同终点的几条边,则这几条边称为平行边(Parallel Edge);在无向图中,两结点间(包括结点自身间)若有几条边,则这几条边称为平行边
(9)两结点aabb间相互平行的边的条数称为边(a,b)( a,b )a,b\langle a,b \rangle重数

2、图的操作

操作 符号表示 具体操作
删除边 Ge=V,E{e}G-e= \langle V,E- \{ e \} \rangle 直接从图中去掉边ee
删除边集 GE=V,EEG-E'= \langle V,E-E' \rangle
删除结点 Gv=V{v},E{ev关联e}G-v= \langle V- \{ v \} ,E- \{ e\mid v关联e \} \rangle 去掉结点vv及其关联的所有边
删除结点子集 GV=VV,E{evVv关联e}G-V'= \langle V-V',E- \{ e\mid v\in V'\wedge v关联e \} \rangle
边的收缩 GeG\setminus e 去掉边ee,再将两端点变为一个新结点ww
加新边 G(u,v)G\cup (u,v) uuvv之间增加一条边

3、图的分类

(1)按边有无方向分类:
每条边都是无向边的图称为无向图(Undirected Graph);每条边都是有向边的图称为有向图(Directed Graph);有些边是无向边,而另一些边是有向边的图称为混合图(Mixed Graph)。环既可以看成有向边,也可以看成无向边。
(2)按有无平行边分类:
含有平行边的图称为多重图;非多重图称为线图;无环的线图称为简单图
(3)按边或结点是否含权分类:
赋权图(Weight Graph)G是一个三重组V,E,g\langle V,E,g \rangle或四重组V,E,f,g\langle V,E,f,g \rangle,其中VV是结点集合,EE是边的集合,ff是从VV到非负实数集合的函数,gg是从EE到非负实数集合的函数。非赋权图称为无权图

4、子图与补图

子图
设有图G=V,EG= \langle V,E \rangle和图G1=V1,E1G_1= \langle V_1,E_1 \rangle
(1)若V1VV_1\subseteq VE1EE_1\subseteq E,则称G1G_1GG的子图,记为G1GG_1\subseteq G
(2)若G1GG_1\subseteq G,且G1GG_1\ne G(即V1VV_1\subset VE1EE_1\subset E),则称G1G_1GG的真子图,记为G1GG_1\subset G
(3)若V1=VV_1 = VE1EE_1\subseteq E,则称G1G_1GG生成子图
(4)设V2VV_2\subseteq VV2V_2\ne \emptyset,以V2V_2为结点集,以两个端点均在V2V_2中的边的全体为边集的GG的子图,称为V2V_2导出的GG的子图,简称V2V_2导出子图

注意:生成子图与GG有相同的结点集,导出子图可以由GG删除结点子集得到。每个图都是它自己的生成子图,导出子图和子图。

题型子图类型的判断

完全图与补图:设G=V,EG= \langle V,E \rangle为一个具有nn个结点的无向简单图,如果GG中任意两个结点间都有边相连,则称GG为无向完全图(Undirected Complete Graph),简称GG为完全图(Complete Graph),记为KnK_n
G=V,EG= \langle V,E \rangle为一个具有nn个结点的有向简单图,如果GG中任意两个结点间都有两条方向相反的有向边相连,则称GG为有向完全图(Directed Complete Graph),在不发生误解的情况下,也记为KnK_n
G=V,EG= \langle V,E \rangle为简单图,G=V,E1G'= \langle V,E_1 \rangle为完全图,则称G1=V,E1EG_1= \langle V,E_1-E \rangleGG补图,记为GCG^C

注意:对于完全图来说,其邻接矩阵除主对角元为0外,其它元素均为1;计算补图时,先将原图补全为完全图,再删去原图的所有边;完全图的补图是nn个结点的零图。

题型:补图的计算

二、握手定理

度数
(1)图G=V,EG= \langle V,E \rangle中以结点vVv\in V为端点的边数(有环时计算两次)称为结点vv的度数(Degree),简称度,记为deg(v)deg(v)
(2)有向图G=V,EG= \langle V,E \rangle中以结点vv为始点的边数称为vv的出度(Out-Degree),记为deg+(v)deg^+(v);以结点vv为终点的边数称为vv的入度(In-Degree),记为deg(v)deg^-(v)。显然,deg(v)=deg+(v)+deg(v)deg(v) = deg^+(v)+deg^-(v)
(3)对于图G=V,EG= \langle V,E \rangle,度数为1的结点称为悬挂结点(Hanging Point),以悬挂结点为端点的边称为悬挂边(Hanging Edge)。

利用邻接矩阵计算度数:
(1)若GG是无向图,则AA中第ii行元素是由结点viv_i为端点的边所决定,其中为1的元素数目等于viv_i的度数,即deg(vi)=aii+k=1naikdeg(v_i)=a_{ii}+\sum_{k=1}^{n}a_{ik}deg(vi)=aii+k=1nakideg(v_i)=a_{ii}+\sum_{k=1}^{n}a_{ki}
(2)若GG是有向图,则AA中第ii行元素是由结点viv_i为始点的边所决定,其中为1的元素数目等于viv_i的出度,即deg+(vi)=k=1naikdeg^+(v_i)=\sum_{k=1}^{n}a_{ik}AA中第ii列元素是由viv_i为终点的边决定,其中为1的元素数目等于viv_i的入度,即deg(vi)=k=1nakideg^-(v_i)=\sum_{k=1}^{n}a_{ki}

题型结点度数的计算

握手定理:图中结点度数的总和等于边数的二倍,即设图G=V,EG= \langle V,E \rangle,则有vVdeg(v)=2E\sum_{v\in V}^{} deg(v)=2 | E |

推论:图中度数为奇数的结点个数为偶数。

定理:有向图中各结点的出度之和等于各结点的入度之和,等于边数,即设有向图G=V,EG= \langle V,E \rangle,则有vVdeg+(v)=vVdeg(v)=E\sum_{v\in V}^{} deg^+(v)=\sum_{v\in V}^{} deg^-(v)= | E |

度数序列:设V={v1,v2,v3,vn}V= \{ v_1,v_2,v_3,\cdots v_n \}为图G的结点集,称(deg(v1),deg(v2),,deg(vn))(deg(v_1), deg(v_2),\cdots, deg(v_n))GG的度数序列(Degree Sequence)。

三、图的同构

同构:设两个图G=V,EG= \langle V,E \rangleG=V,EG'= \langle V',E' \rangle,如果存在双射函数g:VVg:V\to V’,使得对于任意的e=(vi,vj)e = (v_i, v_j)(或者vi,vj\langle v_i,v_j \rangle)E\in E当且仅当e=(g(vi),g(vj))e'=(g(v_i),g(v_j))(或者g(vi),g(vj)\langle g(v_i),g(v_j) \rangle)E\in E’,并且eeee’的重数相同,则称GGGG’同构(Isomor- phism),记为GGG\cong G'

图同构的必要条件:
(1)结点数目相同;
(2)边数相同;
(3)度数相同的结点数相同。

图不同构的充分条件:
(1)结点数目不同;
(2)边数不同;
(3)度数相同的结点数不同。

注意:证明图同构,只需给出一种满足的双射函数即可;证明图不同构,首先考虑必要条件是否满足,均满足时可采用反证法。

题型图同构的判断与证明

四、通路与回路

1、概念

定义:给定图G=V,EG= \langle V,E \rangle中结点和边相继交错出现的序列Γ=v0e1v1e2v2ekvk\Gamma =v_0e_1v_1e_2v_2\cdots e_kv_k
(1)若Γ\Gamma中边eie_i的两端点是vi1v_{i-1}viv_iGG是有向图时要求vi1v_{i-1}viv_i分别是eie_i的始点和终点),i=1,2,,ki = 1, 2,\cdots , k,则称Γ\Gamma为结点v0v_0到结点vkv_k通路(Entry)。v0v_0vkv_k分别称为此通路的始点和终点,统称为通路的端点。 通路中边的数目k称为此通路的长度。当v0=vnv_0 = v_n时,此通路称为回路(Circuit)。

类型:若通路中的所有边互不相同,则称此通路为简单通路(Simple Entry)或一条迹;若回路中的所有边互不相同,则称此回路为简单回路(Simple Circuit)或一条闭迹。若通路中的所有结点互不相同(从而所有边互不相同),则称此通路为基本通路(Basic Entry)或者初级通路、路径;若回路中除v0=vkv_0 = v_k外的所有结点互不相同(从而所有边互不相同),则称此回路为基本回路(Basic Circuit)或者初级回路、圈。

注意:回路也是一种通路;基本通路(回路)一定是简单通路(回路),但反之不真。

题型通路类型的判断

2、计算

通路数目的计算定理:设G=V,EG= \langle V,E \rangle为线图,V={v1,v2,v3,vn}V= \{ v_1,v_2,v_3,\cdots v_n \}A=(aij)n×nA = (a_{ij})_{n\times n}GG的邻接矩阵,

Am=(aij(m))n×n=(a11a12a1na21a22a2nan1an2ann)(a11a12a1na21a22a2nan1an2ann)(a11a12a1na21a22a2nan1an2ann)mA^m = (a_{ij}^{(m)})_{n\times n} = \underbrace{ \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix} \cdot \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix} \cdot \cdots \cdot \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix}}_{m\text{次}}

则:aij(m)a_{ij}^{(m)}为从结点viv_ivjv_j的长度为mm的通路数目;aii(m)a_{ii}^{(m)}为从结点viv_i到自身的长度为mm的回路数目;i=1nj=1naij(m)\sum_{i=1}^{n} \sum_{j=1}^{n}a_{ij}^{(m)}GG中长度为mm的通路(含回路)总数。

题型:通路数目的计算

3、可达与距离

定义:在图G=V,EG= \langle V,E \rangle中,vi,vjVv_i,v_j\in V
(1)如果viv_ivjv_j存在通路,则称viv_ivjv_j可达的,否则称viv_ivjv_j不可达。规定:任何结点到自己都是可达的。
(2)如果viv_ivjv_j可达,则称长度最短的通路为viv_ivjv_j的短程线(Geodesic);viv_ivjv_j的短程线的长度称为viv_ivjv_j距离(Distance),记为d(vi,vj)d(v_i, v_j)。如果viv_ivjv_j不可达,则通常记为d(vi,vj)=d(v_i, v_j) = \infty

显然,d(vi, vj)满足下列性质:
d(vi,vj)0d(v_i, v_j)\ge 0
d(vi,vi)=0d(v_i, v_i)=0
d(vi,vk)+d(vk,vj)d(vi,vj)d(v_i,v_k)+d(v_k,v_j)\ge d(v_i,v_j)
对于无向图,一定有若viv_ivjv_j可达,则vjv_jviv_i可达;也有d(vi,vj)=d(vj,vi)d(v_i, v_j) = d(v_j, v_i)
对于有向图,若viv_ivjv_j可达,vjv_jviv_i不一定可达;也不一定有d(vi,vj)=d(vj,vi)d(v_i, v_j) = d(v_j, v_i)

定理:在一个具有nn个结点的图中,如果从结点viv_i到结点vjv_jvivjv_i\ne v_j)存在一条通路,则从viv_ivjv_j存在一条长度不大于n1n-1的通路。
推论:在一个具有nn个结点的图中,如果从结点viv_i到结点vjv_jvivjv_i\ne v_j)存在一条通路,则从viv_ivjv_j存在一条长度不大于n1n-1的基本通路。
定理:在一个具有nn个结点的图中,如果存在经过结点viv_i的回路,则存在一条经过viv_i的长度不大于nn的回路。
推论:在一个具有nn个结点的图中,如果存在经过结点viv_i的回路,则存在一条经过viv_i的长度不大于nn的基本回路。

可达的判断与距离的计算:设矩阵Bm=I+A+A2+A3++AmB_m=I+A+A^2+A^3+\cdots +A^mIInn阶单位阵),则BmB_m中的元素bij(m)b_{ij}^{(m)}表示图GG中结点viv_ivjv_j的长度小于等于mm的通路总数,若i=ji = jbii(m)b_{ii}^{(m)}GG中结点viv_i到自身的长度小于等于mm的回路总数。
定理:设G=V,EG= \langle V,E \rangle线图V={v1,v2,v3,vn}V= \{ v_1,v_2,v_3,\cdots v_n \},若bij(n1)>0b_{ij}^{(n-1)} >0,那么从viv_ivjv_j可达,否则不可达;并且

d(vi,vj)={,(aij(1)=0aij(2)=0aij(n1)=0)(bij(n1)=0)k,k=min{maij(m)0,m=1,2,n1}.(ij)d(v_i,v_j)=\{\begin{matrix}\infty &,& (a_{ij}^{(1)}=0\wedge a_{ij}^{(2)}=0 \wedge \cdots \wedge a_{ij}^{(n-1)}=0)\vee (b_{ij}^{(n-1)}=0) \\k &,& k=min \{ m\mid a_{ij}^{(m)}\ne 0,m=1,2\cdots ,n-1 \} \end{matrix}.(i\ne j)

可达性矩阵:设G=V,EG= \langle V,E \rangle是一个线图,其中V={v1,v2,v3,vn}V= \{ v_1,v_2,v_3,\cdots v_n \},并假定结点已经有了从v1v_1vnv_n的次序,称nn阶方阵P=(pij)n×nP = (p_{ij})_{n\times n}为图GG的可达性矩阵(Accessibility Matrix),其中pij={1,vivj可达0,否则.(i,j=1,2,,n)p_{ij}=\{\begin{matrix} 1, & v_i到v_j可达\\ 0, & 否则\end{matrix}.(i,j=1,2,\cdots,n)P=IAA(2)A(3)A(n1)P=I\vee A\vee A^{(2)}\vee A^{(3)}\vee \cdots \vee A^{(n-1)}A(i)A^{(i)}表示AA的布尔积ii次幂。

题型:可达的判断与距离的计算

4、无向赋权图的最短通路

Dijkstra算法:在赋权图中,边的权也称为边的长度,一条通路的长度指的就是这条通路上各边的长度之和。从结点vi到vj的长度最小的通路,称为vi到vj的最短通路。算法的基本思路如下:
(1)初始化:将v1v_1置为PP标号,d(v1)0d(v_1)=0P{v1}P= \{ v_1 \},对于viV\forall v_i\in Vi1i \ne 1,置viv_iTT标号,即TVPT=V-Pd(vi)={w(v1,vi),(v1,vi)E,(v1,vi)E.d(v_i)=\{\begin{matrix} w(v_1,v_i), & (v_1,v_i)\in E & \\ \infty, & (v_1,v_i)\notin E &\end{matrix}.
(2)找最小:寻找具有最小值的T标号的结点。若为vkv_k,则将vkv_kTT标号改为PP标号,且P=P{vk}P=P\cup \{ v_k \}T=T{vk}T=T- \{ v_k \}
(3)检查修改:修改与vkv_k相邻的结点的TT标号值。viV\forall v_i\in V,如果d(vk)+w(vk,vi)<d(vi)d(v_k)+w(v_k,v_i)<d(v_i),则将d(vi)d(v_i)修改为d(vk)+w(vk,vi)d(v_k)+w(v_k,v_i)
(4)重复:循环进行(2)(3)步骤,直到所求vnPv_n\in P,此时d(vn)d(v_n)即为通路的最小值。

第一次 第二次 第三次 第四次 第六次 第七次
v2v_2 1(12)1(1\to 2) PP PP PP PP PP
v3v_3 4(13)4(1\to 3) 3(123)3(1\to 2\to 3) PP PP PP PP
v4v_4 \infty 8(124)8(1\to 2\to 4) 8(124)8(1\to 2\to 4) 7(12354)7(1\to 2\to 3\to 5\to 4) PP PP
v5v_5 \infty 6(125)6(1\to 2\to5) 4(1235)4(1\to 2\to 3\to 5) PP PP PP
v6v_6 \infty \infty \infty 10(12356)10(1\to 2\to 3\to 5\to 6) 9(123546)9(1\to 2\to 3\to 5\to 4\to 6) PP

题型:利用Dijkstra算法求两点间最短通路

Floyd算法:从矩阵D(0)(wij)n×nD^{(0)}=(w_{ij})_{n\times n}(这里wijw(vi,vj)w_{ij}=w(v_i,v_j),称为图的长度矩阵)开始,依次构造出nn个矩阵D(1),D(2),,D(n)D^{(1)}, D^{(2)},\cdots ,D^{(n)},这里nn为图中结点的个数。第kk个矩阵D(k)(dij(k))n×nD^{(k)}=(d_{ij}^{(k)})_{n×n}的元素dij(k)d_{ij}^{(k)}表示从结点viv_ivjv_j而中间结点仅属于v1v_1vkv_kkk个结点的所有通路中的最短通路长度。若已知D(k1)(dij(k1))n×nD^{(k-1)}=(d_{ij}^{(k-1)})_{n×n},则D(k)(dij(k))n×nD^{(k)}=(d_{ij}^{(k)})_{n×n}的元素规定为$$d_{ij}^{(k)}=min { d_{ij}{(k-1)},d_{ik}{(k-1)}+d_{kj}^{(k-1)} } $$运算过程从k1k=1开始,让iijj分别取遍从11nn的所有值,然后kk增加11,如此反复进行,直到knk=n为止。这时D(n)(dij(n))n×nD^{(n)}=(d_{ij}^{(n)})_{n×n}的元素dij(n)d_{ij}^{(n)}就是从viv_ivjv_j的最短通路长度。

(012161412010710035630454028167620914890)\begin{pmatrix} 0 & 12 & \infty & \infty & \infty & 16 & 14\\ 12 & 0 & 10 & \infty & \infty & 7 & \infty\\ \infty & 10 & 0 & 3 & 5 & 6 & \infty\\ \infty & \infty & 3 & 0 & 4 & \infty & \infty\\ \infty & \infty & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & \infty & 2 & 0 & 9\\ 14 & \infty & \infty & \infty & 8 & 9 & 0\end{pmatrix}

(0121614120107261003563045402816762091426890)\begin{pmatrix} 0 & 12 & \infty & \infty & \infty & 16 & 14\\ 12 & 0 & 10 & \infty & \infty & 7 & {\color{Green} 26}\\ \infty & 10 & 0 & 3 & 5 & 6 & \infty\\ \infty & \infty & 3 & 0 & 4 & \infty & \infty\\ \infty & \infty & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & \infty & 2 & 0 & 9\\ 14 & {\color{Green} 26} & \infty & \infty & 8 & 9 & 0\end{pmatrix}

(012221614120107262210035636304540281676209142636890)\begin{pmatrix} 0 & 12 & {\color{Green} 22} & \infty & \infty & 16 & 14\\ 12 & 0 & 10 & \infty & \infty & 7 & 26\\ {\color{Green} 22} & 10 & 0 & 3 & 5 & 6 & {\color{Green} 36}\\ \infty & \infty & 3 & 0 & 4 & \infty & \infty\\ \infty & \infty & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & \infty & 2 & 0 & 9\\ 14 & 26 & {\color{Green} 36} & \infty & 8 & 9 & 0\end{pmatrix}

(0122225271614120101315726221003563625133049392715540281676920914263639890)\begin{pmatrix} 0 & 12 & 22 & {\color{Green} 25} & {\color{Green} 27} & 16 & 14\\ 12 & 0 & 10 & {\color{Green} 13} & {\color{Green} 15} & 7 & 26\\ 22 & 10 & 0 & 3 & 5 & 6 & 36\\ {\color{Green} 25} & {\color{Green} 13} & 3 & 0 & 4 & {\color{Green} 9} & {\color{Green} 39}\\ {\color{Green} 27} & {\color{Green} 15} & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & {\color{Green} 9} & 2 & 0 & 9\\ 14 & 26 & 36 & {\color{Green} 39} & 8 & 9 & 0\end{pmatrix}

(0122225271614120101315726221003563625133049392715540281676920914263639890)\begin{pmatrix} 0 & 12 & 22 & 25 & 27 & 16 & 14\\ 12 & 0 & 10 & 13 & 15 & 7 & 26\\ 22 & 10 & 0 & 3 & 5 & 6 & 36\\ 25 & 13 & 3 & 0 & 4 & 9 & 39\\ 27 & 15 & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & 9 & 2 & 0 & 9\\ 14 & 26 & 36 & 39 & 8 & 9 & 0\end{pmatrix}

(0122225271614120101315723221003561325133046122715540281676620914231312890)\begin{pmatrix} 0 & 12 & 22 & 25 & 27 & 16 & 14\\ 12 & 0 & 10 & 13 & 15 & 7 & {\color{Green} 23}\\ 22 & 10 & 0 & 3 & 5 & 6 & {\color{Green} 13}\\ 25 & 13 & 3 & 0 & 4 & {\color{Green} 6} & {\color{Green} 12} \\ 27 & 15 & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & {\color{Green} 6} & 2 & 0 & 9\\ 14 & {\color{Green} 23} & {\color{Green} 13} & {\color{Green} 12} & 8 & 9 & 0\end{pmatrix}

(01222221816141201013971622100356132213304612189540281676620914161312890)\begin{pmatrix} 0 & 12 & 22 & {\color{Green} 22} & {\color{Green} 18} & 16 & 14\\ 12 & 0 & 10 & 13 & {\color{Green} 9} & 7 & {\color{Green} 16}\\ 22 & 10 & 0 & 3 & 5 & 6 & 13\\ {\color{Green} 22} & 13 & 3 & 0 & 4 & 6 & 12 \\ {\color{Green} 18} & {\color{Green} 9} & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & 6 & 2 & 0 & 9\\ 14 & {\color{Green} 16} & 13 & 12 & 8 & 9 & 0\end{pmatrix}

(01222221816141201013971622100356132213304612189540281676620914161312890)\begin{pmatrix} 0 & 12 & 22 & 22 & 18 & 16 & 14\\ 12 & 0 & 10 & 13 & 9 & 7 & 16\\ 22 & 10 & 0 & 3 & 5 & 6 & 13\\ 22 & 13 & 3 & 0 & 4 & 6 & 12 \\ 18 & 9 & 5 & 4 & 0 & 2 & 8\\ 16 & 7 & 6 & 6 & 2 & 0 & 9\\ 14 & 16 & 13 & 12 & 8 & 9 & 0\end{pmatrix}

题型求简单无向赋权图中的所有最短通路

五、图的连通性

连通图与非连通图:若无向图GG中的任何两个结点都是可达的,则称GG是连通图(Connected Graph),否则称GG是非连通图(Unconnected Graph)或分离图(Separated Graph)。无向完全图Kn(n1)K_n(n\ge 1)都是连通图,而多于一个结点的零图都是非连通图。利用邻接矩阵AA和可达性矩阵PP,显然有:非平凡无向线图GG是连通图当且仅当它的可达性矩阵PP的所有元素均为1。

可达等价定理无向图G=V,EG= \langle V,E \rangle中结点之间的可达关系RR定义如下:R={u,vu,vVuv可达}R = \{ \langle u,v \rangle \mid u, v\in V,u到v可达 \},则RRVV上的等价关系。

注意:由于有向图中边都有方向性,因此有向图结点之间的可达关系仅仅具有自反性和传递性,而不具有对称性。因此,有向图中可达关系不是等价关系。

连通分支:无向图G=V,EG= \langle V,E \rangle中结点之间的可达关系RR的每个等价类导出的子图都称为GG的一个连通分支(Connected Component)。用p(G)p(G)表示GG中的连通分支个数。无向图GG是连通图当且仅当p(G)=1p(G) = 1;每个结点和每条边都在且仅在一个连通分支中。

定义:设G=V,EG= \langle V,E \rangle是一个有向图,
(1)略去GG中所有有向边的方向得无向图GG’,如果无向图GG’是连通图,则称有向图GG是连通图或称为弱连通图。否则称GG是非连通图;
(2)若GG中任何一对结点之间至少有一个结点到另一个结点是可达的,则称GG是单向连通图;
(3)若GG中任何一对结点之间都是相互可达的,则称GG是强连通图。

注意:强连通图一定是单向连通图;单向连通图一定是(弱)连通图。

强连通图的充要条件:有向图GG是强连通图的充分必要条件是:GG中存在一条经过所有结点的回路。
单向连通图的充要条件:有向图GG是单向连通图的充分必要条件是:GG中存在一条经过所有结点的通路。

题型有向图连通性的判断

有向图连通性的判断方法
(1)能够找到一条经过所有结点的回路(可以经过重复的边或结点),则是强连通图。
(2)能够找到一条经过所有结点的通路(可以经过重复的边或结点),则是单向连通图。
(3)将有向边看作无向边的无向图是连通图,则是弱连通图;否则是非连通图。
(4)利用邻接矩阵AA和可达性矩阵PP来判断有向图的连通性,适用于计算机处理。(具体来说,有向线图GG是强连通图当且仅当它的可达性矩阵PP的所有元素均为1;有向线图GG是单向连通图当且仅当它的可达性矩阵PP及其转置矩阵PTP^T经过布尔并运算后所得的矩阵P=PPTP’= P\vee P^T中除主对角元外其余元素均为1;有向线图GG是弱连通图当且仅当它的邻接矩阵AA及其转置矩阵ATA^T经布尔并运算所得的矩阵A=AATA’= A\vee A^T作为邻接矩阵而求得的可达性矩阵PP’中所有元素均为1。)

连通分支:在有向图G=V,EG= \langle V,E \rangle中,设GG’GG的子图,如果
(1)GG’是强连通的(单向连通的、弱连通的);
(2)对任意GGG''\subseteq G,若GGG’\subset G'',则GG''不是强连通的(单向连通的、弱连通的);
那么称GG’GG的强连通分支(单向连通分支、弱连通分支)(Strongly/Unilaterally/Weakly Connected Component),或称为强分图(单向分图、弱分图)。

注意:
(1)如果不考虑边的方向,弱连通分支对应相应的无向图的连通分支。
(2)注意把握强(单向、弱)连通分支的极大性特点,即任意增加一个结点就不是强(单向、弱)连通的了。
(3)与无向图的连通性类似,强(弱)连通分支确定的关系也是等价关系,但由于单向连通分支确定的关系不具有传递性,只是一个相容关系。

题型:有向图中连通分支的计算

有向图中连通分支的计算方法
(1)从某个结点开始逐渐增加结点,使得这些结点导出的子图是强(单向或弱)连通的,直到不能增加结点为止。
(2)强(弱)连通分支相对简单,因为每个结点在且仅在一个强(弱)连通分支中;而单向连通分支的计算比较难,因为某些结点可能在多个单向连通分支中。

定理:在有向图G=V,EG= \langle V,E \rangle中,它的每一个结点位于且仅位于一个强(弱)连通分支中。
在有向图G=V,EG= \langle V,E \rangle中,它的每一个结点至少位于一个单向连通分支中。
在有向图G=V,EG= \langle V,E \rangle中,它的每一条边至多在一个强连通分支中;至少在一个单向连通分支中;在且仅在一个弱连通分支中。

六、习题

1、邻接矩阵的几大应用

(1)利用邻接矩阵求度数:对于无向图,viv_i点的度数等于邻接矩阵第ii行所有元素的和,再加上aiia_{ii}。对于有向图,viv_i的出度等于第ii行所有元素的和,入度等于第ii列所有元素的和。
(2)利用邻接矩阵求长度为mm的通路数量:先计算邻接矩阵AAmm次幂,aij(m)a_{ij}^{(m)}为从结点viv_ivjv_j的长度为mm的通路数目;aii(m)a_{ii}^{(m)}为从结点viv_i到自身的长度为mm的回路数目。
(3)利用邻接矩阵求可达性矩阵:P=IAA(2)A(3)A(n1)P=I\vee A\vee A^{(2)}\vee A^{(3)}\vee \cdots \vee A^{(n-1)}A(i)A^{(i)}表示AA的布尔积ii次幂。
(4)利用邻接矩阵判断有向图的连通性。

2、同构与不同构的证明

证明图同构,只需给出一种满足的双射函数即可;证明图不同构,首先考虑必要条件是否满足,均满足时可采用反证法。

3、生成子图与导出子图的判断与计算

生成子图可以由原图删除边集得到,导出子图可以由原图删除点集得到。

Author

秦宇春

Posted on

2025-07-08

Updated on

2025-08-27

Licensed under