组合数学-Chapter V: 图论

Chapter V: 图论

大量的组合问题都可以被归结为图论问题, “图” 这一组合结构可能是组合数学这一学科中研究得最为透彻的结构. 下面, 我们将对组合意义上的 “图” 做数学意义上抽象化定义, 并结合例子对一些重要概念进行介绍.


定义5.1 (图)

我们称由两个集合组成的集合对 G = ( V , E ) G= (V,E) G=(V,E) (graph), 其中 V V V 为一个集合, E E E 是一个由 V V V 的二元子集为元素构成的集合. 我们分别称 V V V E E E G G G顶点集 (vertex set) 和 边集 (edge set). 简单起见, 我们常用 x y xy xy 指代边 { x , y } \{x,y\} {x,y}.

[注]

  1. 显然, x y ∈ E ⇔ y x ∈ E xy \in E \Leftrightarrow yx \in E xyEyxE.
  2. x y ∈ E ⇔ x , y xy \in E \Leftrightarrow x,y xyEx,y 邻接(adjacent); 亦称 x , y x,y x,y x y xy xy 关联 (incident).
  3. u v , u x ∈ E ⇒ u v uv, ux \in E \Rightarrow uv uv,uxEuv u x ux ux u u u 邻接 (adjacent), 邻接的边共用一个顶点.
  4. E E E 中的元素 (点对) 互异, 且不包含由同一个点所组成的点对.

定义5.2 (邻接点集)

对于图 G G G 的每一个顶点 x x x, 我们用符号 N G ( x ) N_{G}(x) NG(x) 代表由一切与 x x x 邻接的顶点所组成的集合, 称其为 在图 G G G 中顶点 x x x 的邻接点集.


定义5.3 (度)

我们称 ∣ N G ( x ) ∣ |N_G(x)| NG(x) 为顶点 x x x (degree), 代表和 x x x 邻接的顶点个数, 记为 d G ( x ) d_G(x) dG(x).


[例] (握手引理或度和引理)

对于任一个图 G G G, 下列等式成立:
∑ V ∈ V ( G ) d G ( V ) = 2 ∣ E ( G ) ∣ \sum_{V\in V(G)}d_G(V) = 2|E(G)| VV(G)dG(V)=2E(G)

[证明]

根据 “度” 的定义可知: 它等于和某个特定的点邻接的其余顶点个数. 故在计数时, 也可将其视为在某个特定点邻接的边的条数. 累加求和时, 计数恰好将图的所有边遍历两遍. 故可知原等式成立. ■ \blacksquare

[推论]

对任意图 G G G, 度数为奇数的顶点个数总是偶数.

[证明]

不妨假设 V 1 ⊂ V ( G ) V_{1} \subset V(G) V1V(G) 为由一切度数为偶数的顶点所组成的顶点子集, 设 V 2 = V ( G ) \ V 1 V_2 = V(G) \backslash V_{1} V2=V(G)\V1. 下证 ∣ V 2 ∣ |V_2| V2 为偶数:

由度和引理:

2 ∣ E ( G ) ∣ = ∑ V ∈ V ( G ) d G ( V ) = ∑ V ∈ V 1 d G ( V ) + ∑ V ∈ V 2 d G ( V ) . 2|E(G)| = \sum_{V \in V(G)}d_G(V) = \sum_{V \in V_1}d_G(V) + \sum_{V \in V_2}d_G(V). 2E(G)=VV(G)dG(V)=VV1dG(V)+VV2dG(V).
故有:
∑ V ∈ V 2 d G ( V ) = 2 ∣ E ( G ) ∣ − ∑ V ∈ V 1 d G ( V ) ≡ 0 m o d    2 \sum_{V \in V_2}d_G(V) = 2|E(G)| - \sum_{V \in V_1}d_G(V) \equiv 0 \mod 2 VV2dG(V)=2E(G)VV1dG(V)0mod2

∣ V ∣ ≡ 0 m o d    2. ■ |V| \equiv 0 \mod 2. \blacksquare V0mod2.


下面, 我们介绍一些特殊的图:

定义5.4 (完全图)

若图 G G G 的任意一对不同的顶点都是邻接的, 称其为 完全图 (complete graphs), 记为 K l K_l Kl, l l l 为图的顶点数. 显然, E ( K l ) = ( n 2 ) . E(K_l) = \binom n2. E(Kl)=(2n).


