原文见hexyl.co,排版更清楚一些。
离散数学(下)概述
10 图
10.1 图的分类

* 第三行的Pseudograph直译为伪图。
10.2 图的术语和一些特殊的图
10.2.2 一些术语
-
定义1 adjacent(相邻):一条边(edge)上的两个顶点(vertex,复数为vertices)是相邻的;这条边与顶点关联(incident)
-
定义2 neighborhood(邻居):
对于图 G = ( V , E ) G=(V,E) G=(V,E),
- 对一个顶点 v v v,它的邻居 $N(v) KaTeX parse error: Expected '}', got 'EOF' at end of input: = { v的所有相邻顶点$}
- 对一个集合 A A A, A A A 是 V V V 的子集,则 N ( A ) = ⋃ v ∈ A N ( v ) N(A) = \bigcup_{v\in A}N(v) N(A)=⋃v∈AN(v),即A中所有顶点的邻居的并集
-
定义3 degree(度):对无向图的一个顶点 v v v,它的度 d e g ( v ) = deg(v) = deg(v)= 与其关联的边数。特别地, v v v 上的环(loop)一个顶俩(计两次数,可以理解为一条边的两头都是 v v v,关联两次)。
-
isolated(孤立的):指度为0的顶点
-
pendant(悬挂的):指度为1的顶点
-
-
定理1 handshaking theorem(握手定理): m m m 条边的无向图,有 2 m = ∑ v ∈ V d e g ( v ) 2m=\sum_{v\in V}deg(v) 2m=∑v∈Vdeg(v),也即所有顶点的度之和是边数的两倍。注意即使有多条边和环时依然成立。
这是因为一条边与两个顶点关联,就会使它们的度增加2,于是 m m m 条边总共能使顶点有 2 m 2m 2m 的度。
-
定理2 一个无向图有偶数个度为奇数的顶点。
比较显然,由握手定理,所有顶点度之和为偶数 ( 2 m ) (2m) (2m),度为偶数的顶点的度之和一定是偶数,因此度为奇数的顶点的度之和也是偶数,因此必有偶数个。
-
定义4 ( u , v ) (u,v) (u,v) 是一条有向边,则称 u u u 邻接到(adjacent to) v v v,或 v v v 从 u u u 邻接 (adjacent from), u u u 称为这条边的起点(initial vertex), v v v 称为终点(terminal vertex)。环具有相同的起点和终点。
-
定义5
-
一个顶点 v v v 的入度(in-degree),记作 d e g − ( v ) deg^-(v) deg−(v),就是所有 v v v 作为终点的边的个数(被其他顶点指向的次数)
-
一个顶点 v v v 的出度(out-degree),记作 d e g + ( v ) deg^+(v) deg+(v),就是所有 v v v 作为起点的边的个数(指向其他顶点的次数)
-
一个环使顶点的出度和入度同时+1
-
-
定理3 对存在有向边的图 G = ( V , E ) G=(V,E) G=(V,E),有
∑ v ∈ V d e g − ( v ) = ∑ v ∈ V d e g + ( v ) = ∣ E ∣ \sum_{v\in V}deg^-(v)=\sum_{v\in V}deg^+(v)=|E| ∑v∈Vdeg−(v)=∑v∈Vdeg+(v)=∣E∣,即 总出度=总入度=边总数
考虑到一条边一定对应一出一入,比较显然。
-
概念:忽略一个图的有向边的方向,所构成的无向图称为基本无向图(underlying undirected graph),一个图与它的基本无向图有相同的边数。
10.2.3 一些特殊的图
-
Complete Graphs(完全图)
一个简单图,任意两个顶点之间都有且仅有一条边,即为完全图
n个顶点的完全图是确定的,记作 K n K_n Kn
K n K_n Kn 有 C n 2 = n ( n − 1 ) 2 = 1 2 ( n 2 − n ) C^{2}_{n}=\frac{n(n-1)}2=\frac12(n^2-n) Cn2=2n(n−1)=21(n2−n)
相对地,如果一个简单图至少有一对顶点之间没有边,则它是不完全的 (noncomplete)
-
Cycles(环图)
n个顶点的图, n ≥ 3 n\ge3 n≥3,
若包括顶点 v 1 , v 2 , . . . , v n v_1,v_2,...,v_n v1,v2,...,vn 和边 { v 1 , v 2 } , { v 2 , v 3 } , . . . { v n − 1 , v n } , { v n , v 1 } \{v_1,v_2\},\{v_2,v_3\},...\{v_{n-1},v_n\},\{v_n,v_1\} { v1,v2},{ v2,v3},...{ vn−1,vn},{ vn,v1},则称为环,记作 C n Cn Cn
-
Wheels(轮图)
给n顶点的环( C n C_n Cn)再加一个顶点,然后把这个新顶点与其它所有顶点用一条边连接,就形成了轮,记作 W n W_n Wn,需要注意 W n W_n Wn 只有n-1个顶点。
-
n-Cubes(n维超立方体)
一个n-cube有 2 n 2^n 2n 个顶点,用长度为n的二进制串给它们编号,任意两个编号恰有一位不同的顶点相邻,记作 Q n Q_n Qn。
10.2.4 二分图(Bipartite Graphs)
-
定义6 bipartite graph(二分图):对于一个简单图 G G G ,如果它的顶点集合 V V V 能够被划分成两个不相交的子集 V 1 V_1 V1 和 V 2 V_2 V2,使得图中的每条边都连接一个 V 1 V_1 V1 中的顶点和一个 V 2 V_2 V2 中的顶点(因此 V 1 V_1 V1 或 V 2 V_2 V2 内部没有边),我们称 G G G 是二分的(bipartite), ( V 1 , V 2 ) (V_1,V_2) (V1,V2) 是 G G G 的顶点集 V V V 的一个划分(bipartition)。
-
定理4 一个简单图是二分的,当且仅当你可以用两种不同的颜色涂满所有顶点,保证没有两个相邻的顶点被涂上同一种颜色。
显然,将两种颜色的顶点分别归于两个集合,那么这两个集合就是一个划分。
-
概念:设一个图上有一个划分 ( V 1 , V 2 ) (V_1,V_2) (V1,V2) , V 1 V_1 V1 和 V 2 V_2 V2 中分别有 m 和 n 个顶点,且 V 1 V_1 V1 和 V 2 V_2 V2 中的任意两个顶点之间都有边(都是相邻的),那么这个图是完全二分图(Complete Bipartite Graphs),记作 K m , n K_{m,n} Km,n
10.2.5 图的转换(New Graphs from Old)
-
定义7 subgraph(子图):一个图 G = ( V , E ) G=(V,E) G=(V,E) 的子图是一个图 H = ( W , F ) H=(W,F) H=(W,F),满足 W ⊆ V W\subseteq V W⊆V 且 F ⊆ E F\subseteq E F⊆E。如果 H ≠ G H\ne G H=G,那么 H H H 是 E E E 的真子图(proper subgraph)。
-
定义8 subgraph induced(导出子图):由一个图的顶点集合的一个子集,和两端顶点均在这个子集中的所有边的集合组成的图,称作由这个子集导出的子图。
相当于从一个图中抽出几个顶点,保留它们原本的边,这个新的图就是这些顶点导出的子图。
如下图所示,取 V 1 = { a , b , c } V_1=\{a,b,c\} V1={ a,b,c},则 V 1 V_1 V1 的导出子图为右图所示
-
定义9 union(并图):设 G 1 = ( V 1 , E 1 ) G_1 = (V_1, E_1) G1=(V1,E1), G 2 = ( V 2 , E 2 ) G_2 = (V_2, E_2) G2=(V2,E2),则 G ′ = ( V 1 ∪ V 2 , E 1 ∪ E 2 ) G' = (V_1\cup V_2, E_1\cup E_2) G′=(V1∪V2,E1∪E2) 称为 G 1 G_1 G1 和 G 2 G_2 G2 的并图 (union),记为 U 1 ∪ U 2 U_1\cup U_2 U1∪U2
-
定义(补充) Complementary Graph 补图(绝对补图): G G G 的补图即完全图 K n K_n Kn去除 G G G 的边集后得到的图 K n − G K_n-G Kn−G ,记作 G ‾ \overline G G。 也即 G G G 与 G ‾ \overline G G 的边是互补的。
-
定义(补充) 相对补图:设 G = ( V , E ) G=(V,E) G=(V,E) , G ′ = ( V ′ , E ′ ) G'=(V',E') G′=(V′,E′) 为其子图,则 G ′ ′ = ( V ′ ′ , E − E ′ ) G''=(V'',E-E') G′′=(V′′,E−E′) 称为 G ′ G' G′ 相对于 G G G 的补图,其中 V ′ ′ V'' V′′ 为 E − E ′ E-E' E−E′ 中的边所关联的所有顶点的集合。(也就是说补图中不存在孤立点,因为没有一条边与它关联)

10.3 图的表示与图的同构(Representing Graphs and Graph Isomorphism)
10.3.1 Introduction
有许多方式可以表示一张图,我们需要讨论几种图的表示方法。
有时两张图有完全相同的形式,意思是它们保留了边的顶点能够建立起一一对应的关系,于是我们称它们是同构(isomorphic)的,判断两张图是否同构是图论中的一个重要问题。
10.3.2 图的表示(Representing Graphs)
-
概念:可以依次列出每个顶点的相邻顶点来表示一张图,这张表叫做 adjacency lists(邻接表),如果是有向图,可以列出所有起点的终点。
10.3.3 邻接矩阵(Adjacency Matrices)
-
概念:给一个简单图 G = ( V , E ) G=(V,E) G=(V,E) 的 n n n 个顶点编号,列为 v 1 , v 2 , . . . , v n v_1,v_2,...,v_n v1,v2,...,vn,则 G 的 adjacency matrix(邻接矩阵) A A A(或记作 A G A_G AG )是一个 n × n n\times n n×n 的矩阵,当且仅当 $v_i $和 v j v_j vj 相邻, a i j = 1 a_{ij}=1 aij=1 ,否则 a i j = 0 a_{ij}=0 </