定义5.5 (路)

若图 G G G 的顶点可被按照某种顺序排序, 且只有序列中相邻的两个顶点才是邻接的, 则称 G G G (path).

通常, 记具有 n n n 个顶点的路为 P n P_n Pn. 其边长为 n − 1 n-1 n1.


定义5.6 (圈)

若图 G G G 的顶点可按照一循环顺序排序, 且当且仅当序列中相邻的两个顶点才是邻接的, 则称 G G G (cycle).

通常, 记具有 n n n 个顶点的圈为 C n C_n Cn. 其边长为 n n n.


定义5.7 (二部图)

如果 G G G 的顶点 V V V 可分割为两个互不相交的子集 ( A , B ) (A,B) (A,B),并且图中的每条边 ( i , j ) (i,j) (i,j) 所关联的两个顶点 i i i j j j 分别属于这两个不同的顶点集,则称图 G G G 为一个 二分图, 亦称为 二部图 (Bipartite Graph).


定义5.8 (顶点分布)

若一个二部图 G G G 的顶点集可被分为 X X X Y Y Y, 使得 G G G 中每一条边的顶点分别分布在 X X X Y Y Y 中, 则我们称 X X X Y Y Y 为 图 G G G顶点分布 (partite set).


[注]

  1. 每一条单独的边都是一个二部图, 每一个长为偶数的圈也是一个二部图.
  2. 长为奇数的圈不是二部图.
  3. 我们称一个圈为 “奇圈” 或 “偶圈”, 若其长度为奇数或偶数.

下面介绍两种可行的, 对图的操作.

设图 G G G, v , e v,e v,e 分别为图的一个顶点和一条边. 我们称:
( V ( G ) \ { v } , E ( G ) \ { u v : u v ∈ E ( G ) } ) (V(G)\backslash \{v\}, E(G)\backslash \{uv: uv \in E(G)\}) (V(G)\{v},E(G)\{uv:uvE(G)})
为由图 G G G 删去顶点 v v v 所得到的图, 记为 G − v G-v Gv.

我们称:
( V ( G ) \ { v } , E ( G ) \ { e } ) (V(G)\backslash \{v\}, E(G)\backslash \{e\}) (V(G)\{v},E(G)\{e})
为由图 G G G 删去边 e e e 所得到的图, 记为 G − e G-e Ge.

[注]

当我们从图中删去一个顶点时, 所有和该顶点关联的边都要被一同删去!


定义5.9 (子图)

G G G 是一个图. 所有由 G G G 删去顶点或边而得到的新图被称为 G G G 的子图 (subgraph of G).

[注]

  1. G G G 是其本身的子图.
  2. H H H G G G 的子图. 若 V ( H ) = V ( G ) V(H) = V(G) V(H)=V(G), 称 H H H G G G生成子图 (spanning subgraph).
  3. H H H G G G 的子图. 若 H H H 中所有边都和 V ( H ) V(H) V(H) 中的两个顶点相关联, 则称 H H H G G G 的诱导子图 (induced subgraph).
  4. 我们可以通过 “删除 G G G 的某个顶点时仅删除与该顶点相关联的所有边” 的方式得到诱导子图.

定义5.10 (无圈图)

G G G 的子图中没有任何一个是圈, 则称其为一个 无圈图 (Acylic graph).


定义5.11 (连通图)

若任取图 G G G 的一对顶点 u , v u,v u,v, 均存在一条始于 u u u, 终于 v v v 的路, 则称 G G G连通图 (connected graph).


定义5.12 (树)

我们称连通的无圈图为 .

[注]

G G G 的子图 T T T 为树, 我们称其为 G G G 的生成树 (spanning tree). T T T 同样也是 G G G 的生成子图.

[例]

G G G 为连通图. 设 C C C G G G 的一个子圈, e e e C C C 的一条边. 求证: G − e G-e Ge 仍为连通图.

[证明]

e e e u , v u,v u,v 关联. 对于 G G G 中的每一条路, 它们或经过 e e e, 或不经过 e e e.

对于所有原来不经过 e e e 的路: 从 G G G 中删去 e e e 后它们的连通性显然不变.

对于所有原来需经过 e e e 的路: 由圈的结构知: 删去 e e e 后的环在连通性上和 e e e 等价. 故它们的连通性也不受影响.

综上: G − e G-e Ge 仍为一个连通图. ■ \blacksquare


定理5.1

若对于图 G G G 的任何一个顶点 v v v, 均有 d G ( v ) ⩾ 2 d_G(v) \geqslant 2 dG(v)2, 则 G G G 中必存在一个长度不小于 min ⁡ { d G ( v ) : v ∈ V ( G ) + 1 } = δ ( G ) + 1 \min\{d_G(v): v \in V(G) + 1\} = \delta(G) + 1 min{dG(v):vV(G)+1}=δ(G)+1 的圈.

[注]

方便起见, 我们作如下约定:

G G G 中顶点的最小度数: δ ( G ) = min ⁡ { d G ( v ) : v ∈ V ( G ) } \delta(G) = \min\{d_G(v): v \in V(G)\} δ(G)=min{dG(v):vV(G)}

G G G 中顶点的最大度数: Δ ( G ) = max ⁡ { d G ( v ) : v ∈ V ( G ) } \Delta(G) = \max\{d_G(v): v \in V(G)\} Δ(G)=max{dG(v):vV(G)}

故以上定理可改写成以下形式:

任何一个最小度数不少于 2 2 2 的图 G G G 都存在一个长度不小于 δ ( G ) \delta(G) δ(G) 的圈作为子图.

[证明]

P P P G G G 的一个子图, 也是 G G G 中长度最大的路. 设
P = v 1 v 2 ⋯ v l . P = v_1v_2\cdots v_l. P=v1v2vl.

N G ( v 1 ) ⊂ V ( P ) ,     N G ( v l ) ⊂ V ( P ) . N_G(v_1) \subset V(P), ~~~ N_G(v_l) \subset V(P). NG(v1)V(P),   NG(vl)V(P).
否则, 我们可以在 G G G 中找到一条长为 l l l 的路, 这和假设相矛盾. ( E ( P ) = l − 1 E(P) = l-1 E(P)=l1)


d G ( v ) ⩾ 2 d_G(v) \geqslant 2 dG(v)2, v 1 v_{1} v1 P P P 中有不止一个邻居. 不妨假设 r r r 为满足 v 1 v r ∈ E ( G ) v_1v_r \in E(G) v1vrE(G) 的最大整数. 因此, r ⩾ d G ( v ) + 1 r \geqslant d_G(v) + 1 rdG(v)+1. 此时, v 1 v 2 ⋯ v r v 1 v_1v_2\cdots v_rv_1 v1v2vrv1 即为 长为 r r r 的圈. ■ \blacksquare


[推论]

每一棵树中都存在一个度数不超过 1 1 1 的顶点.


定理 5.2

T T T 为树. 则满足 ∣ E ( T ) ∣ = ∣ V ( T ) ∣ − 1. |E(T)| = |V(T)| - 1. E(T)=V(T)1.

[证明]

下面是用数学归纳法证明:

首先, 容易验证 ∣ V ( T ) ∣ = 2 |V(T)| =2 V(T)=2 时结论成立. 假设 ∣ V ( T ) ∣ ⩽ k − 1 |V(T)| \leqslant k-1 V(T)k1 时结论仍成立.

考虑 ∣ V ( T ) ∣ = k |V(T)| = k V(T)=k 的图:

x x x T T T 中一个度数为 1 1 1 的顶点, T − x T-x Tx 仍为树. 且 ∣ V ( T − x ) ∣ = k − 1 |V(T-x)| = k-1 V(Tx)=k1.

此时有: ∣ E ( T ) ∣ = ∣ E ( T − x ) ∣ + 1 |E(T)| = |E(T-x)| + 1 E(T)=E(Tx)+1. 由归纳假设知: ∣ E ( T ) ∣ = k − 1 = ∣ V ( T ) ∣ − 1 |E(T)| = k-1 = |V(T)|-1 E(T)=k1=V(T)1. ■ \blacksquare


[例]

求证: 任一棵树均为一个二部图.

[证明]

(法1)
下面使用数学归纳法进行证明:
T T T 为树, ∣ E ( T ) ∣ = 1. |E(T)| = 1. E(T)=1. X , Y ⊂ V ( T ) , X ∩ Y = ∅ X,Y \subset V(T), X\cap Y = \empty X,YV(T),XY=.

T T T 的唯一一条边的两个顶点分别归于 X , Y X,Y X,Y , T T T 显然是一个二部图.

∣ E ( T ) ∣ ⩽ k − 1 |E(T)| \leqslant k-1 E(T)k1 时结论仍然成立:

∣ E ( T ) ∣ = k |E(T)| = k E(T)=k 时: 设 x x x 为某一个度数为 1 1 1 的顶点. 可知: ∣ E ( T − x ) = k − 1 ∣ |E(T-x) = k-1| E(Tx)=k1. 由归纳假设知: T − x T-x Tx 是一个二部图.

x x x 归于与其邻接的顶点所属的不同的顶点集中, T T T 依然满足称为二部图的条件, 证毕. ■ \blacksquare

(法2)
沿用法1记号和规定. 我们采取以下的方法对 T T T 中的点进行归类:

将起始点归入 X X X 中, 向下遍历每一条边, 总是将边的两个顶点归于不同的集合中. 这样, 即得到了满足二部图判别条件的两个顶点子集. 若不然, 则总可找到一个圈, 这和 “树” 的定义矛盾. ■ \blacksquare


[例]

分别画出两个边数最大的完全二部图 K 6 . K 7 K_6.K_7 K6.K7.

[解]

设完全二部图的顶点集被分类为: { X , Y } \{X,Y\} {X,Y}.

由完全二部图定义可立即确定最大边数:

E M = max ⁡ { m ( l − m ) } : m ∈ N + , m < l E_M = \max\{m(l-m)\}: m \in \mathbb{N^+}, m<l EM=max{m(lm)}:mN+,m<l.

计算得出: E M ( K 6 ) = 9 , E M ( K 7 ) = 12 E_M(K_6) = 9, E_M(K_7) = 12 EM(K6)=9,EM(K7)=12.

并且可对应绘出图: 其中 ∣ X ∣ = m , ∣ Y ∣ = l − m |X| = m, |Y| = l-m X=m,Y=lm.


G G G 为图, X ⊂ V ( G ) X \subset V(G) XV(G). 定义 ∂ ( X ) \partial(X) (X) 为由所有和 X X X 以及 V ( G ) \ X V(G)\backslash X V(G)\X 中的各一个点关联的边组成的集合.

定理 5.3

当且仅当对于每个非空子集 X ⊂ V ( G ) , ∂ ( X ) ≠ ∅ X \subset V(G), \partial(X) \neq \empty XV(G),(X)=, G G G 为一个连通图.

[证明]

⇒ \Rightarrow

G G G 为一个连通图. 则对图中任意一对顶点 x , y x,y x,y, 总能找到一条路, 以它们为首尾.

X X X V ( G ) V(G) V(G) 的非空真子集. 从 X X X V ( G ) V(G) V(G) 中分别选出 x , y x,y x,y. 则每条从 x x x y y y 的路都有一条边, 这条边的两个顶点分别在 X X X V ( G ) V(G) V(G) 中. 故 ∂ ( X ) ≠ ∅ \partial(X) \neq \empty (X)=.

⇐ \Leftarrow

G G G 不是连通的, 则必存在至少一对顶点 x , y x,y x,y, G G G 中找不到一条连接它们的路.

X X X 为所有可通过某条路通向 x x x 的顶点的集合. 则 X ≠ ∅ , X ˉ ≠ ∅ X\neq \empty, \bar{X} \neq \empty X=,Xˉ=. 此时, 若 ∂ ( X ) ≠ ∅ \partial(X) \neq \empty (X)=, 假设 u v ∈ ∂ ( X ) uv \in \partial(X) uv(X), 设 u ∈ X u \in X uX, 此时可知, 存在一条通路将 x , v x,v x,v 连接, 这和假设矛盾. 故 ∂ ( X ) = ∅ \partial(X) = \empty (X)=, 证毕. ■ \blacksquare

定理 5.4

当且仅当图 G G G 有一棵生成树时, G G G 为连通图.

[证明]

⇒ \Rightarrow

T T T G G G 的生成树. 由定义: T T T 是连通的. 对任一对顶点 x , y x,y x,y, 存在一条 x y − xy- xy路. 这条路显然在 G G G 中.

⇐ \Leftarrow

下面给出从连通图 G G G 中找出生成树 T T T 的算法:

输入 = 连通图 G G G, x ∈ V ( G ) x \in V(G) xV(G)

输出 = V ( T ) , E ( T ) V(T), E(T) V(T),E(T)

Step 0

V ( T ) = { x } , E ( T = ∅ V(T) = \{x\}, E(T = \empty V(T)={x},E(T=, 初始化序列 S S S 仅包含 x x x, 对每个顶点 u u u, 设 P ( u ) = ∅ P(u) = \empty P(u)=.

Step 1

S = ∅ S = \empty S=, 直接输出 V ( T ) , E ( T ) V(T), E(T) V(T),E(T). 否则随机选取 r r r 作为序列 S S S 的开头.

Step 2

N G ( r ) ⊂ V ( T ) N_G(r) \subset V(T) NG(r)V(T), 撤销操作, 跳转至 Step 1. 若不然, 取 y ∈ N G ( r ) \ V ( T ) y \in N_G(r) \backslash V(T) yNG(r)\V(T).

赋值: V ( T ) = V ( T ) ∪ { y } , E ( T ) = E ( T ) ∪ { r y } , P ( y ) = r V(T) = V(T) \cup \{y\}, E(T) = E(T) \cup \{ry\}, P(y) = r V(T)=V(T){y},E(T)=E(T){ry},P(y)=r.

并且将 y y y 连接到序列 S S S 末端.

无限次循环 Step 2 直到程序满足退出条件. 此时即得到所要求的生成树.


下列陈述等价:

  1. G G G 为连通图.
  2. 对每一对顶点 x , y x,y x,y, G G G 中均存在一个 x y − xy- xy路.
  3. 对每一个 V ( G ) V(G) V(G) 的非空真子集, ∂ ( X ) ≠ ∅ \partial(X) \neq \empty (X)=.
  4. G G G 有一棵生成树.

G G G 为一个非连通图, 则 G G G 的每一个最大连通子图都称为 G G G 的一个分支 (component).

显然, G G G 的每一个分支均为 G G G 的一个诱导子图. 若 G G G 是一个连通图, 则其分支就是它自身.


[例]
当且仅当 G G G 的每一个分支均为二部图时, G G G 为一个二部图.

[证明]
利用引理: 二部图的子图均为二部图.

⇐ \Leftarrow
因二部图 G G G 的分支为 G G G 的子图, 由引理: 显见其分支均为二部图.

⇒ \Rightarrow
G 1 G_1 G1 G G G 的其中一个分支, 它是二部图. 设 G \ G 1 = V 1 + G 1 ′ G\backslash G_1 = V_1+ G'_1 G\G1=V1+G1, G 1 ′ G'_1 G1 为所有 G \ G 1 G\backslash G_1 G\G1 中孤立的连通图所组成的集合.
由定义知: G 1 ′ G'_1 G1 中每一个元素均为 G G G 的分支, V 1 V_1 V1 为孤立点集.
由假设知: G G G 所有的分支均为二部图, 且它们不是连通的.
V ( G 1 ) = X 1 ∩ Y 1 , G 1 ′ = { G 1 ′ , G 2 ′ , ⋯   , G k ′ } , V ( G i ′ ) = X i ′ ∩ Y i ,     i = 1 , 2 , ⋯   , k . V(G_1) = X_1\cap Y_1, G'_1 = \{G'_1, G'_2, \cdots,G'_k\}, V(G'_i) = X'_i \cap Y_i,~~~ i= 1,2,\cdots, k. V(G1)=X1Y1,G1={G1,G2,,Gk},V(Gi)=XiYi,   i=1,2,,k. X = X 1 ∩ ( ⋂ i = 1 , 2 , ⋯   , k X i ) ,     Y = Y 1 ∩ V 1 ∩ ( ⋂ i = 1 , 2 , ⋯   , k Y i ) X = X_1\cap (\bigcap_{i = 1,2,\cdots,k}X_i), ~~~ Y = Y_1\cap V_1 \cap (\bigcap_{i = 1,2,\cdots,k}Y_i) X=X1(i=1,2,,kXi),   Y=Y1V1(i=1,2,,kYi) X ∪ Y = V ( G ) . X\cup Y = V(G). XY=V(G). 故找到了这样的顶点子集 X , Y X, Y X,Y, 使得 E ( G ) E(G) E(G) 中任一条边的两个顶点分别位于 X , Y X, Y X,Y 中. 由定义知: G G G 为一个二部图. ■ \blacksquare

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值