CSDN 有字数限制,因此笔记分别发布,目前:
- 【笔记1】概念与计算、树及其算法
- 【笔记2】容量网络模型、遍历性及其算法
- 【笔记3】独立集及其算法
2.概念与计算
2.1 图的定义
2.1.1 定义
图(graph)
G
G
G 是一个有序的三元组,记作
G
=
<
V
(
G
)
,
E
(
G
)
,
ψ
(
G
)
>
G=<V(G),E(G),\psi (G)>
G=<V(G),E(G),ψ(G)>。
V
(
G
)
V(G)
V(G) 是顶点集。
E
(
G
)
E(G)
E(G) 是边集。
ψ
(
G
)
\psi (G)
ψ(G) 是关联函数。例如
ψ
G
(
e
)
=
v
i
v
j
\psi_G (e)=v_iv_j
ψG(e)=vivj。
N
G
(
v
)
N_G(v)
NG(v) 表示点
v
v
v 的一阶邻域点。
相邻:与同一个顶点关联的两条边是相邻的。
环:两个端点重合的边称为环。
连杆:端点不重合的边成为连杆。
k
k
k 重边:连接同一对顶点的
k
k
k 条边。
单边:一对顶点之间只有一条边。
简单图:无环无重边。
2.1.2 度
度:与顶点
v
v
v 关联的边的数目,记作
d
(
v
)
d(v)
d(v)。
度序列:
(
d
(
v
1
)
,
d
(
v
2
)
,
.
.
.
,
d
(
v
v
)
)
(d(v_1),d(v_2),...,d(v_v))
(d(v1),d(v2),...,d(vv))
孤立点:度为
0
0
0。
悬挂点:度为
1
1
1。
悬挂边:与悬挂点相关联的边。
偶点:度为偶数的顶点。
奇点:度为奇数的顶点。
最小度
δ
(
G
)
\delta(G)
δ(G):图
G
G
G 顶点度的最小值。
最大度
Δ
(
G
)
\Delta(G)
Δ(G):图
G
G
G 顶点度的最大值。
握手引理:
∑
v
∈
V
=
2
ε
\sum_{v\in V} = 2 \varepsilon
∑v∈V=2ε。
例题:空间中不存在有奇数个面并且每个面只有奇数个棱的多面体。
思路:将面抽象为点,两面之间的棱为边,则转化成了有奇数个点且每个点都是奇数度的图,与握手引理矛盾,得证。
例题:证明非负整数序列
(
d
1
,
d
2
,
.
.
.
,
d
v
)
(d_1,d_2,...,d_v)
(d1,d2,...,dv) 是某个图的度序列当且仅当
∑
i
=
1
v
d
i
\sum_{i=1}^{v} d_i
∑i=1vdi 是偶数。
思路:先画出
v
v
v 个孤立点,然后选序列中度大于
1
1
1 的点连环直至将每个点仍需添加的度为
0
0
0 或
1
1
1。然后将两两选择度为
1
1
1 的点。能连通即可得证。
图序列:简单图的度序列。
判断是否为图序列:非负整数序列
(
d
1
,
d
2
,
.
.
.
,
d
v
)
(
d
1
≥
d
2
≥
.
.
.
≥
d
v
)
(d_1,d_2,...,d_v)(d_1 \geq d_2 \geq ... \geq d_v)
(d1,d2,...,dv)(d1≥d2≥...≥dv) 是图序列当且仅当
∑
i
=
1
v
d
i
\sum_{i=1}^v d_i
∑i=1vdi 是偶数,并且对一切整数
k
(
1
≤
k
≤
v
−
1
k(1\leq k\leq v-1
k(1≤k≤v−1,有
∑
i
=
1
k
≤
k
(
k
−
1
)
≤
∑
i
=
k
+
1
v
m
i
n
{
k
,
d
i
}
\sum_{i=1}^{k} \leq k(k-1) \leq \sum_{i=k+1}^{v}min \{k,d_i\}
∑i=1k≤k(k−1)≤∑i=k+1vmin{k,di}.
例题:
(
1
,
2
,
2
,
4
,
5
)
;
(
1
,
2
,
3
,
3
,
4
,
5
)
;
(
1
,
2
,
3
,
4
,
4
,
5
)
(1,2,2,4,5);(1,2,3,3,4,5);(1,2,3,4,4,5)
(1,2,2,4,5);(1,2,3,3,4,5);(1,2,3,4,4,5) 三个是否是图序列?
思路:第一个不是图序列,当点数为
5
5
5 时,不存在度为
5
5
5 的简单图。第二个是图序列。 第三个不是图序列,先画出度为
5
5
5 的点的连边,然后只有三个点还能连边,需要的度依次为
2
,
3
,
3
2,3,3
2,3,3,简单图中的三个点不可能连出度为
3
3
3 的连边情况。
2.1.3 同构
同构:若两个图顶点之间建立一一对应的关系,且任意一对顶点的边数对应相同,则称两图是同构的。
2.2 子图和连通分支
2.2.1 子图
子图:设
H
H
H 和
G
G
G 为两个图。若
V
(
H
)
⊆
V
(
G
)
V(H) \subseteq V(G)
V(H)⊆V(G) 且
E
(
H
)
⊆
E
(
G
)
E(H) \subseteq E(G)
E(H)⊆E(G),则
H
H
H 为
G
G
G 的子图。记作
H
⊆
G
H \subseteq G
H⊆G。
相等:设
H
H
H 和
G
G
G 为两个图。若
V
(
H
)
=
V
(
G
)
V(H) = V(G)
V(H)=V(G) 且
E
(
H
)
=
E
(
G
)
E(H) = E(G)
E(H)=E(G),则
H
H
H 为
G
G
G 相等。记作
H
=
G
H = G
H=G。
真子图:若
H
⊆
G
H \subseteq G
H⊆G 且
H
≠
G
H \neq G
H=G,则称
H
H
H 是
G
G
G 的真子图,记作
H
⊂
G
H \subset G
H⊂G。
支撑(生成)子图:若
V
(
H
)
=
V
(
G
)
V(H) = V(G)
V(H)=V(G) 且
E
(
H
)
⊆
E
(
G
)
E(H) \subseteq E(G)
E(H)⊆E(G),则称
H
H
H 是
G
G
G 的支撑子图或生成子图。
基础简单图:对图
G
G
G 去除重边和环后的图
H
H
H。
2.2.2 导出子图
导出子图:设 V ′ V' V′ 是 V ( G ) V(G) V(G) 的非空子集,以 V ′ V' V′ 为顶点集,以 E ′ = u v ∈ E ( G ) ∣ u , v ∈ V ′ E'= {uv \in E(G) | u,v \in V'} E′=uv∈E(G)∣u,v∈V′ 为边集的 G G G 的子图称为 G 的由 V ′ V' V′ 导出的子图,记作 G [ V ′ ] G[V'] G[V′],简称为 G G G 的导出子图。
2.2.3 连通分支
途径的起点/终点/长度/逆转/衔接/节: W = v o e 1 v 1 e 2 . . . e k v k W=v_oe_1v_1e_2...e_kv_k W=voe1v1e2...ekvk,这里 v i ∈ V ( 0 ≤ i ≤ k ) , e j = v j − 1 v j ∈ E ( 1 ≤ j ≤ k ) v_i\in V(0\leq i \leq k),e_j=v_{j-1}v_j \in E(1 \leq j \leq k) vi∈V(0≤i≤k),ej=vj−1vj∈E(1≤j≤k), v 0 v_0 v0 称为 W W W 的起点, v k v_k vk 称为 W W W 的终点,之间的 v v v 称为 W W W 的内部点。 W W W 称为 G G G 的 ( v 0 , v k ) (v_0,v_k) (v0,vk) 途径。 k k k 为 W W W 的长度。逆转如字面意思。衔接意味对于两个不同的 W W W,其中一条 W W W 的终点为另一个 W W W 的起点,则两条 W W W 可以衔接。节是 W W W 序列中的子集。
迹:途径
w
w
w 的边互不相同,则称
W
W
W 为迹。若起点终点相同,则
W
W
W 为闭迹。
链:途径
w
w
w 的顶点互不相同,则称
W
W
W 为链。一个顶点也称为一条链。
圈:起点、内部点互不相同的闭迹称为圈,长为
k
k
k 的圈称为
k
k
k 圈。根据
k
k
k 的奇偶性,相应地称
k
k
k 圈为奇圈和偶圈。
连通:若图
G
G
G 中存在
(
u
,
v
)
(u,v)
(u,v) 链,则顶点
u
u
u 和
v
v
v 在图
G
G
G 中是连通的。
连通分支(数):
V
V
V 的非空划分
(
V
1
,
V
2
.
.
.
,
V
ω
)
(V_1,V_2...,V_\omega)
(V1,V2...,Vω),导出子图
G
[
V
1
]
,
G
[
V
2
]
,
.
.
.
,
G
[
V
ω
]
G[V_1],G[V_2],...,G[V_\omega]
G[V1],G[V2],...,G[Vω] 称为
G
G
G 的连通分支。
ω
(
G
)
\omega(G)
ω(G) 为图
G
G
G 的连通分支数。
2.2.4 距离
距离:图
G
G
G 中所有
(
u
,
v
)
(u,v)
(u,v) 链的最短链,记为
d
(
u
,
v
)
d(u,v)
d(u,v),被称之为
u
,
v
u,v
u,v 之间的距离。
例题:设
G
G
G 是连通图,且
G
G
G 中至少有一对顶点不相邻,证明存在
u
,
v
,
w
∈
V
u,v,w \in V
u,v,w∈V,使
u
v
,
v
w
∈
E
uv,vw \in E
uv,vw∈E,但
u
w
∉
E
uw \notin E
uw∈/E。
思路:设
x
,
y
∈
V
x,y \in V
x,y∈V 且
x
y
∉
E
xy \notin E
xy∈/E。因
G
G
G 连通,故
G
G
G 中存在最短
(
x
,
y
)
(x,y)
(x,y) 链
P
=
x
v
1
v
2
.
.
.
y
P=xv_1v_2...y
P=xv1v2...y。
由
P
P
P 的最短性可知
x
v
2
∉
E
xv_2 \notin E
xv2∈/E,于是令
u
=
x
,
v
=
v
1
,
w
=
v
2
u=x,v=v_1,w=v_2
u=x,v=v1,w=v2,则有
u
v
∈
E
,
v
w
∈
E
uv \in E,vw \in E
uv∈E,vw∈E 但
u
w
∉
E
uw \notin E
uw∈/E。
2.3 重要图类
2.3.1 完全图
完全图:含有
C
n
2
C_{n}^{2}
Cn2 条边,且每对顶点都相邻的简单图,记作
K
n
K_n
Kn。
空图:边集为空的图。
平凡图:图中只有一个顶点。
非平凡图:除了平凡图以外的图。
例题:在任意
6
6
6 个人聚会上,要么有
3
3
3 个人相互认识,要么有
3
3
3 个人相互不认识。
思路:先构造
6
6
6 阶完全图
K
6
K_6
K6,其中
V
=
v
1
,
v
2
,
.
.
.
,
v
6
V = {v_1,v_2,...,v_6}
V=v1,v2,...,v6。
v
i
v_i
vi 代表第
i
i
i 个人。
若
v
i
v_i
vi 与
v
j
v_j
vj 互相认识,则染这条边为红色边,否则为蓝色边。于是问题转成了图中必定存在同色三角形问题。因此得证。
2.3.2 正则图
正则图/k正则图:每个顶点的度都相等(都为
k
k
k)的图称为(
k
k
k)正则图。一般指的是简单图。
例题:对于任意的正整数
n
n
n,
n
k
nk
nk 为偶数,当
n
≥
k
+
1
n \geq k + 1
n≥k+1,
n
n
n 阶
k
k
k 正则图存在吗?
思路:
γ
1
\gamma_1
γ1 法则:构造偶数正则图法则。
设
G
G
G 是
v
v
v 阶
k
k
k 正则图,且
k
=
2
m
k=2m
k=2m,
m
≥
1
m \geq 1
m≥1,按以下步骤生成新图
G
′
G'
G′:
step 1:在图
G
G
G 中任取
m
m
m 条互不相邻的边:
v
1
v
2
,
v
3
v
4
,
.
.
.
,
v
2
m
−
1
v
2
m
v_1v_2,v_3v_4,...,v_{2m-1}v_{2m}
v1v2,v3v4,...,v2m−1v2m 并删除。
step 2:增加新的顶点
v
v
v,并向所有被删边的点增加一条新边
v
v
i
(
i
=
1
,
2
,
.
.
.
,
2
m
)
vv_i(i=1,2,...,2m)
vvi(i=1,2,...,2m),得到新图
G
′
G'
G′。
γ
2
\gamma_2
γ2 法则:构造奇数正则图法则。
设
G
G
G 是
v
v
v 阶
k
k
k 正则图,且
k
=
2
m
+
1
k=2m+1
k=2m+1,
m
≥
1
m \geq 1
m≥1,按以下步骤生成新图
G
′
G'
G′:
step 1:在图
G
G
G 中任取
m
m
m 条互不相邻的边:
v
1
v
2
,
v
3
v
4
,
.
.
.
,
v
2
m
−
1
v
2
m
v_1v_2,v_3v_4,...,v_{2m-1}v_{2m}
v1v2,v3v4,...,v2m−1v2m 并删除。
step 2:再在图
G
G
G 中任取
m
m
m 条互不相邻的边:
u
1
u
2
,
u
3
u
4
,
.
.
.
,
u
2
m
−
1
u
2
m
u_1u_2,u_3u_4,...,u_{2m-1}u_{2m}
u1u2,u3u4,...,u2m−1u2m 并删除。
(step 1 和 step 2 中可能会出现重复点)
step 3:增加新的顶点
w
1
w_1
w1,并向 step 1 中所有被删边的点增加一条新边
w
1
v
i
(
i
=
1
,
2
,
.
.
.
,
2
m
)
w_1v_i(i=1,2,...,2m)
w1vi(i=1,2,...,2m)。
step 4:再增加新的顶点
w
2
w_2
w2,并向 step 2 中所有被删边的点增加一条新边
w
2
u
i
(
i
=
1
,
2
,
.
.
.
,
2
m
)
w_2u_i(i=1,2,...,2m)
w2ui(i=1,2,...,2m)。
step 5:加边
w
1
w
2
w_1w_2
w1w2,得新图
G
′
G'
G′。
定理:
n
n
n 阶
k
k
k 正则简单图存在的充要条件是
k
≤
n
−
1
k \leq n-1
k≤n−1 且
n
k
nk
nk 为偶数。
证明:设
G
G
G 是
n
n
n 阶
k
k
k 正则简单图,每个顶点最多与其他
n
−
1
n-1
n−1 个顶点相邻,因此
k
≤
n
−
1
k \leq n-1
k≤n−1 成立。
设
k
=
2
m
k=2m
k=2m,取
G
=
K
k
+
1
G=K_{k+1}
G=Kk+1,则
G
G
G 为
k
k
k 正则图。根据
γ
1
\gamma_1
γ1 法则,顶点每次可以增加
1
1
1 而点的度数不变。因此可以得到
n
n
n 阶
k
k
k 正则图。
2.3.3 二部图
(完全)二部图:若顶点集可以划分为两个子集 X X X 和 Y Y Y,使得 G G G 中每条边的一端点在 X X X 中,另一个端点在 Y Y Y 中,则称 G G G 图为二部图。二部图 G G G 记作 G = ( X , Y , E ) G=(X,Y,E) G=(X,Y,E)。若集合 X X X 中的每个点都与 Y Y Y 中所有点都恰好有一条边,且 X 、 Y X、Y X、Y 均不为空集,则该图记作完全二部图,记作 K m , n K_{m,n} Km,n。
定理:图
G
G
G 的二部图,当且仅当
G
G
G 中不含奇圈。
证明:
step 1:
设
G
=
(
X
,
Y
,
E
)
G=(X,Y,E)
G=(X,Y,E) 是二部图,
C
=
(
v
0
v
1
.
.
.
v
k
v
0
)
C=(v_0v_1...v_kv_0)
C=(v0v1...vkv0) 是
G
G
G 中的一个圈,长度为
k
+
1
k+1
k+1。
设
v
0
∈
X
v_0 \in X
v0∈X,于是后面节点依次属于
Y
Y
Y 和
X
X
X。因此得到
v
2
i
∈
X
,
v
2
i
+
1
∈
Y
v_{2i} \in X,v_{2i+1} \in Y
v2i∈X,v2i+1∈Y。
因此
k
=
2
l
+
1
k=2l+1
k=2l+1。该圈为偶圈。
step 2:
设
G
G
G 连通(若不连通则取一个连通分支证明之)。在
G
G
G 中任取一个顶点
u
u
u,令
X
=
{
x
∣
d
(
u
,
x
)
为偶数
}
X=\{x|d(u,x)为偶数\}
X={x∣d(u,x)为偶数},
Y
=
{
y
∣
d
(
u
,
y
)
为奇数
}
Y=\{y|d(u,y)为奇数\}
Y={y∣d(u,y)为奇数}。显然
X
、
Y
X、Y
X、Y 是图
G
G
G 的一个划分。
为了证明
G
G
G 是二部图,只需证明
X
X
X 或
Y
Y
Y 中任何两个顶点都不相邻。
设
v
,
w
v,w
v,w 是
X
X
X 中任意两个顶点,令
P
P
P 是
G
G
G 中最短
(
u
,
v
)
(u,v)
(u,v) 链,Q 是
G
G
G 中最短
(
u
,
w
)
(u, w)
(u,w) 链。
设
P
P
P 与
Q
Q
Q 的最后一个公共顶点是
u
1
u_1
u1。因为
P
P
P 和
Q
Q
Q 都是最短链,因此
P
P
P 的
(
u
,
u
1
)
(u,u_1)
(u,u1) 节和
Q
Q
Q 的
(
u
,
u
1
)
(u,u_1)
(u,u1) 节都是最短
(
u
,
u
1
)
(u,u_1)
(u,u1) 链,从而长度相等。如下图:
又因
P
P
P 和
Q
Q
Q 的长度都为偶数,故
P
P
P 的
(
u
1
,
v
)
(u_1,v)
(u1,v) 节
P
1
P_1
P1 和
Q
Q
Q 的
(
u
1
,
w
)
(u_1,w)
(u1,w) 节
Q
1
Q_1
Q1 有相同奇偶性,于是
(
v
,
w
)
(v,w)
(v,w) 链
P
1
−
1
Q
1
P_1^{-1}Q_1
P1−1Q1 的长是偶数。因此若
v
v
v 与
w
w
w 相邻,则
P
1
−
1
Q
1
w
v
P_1^{-1}Q_1wv
P1−1Q1wv 就是
G
G
G 中的一个奇圈,与假设矛盾。
2.4 有向图
2.4.1 定义
有向图:有向图 D D D 指一个有序三元组 ( V ( D ) , A ( D ) , ψ D ) (V(D),A(D),\psi_D) (V(D),A(D),ψD),其中 V ( D ) ≠ ∅ V(D) \neq \varnothing V(D)=∅, V ( D ) ∩ A ( D ) = ∅ V(D) \cap A(D) = \varnothing V(D)∩A(D)=∅。 V ( D ) V(D) V(D) 是顶点集。 A ( D ) A(D) A(D) 是弧集。 ψ D \psi_D ψD 称为 D D D 的关联函数,使得 D D D 每条弧对应于 D D D 的有序定点对。 ψ D ( a ) = ( u , v ) \psi_D(a)=(u,v) ψD(a)=(u,v) 中 u u u 是弧 a a a 的尾, v v v 称为 a a a 的头。
2.4.2 基础图
基础图:在有向图中去掉弧上箭头的图。
定向图:对图
G
G
G 的每条边规定方向后的图。
相邻、连通、圈、子图 的概念和含义不变。
2.4.3 出度和入度
入弧:有向图
D
D
D 中以顶点
v
v
v 为头的弧。
出弧:有向图
D
D
D 中以顶点
v
v
v 为尾的弧。
入度:记作
d
D
−
(
v
)
d_D^-(v)
dD−(v),称为
v
v
v 的入度。
出度:记作
d
D
+
(
v
)
d_D^+(v)
dD+(v),称为
v
v
v 的出度。
对于任何有向图D,有:
∑
v
∈
V
d
D
−
(
v
)
=
∑
v
∈
V
d
D
+
(
v
)
=
ε
(
D
)
\sum_{v \in V}d_D^-(v) = \sum_{v \in V}d_D^+(v) = \varepsilon(D)
∑v∈VdD−(v)=∑v∈VdD+(v)=ε(D)
2.4.4 回路
有向途径:
W
=
v
0
a
1
v
1
a
2
.
.
.
v
k
−
1
a
k
v
k
W=v_0a_1v_1a_2...v_{k-1}a_kv_k
W=v0a1v1a2...vk−1akvk,其中交替项为顶点和弧。那么
W
W
W 就是有向途径。
v
0
v_0
v0 称为
W
W
W 的起点,
v
k
v_k
vk 称为
W
W
W 的终点。
k
k
k 称为
W
W
W 的长。
W
W
W 称为有向
(
v
0
,
v
k
)
(v_0,v_k)
(v0,vk) 途径。
有向闭途径:起点与终点相同的有向途径。
有向迹:弧各不相同的有向途径。
有向链(路):顶点各不相同的有向途径。
2.4.5 强连通分支
强连通:
u
,
v
u,v
u,v 是有向图
D
D
D 中的两个顶点,若存在
(
u
,
v
)
(u,v)
(u,v) 路和
(
v
,
u
)
(v,u)
(v,u) 路使得两点可以相互到达,则称
u
u
u 和
v
v
v 在图
D
D
D 中是强连通的。
强连通分支/强连通有向图:
V
(
D
)
V(D)
V(D) 的非空划分
V
1
V
2
.
.
.
V
ω
V_1V_2...V_\omega
V1V2...Vω 在
D
D
D 中所导出的子图
D
[
V
1
]
,
D
[
V
2
]
,
.
.
.
,
D
[
D
ω
]
D[V_1],D[V_2],...,D[D_\omega]
D[V1],D[V2],...,D[Dω] 称为
D
D
D 的强连通分支。若
D
D
D 中只有一个强连通分支,则
D
D
D 是强连通有向图。
2.5 网络
2.5.1 无向网络和有向网络
无向(有向)网络:对图中每一条边都对应于一个实数
w
(
e
)
w(e)
w(e),我们把
w
(
e
)
w(e)
w(e) 称为边
e
e
e 的边权,这样的图称为无向(有向)网络。
非负权/正权网络:网络中每条边的边权均为非负数/正数的网络。
最短路:在网络所有
(
v
i
,
v
j
)
(v_i,v_j)
(vi,vj) 路中,权最小的
(
v
i
,
v
j
)
(v_i,v_j)
(vi,vj) 路称为最短路。
2.6 矩阵表示
2.6.1 邻接矩阵
邻接矩阵:
A
(
G
)
=
(
a
i
j
)
A(G)=(a_{ij})
A(G)=(aij) 是一个
v
×
v
v \times v
v×v 矩阵,
a
i
,
j
a_{i,j}
ai,j 等于第
i
i
i 个顶点与第
j
j
j 个顶点的边数。
性质:
- A T ( G ) = A ( G ) A^T(G)=A(G) AT(G)=A(G)。
- 第 i i i 个顶点的度等于 2 a i i + ∑ j ≠ i a i j 2a_{ii} + \sum_{j \neq i}a_{ij} 2aii+∑j=iaij。
- 邻接矩阵在顶点标号合适的情况下可以写成对角形式。
定理:
A
r
(
G
)
A^r(G)
Ar(G) 中的第
i
i
i 行第
j
j
j 列的元素等于
G
G
G 中第
i
i
i 个顶点与第
j
j
j 个顶点的长度为
r
r
r 的不同途径的数目。
有向图的表示、性质、定理类比上面内容。
2.6.2 Laplace矩阵
Laplace矩阵:设
G
G
G 为非空无环图,
A
(
G
)
A(G)
A(G) 为图
G
G
G 的邻接矩阵,对角矩阵
D
(
G
)
D(G)
D(G) 的主对角线上元素为对应顶点的度,则称
D
(
G
)
−
A
(
G
)
D(G)-A(G)
D(G)−A(G) 为图
G
G
G 的 Laplace 矩阵,记作
L
(
G
)
L(G)
L(G)。
性质:
- Laplace矩阵每行元素的和为 0 0 0。
- 矩阵的 0 0 0 特征值重数是图的连通分支个数 ω \omega ω。
2.6.3 关联矩阵
关联矩阵:
M
(
G
)
=
(
m
i
j
)
M(G)=(m_{ij})
M(G)=(mij) 是一个
v
×
ε
v \times \varepsilon
v×ε 矩阵,其中若第
i
i
i 个顶点与第
j
j
j 条边关联,则为
1
1
1,否则为
0
0
0。
性质:
- 关联矩阵每行元素的和对应顶点的度。
- 关联矩阵每列恰好包含两个 1 1 1。
若是有向图,则第 i i i 个顶点为第 j j j 条弧的尾是 1 1 1,是头则为 − 1 -1 −1。
2.7 运算
2.7.1 删去和添加
删去:删边或删点。
- 设 F F F 是 E ( G ) E(G) E(G) 的非空子集, G − F G-F G−F 表示从 G G G 中删去 F F F 中一切边后得到的图。若 F = e F={e} F=e,则 G − e G-{e} G−e 记作 G − e G-e G−e。得到的新图必定是 G G G 的支撑子图。
- 设 S S S 是 V ( G ) V(G) V(G) 的非空真子集,则 G − S G-S G−S 表示从 G G G 中删去 S S S 的所有顶点及其 S S S 中顶点关联的一切边后得到的图。同样 G − V G-{V} G−V 简记为 G − v G-v G−v。显然 G − S = G [ V 反斜杠 S ] G-S=G[V 反斜杠 S] G−S=G[V反斜杠S]。
添加:加边或加点。
- 在图 G G G 中添加一条以顶点 u u u 和 v v v 为端点的边 e e e,得到的图记为 G + e G+e G+e。类似添加边集 E ′ E' E′ 为 G + E ′ G+E' G+E′。
- 在图 G G G 中添加一个新的顶点 u u u,得到的图记作 G + u G+u G+u。类似添加顶点集 V ′ V' V′ 为 G + V ′ G+V' G+V′。
2.7.2 交和并
不交:两图点集无交集。
边不交:两图边集无交集。
并图:
G
1
∪
G
2
G_1 \cup G_2
G1∪G2,若两图不交,也记作
G
1
+
G
2
G_1+G_2
G1+G2。
交图:
G
1
∩
G
2
G_1 \cap G_2
G1∩G2。
2.7.3 收缩和剖分
收缩:设
e
=
u
v
e=uv
e=uv 是图
G
G
G 的一条连杆,去掉
e
e
e,把顶点
u
v
u v
uv 合并为一个新的顶点。图
G
G
G 中一切与
u
v
uv
uv 相连的边都改为与新顶点关联,其他顶点和边不变。图记作
G
⋅
e
G·e
G⋅e。
剖分:指去掉边
e
e
e,用一条连接
e
e
e 的两个端点的长为
2
2
2 的链代替。
2.7.4 笛卡尔积
笛卡尔积:
G
1
、
G
2
G_1、G_2
G1、G2 的笛卡尔积,记作
G
1
×
G
2
G_1 \times G_2
G1×G2。顶点集为
V
1
×
V
2
V_1 \times V_2
V1×V2。新图两个顶点相连当且仅当
(
v
1
i
,
v
2
j
)
(v_{1i},v_{2j})
(v1i,v2j) 和
(
v
1
k
,
v
2
l
)
(v_{1k},v_{2l})
(v1k,v2l) 中的
v
1
i
=
v
1
k
v_{1i}=v_{1k}
v1i=v1k 且
v
2
j
v
2
l
∈
E
2
v_{2j}v_{2l} \in E_2
v2jv2l∈E2。
笛卡尔积可以构造立体图(升维)。
3 树及其算法
3.1 树和森林
3.1.1 树的基本概念
树:连通且不含圈的图,常用
T
T
T 来表示。
森林:不含圈的图称为无圈图,也称为森林。
3.1.2 破圈法和避圈法
支撑树:图
G
G
G 的支撑子图。
定理:图
G
G
G 有支撑树当且仅当
G
G
G 连通。
破圈法和避圈法是化图为树的方法。
3.1.3 六个等价命题
定理:设 T T T 是 v v v 阶图,下列命题等价:
- T T T 是树。
- T T T 是无环图,且 T T T 的任何两个顶点间有唯一一条链。
- T T T 是无圈图,且有 v − 1 v-1 v−1 条边。
- T T T 是连通图,且有 v − 1 v-1 v−1 条边。
- T T T 是连通图,但 ∀ e ∈ E ( T ) \forall e \in E(T) ∀e∈E(T), T − e T-e T−e 是非连通图。
- T T T 是连通图,但添加任何一条边后得到的图中都含有唯一的圈。
证明:
-
1
−
>
2
:
1->2:
1−>2:
T
T
T 是树 推导
T
T
T 是无环图,且
T
T
T 的任何两个顶点间有唯一一条链。
设 T T T 是树,显然 T T T 中无环。假设 T T T 中存在两条不同的 ( v 1 , v 2 ) (v_1,v_2) (v1,v2) 链 P 1 , P 2 P_1,P_2 P1,P2,则有边 e = x y ∈ E ( P 1 ) 且 ∉ E ( P 2 ) e=xy \in E(P_1)且\notin E(P_2) e=xy∈E(P1)且∈/E(P2)。
设 P 1 P_1 P1 上的 ( v 1 , x ) (v_1,x) (v1,x) 节与 P 2 P_2 P2 的最后一个公共顶点为点 u u u, P 1 P_1 P1 上的 ( y , v 2 ) (y,v_2) (y,v2) 节与 P 2 P_2 P2 的第一个公共顶点为 w w w
P 1 P_1 P1 的 ( u , w ) (u,w) (u,w) 节 Q 1 Q_1 Q1 与 P 2 P_2 P2 的 ( u , w ) (u,w) (u,w) 节 Q 2 Q_2 Q2 无公共内部点,从而 Q 1 Q 2 − 1 Q_1Q_2^{-1} Q1Q2−1 是 T T T 的一个圈。
-
2
−
>
3
:
2->3:
2−>3:
T
T
T 是无环图,且
T
T
T 的任何两个顶点间有唯一一条链 推导
T
T
T 是无圈图,且有
v
−
1
v-1
v−1 条边
设 T T T 满足 2 2 2,则 T T T 是无圈图。下面对 T T T 的阶数 v v v 用归纳法证明 ε ( T ) = v − 1 \varepsilon(T)=v-1 ε(T)=v−1。
当 v = 1 v=1 v=1 时, T T T 是空图,结论成立。
当 v < k v<k v<k 时结论成立。
现设 v = k ≥ 2 v=k\geq 2 v=k≥2 时, v 1 v 2 ∈ E ( T ) v_1v_2 \in E(T) v1v2∈E(T),则 T − v 1 v 2 T-v_1v_2 T−v1v2 中不含 ( v 1 , v 2 ) (v_1,v_2) (v1,v2) 链,从而 T − v 1 v 2 T-v_1v_2 T−v1v2 是非连通图,则含有两个连通分支 T 1 T_1 T1 和 T 2 T_2 T2。
因为 T T T 是无圈图,所以 T 1 , T 2 T_1,T_2 T1,T2 也都是无圈图,都是树,因此 T 1 , T 2 T_1,T_2 T1,T2 都满足 2 2 2。
由归纳假设 ε ( T i ) = v ( T i ) − 1 ( i = 1 , 2 ) \varepsilon(T_i) = v(T_i)-1(i=1,2) ε(Ti)=v(Ti)−1(i=1,2)。
于是有 ε ( T ) = ε ( T 1 ) + ε ( T 2 ) + 1 = v ( T 1 ) + v ( T 2 ) − 1 = v ( T ) − 1 \varepsilon(T)=\varepsilon(T_1)+\varepsilon(T_2)+1=v(T_1)+v(T_2)-1=v(T)-1 ε(T)=ε(T1)+ε(T2)+1=v(T1)+v(T2)−1=v(T)−1。
因此成立。 -
3
−
>
4
:
3->4:
3−>4:
T
T
T 是无圈图,且有
v
−
1
v-1
v−1 条边 推导
T
T
T 是连通图,且有
v
−
1
v-1
v−1 条边
设 T T T 满足 3 3 3,则只需证明 T T T 连通。
(反证法)假设 T T T 的连通分支为 T 1 , T 2 , . . . , T k , k ≥ 2 T_1,T_2,...,T_k,k \geq 2 T1,T2,...,Tk,k≥2,易见 T i ( i = 1 , 2 , . . , k ) T_i(i=1,2,..,k) Ti(i=1,2,..,k) 为树。
由一直 ε ( T i ) = v ( T i ) − 1 ( i = 1 , 2 , . . . , k ) \varepsilon(T_i)=v(T_i)-1(i=1,2,...,k) ε(Ti)=v(Ti)−1(i=1,2,...,k),因此 ε ( T ) = ∑ i = 1 k ε ( T i ) = ∑ i = 1 k ( v ( T i ) − 1 ) = v ( T ) − k < v ( T ) − 1 \varepsilon(T)=\sum_{i=1}^{k}\varepsilon(T_i)=\sum_{i=1}^{k}(v(T_i) - 1)=v(T)-k<v(T)-1 ε(T)=∑i=1kε(Ti)=∑i=1k(v(Ti)−1)=v(T)−k<v(T)−1。这与 ε ( T ) = v ( T ) − 1 \varepsilon(T)=v(T)-1 ε(T)=v(T)−1 相矛盾。 -
4
−
>
5
:
4->5:
4−>5:
T
T
T 是连通图,且有
v
−
1
v-1
v−1 条边 推导
T
T
T 是连通图,但
∀
e
∈
E
(
T
)
\forall e \in E(T)
∀e∈E(T),
T
−
e
T-e
T−e 是非连通图。
设 T T T 满足 4 4 4,只需证明 ∀ e ∈ E ( T ) , T − e \forall e \in E(T),T-e ∀e∈E(T),T−e 是非连通图。
假若 T − e T-e T−e 连通:
当 T − e T-e T−e 不含圈时, T − e T-e T−e 是树,此时 ε ( T − e ) = v ( T − e ) − 1 \varepsilon(T-e)=v(T-e)-1 ε(T−e)=v(T−e)−1
当 T − e T-e T−e 含圈时,由破圈法可知, ε ( T − e ) > v ( T − e ) − 1 \varepsilon(T-e)>v(T-e)-1 ε(T−e)>v(T−e)−1
因此总有 ε ( T ) = ε ( T − e ) + 1 ≥ v ( T − e ) = v ( T ) \varepsilon(T)=\varepsilon(T-e)+1\geq v(T-e)=v(T) ε(T)=ε(T−e)+1≥v(T−e)=v(T),此与 ε ( T ) = v ( T ) − 1 \varepsilon(T)=v(T)-1 ε(T)=v(T)−1 矛盾。 -
5
−
>
6
:
5->6:
5−>6:
T
T
T 是连通图,但
∀
e
∈
E
(
T
)
\forall e \in E(T)
∀e∈E(T),
T
−
e
T-e
T−e 是非连通图 推导
T
T
T 是连通图,但添加任何一条边后得到的图中都含有唯一的圈
设 T T T 满足 5 5 5,则 T T T 是无圈图,则是树。
假若添加新边 e = x y , T + x y e=xy,T+xy e=xy,T+xy 不含圈,则 T + x y T+xy T+xy 是树,于是 ε ( T + x y ) = v ( T + x y ) − 1 = v ( T ) − 1 \varepsilon(T+xy)=v(T+xy)-1=v(T)-1 ε(T+xy)=v(T+xy)−1=v(T)−1,故 ε ( T ) = ε ( T + x y ) − 1 = v ( T ) − 2 \varepsilon(T)=\varepsilon(T+xy)-1=v(T)-2 ε(T)=ε(T+xy)−1=v(T)−2,这与树矛盾,所以 T + x y T+xy T+xy 含有圈。
因 T T T 中不含圈,故 T + e T+e T+e 中任何圈 C C C 都必含有边 e e e,则 C − e C-e C−e 是 T T T 中的 ( x , y ) (x,y) (x,y) 链。
又由 2 2 2 知 T T T 只有一条 ( x , y ) (x,y) (x,y) 链,因此圈 C C C 唯一。 -
6
−
>
1
:
6->1:
6−>1:
T
T
T 是连通图,但添加任何一条边后得到的图中都含有唯一的圈 推导
T
T
T 是树
设 T T T 满足 6 6 6,只需证明 T T T 连通。
假若 T T T 是非连通图,任取两个连通分支 T 1 T_1 T1 和 T 2 T_2 T2,设 v i ∈ V ( T i ) , i = 1 , 2 v_i \in V(T_i),i=1,2 vi∈V(Ti),i=1,2,则 T + v 1 v 2 T+v_1v_2 T+v1v2 不含圈,这与 6 6 6 矛盾。因此得证。
推论:若树
T
T
T 的阶数
v
≥
2
v \geq 2
v≥2,则
T
T
T 至少含有两个悬挂点。
证明:假设
T
T
T 至多有一个悬挂点。因为
v
≥
2
v \geq 2
v≥2,所以
T
T
T 中每个顶点的度都不为
0
0
0.
所以
∑
v
∈
V
(
T
)
d
(
v
)
≥
1
+
2
(
v
(
T
)
−
1
)
=
2
v
(
T
)
−
1
\sum_{v \in V(T)}d(v)\geq 1+2(v(T)-1)=2v(T)-1
∑v∈V(T)d(v)≥1+2(v(T)−1)=2v(T)−1,而由握手引理知
∑
v
∈
V
(
T
)
d
(
v
)
=
2
ε
(
T
)
=
2
v
(
T
)
−
2
\sum_{v \in V(T)} d(v) = 2\varepsilon(T)=2v(T)-2
∑v∈V(T)d(v)=2ε(T)=2v(T)−2,因此矛盾。
推论:设
G
G
G 有
v
v
v 个顶点,
ε
\varepsilon
ε 条边,
ω
\omega
ω 个连通分支,则
G
G
G 是森林当且仅当
ε
=
v
−
ω
\varepsilon=v-\omega
ε=v−ω。
证明:假若
G
G
G 不是森林,则
G
G
G 中含有圈,至少
G
G
G 中存在一个连通分支含有圈,于是根据上边
4
−
>
5
4->5
4−>5 的证明,对于任何含圈的连通分支
G
i
G_i
Gi,都有
ε
(
G
i
)
>
v
(
G
i
)
−
1
\varepsilon(G_i) > v(G_i) - 1
ε(Gi)>v(Gi)−1。因此
ε
=
∑
k
=
1
ω
ε
(
G
k
)
>
∑
k
=
1
ω
(
v
(
G
k
)
−
1
)
=
v
−
ω
\varepsilon=\sum_{k=1}^\omega\varepsilon(G_k)>\sum_{k=1}^\omega(v(G_k)-1)=v-\omega
ε=∑k=1ωε(Gk)>∑k=1ω(v(Gk)−1)=v−ω,因此矛盾。
3.2 支撑树的计数
3.2.1 递推公式
定理:设
e
e
e 是
G
G
G 的连杆,则
τ
(
G
)
=
τ
(
G
−
e
)
+
τ
(
G
⋅
e
)
\tau(G)=\tau(G-e)+\tau(G·e)
τ(G)=τ(G−e)+τ(G⋅e)。
证明:把
G
G
G 的支撑树分为两类:第一类含有边
e
e
e,第二类不含边
e
e
e。显然,第二类支撑树计数
τ
(
G
−
e
)
\tau(G-e)
τ(G−e)。
设
T
T
T 是第一类支撑树,注意到
T
⋅
e
T·e
T⋅e 仍然是树,是
G
⋅
e
G·e
G⋅e 的支撑树。只要把
e
e
e 收缩得到的顶点用
v
1
e
v
2
v_1ev_2
v1ev2 代替,即可得到含边
e
e
e 的支撑树,从而和
τ
(
G
−
e
)
\tau(G-e)
τ(G−e) 对应上。
3.2.3 矩阵-树定理
设 G G G 为非空无环连通图,则 τ ( G ) = ∣ L i ( G ) ∣ \tau(G)=|L_i(G)| τ(G)=∣Li(G)∣,其中 L i ( G ) L_i(G) Li(G) 表示删去 Laplace 矩阵第 i i i 行和第 i i i 列得到的矩阵。
3.3 树上顶点和边的性质
3.3.1 割边
割边: 图
G
G
G 中使
ω
(
G
−
e
)
>
ω
(
G
)
\omega(G-e) > \omega(G)
ω(G−e)>ω(G) 的边
e
e
e。
引理:
∀
e
∈
E
(
g
)
\forall e \in E(g)
∀e∈E(g),有
ω
(
G
)
≤
ω
(
G
−
e
)
≤
ω
(
G
)
+
1
\omega(G) \leq \omega(G-e) \leq \omega(G) + 1
ω(G)≤ω(G−e)≤ω(G)+1
定理:
e
∈
E
(
g
)
e \in E(g)
e∈E(g) 是图
G
G
G 的割边,当且仅当
e
e
e 不在
G
G
G 的任何圈上。
证明:
- 设
e
e
e 是
G
G
G 的割边,则
ω
(
G
−
e
)
>
ω
(
G
)
\omega(G-e)>\omega(G)
ω(G−e)>ω(G),从而存在
G
G
G 的两个顶点
u
,
v
u,v
u,v 在
G
G
G 中连通而在
G
−
e
G-e
G−e 中不连通。因此
G
G
G 中必有一条
(
u
,
v
)
(u,v)
(u,v) 链
P
P
P 经过
e
e
e。
设 e = x y e=xy e=xy,并且在 P P P 上 x x x 位于 y y y 之前,记 P P P 的 ( u , x ) (u,x) (u,x) 节为 P 1 P_1 P1, P P P 的 ( y , v ) (y,v) (y,v) 节为 P 2 P_2 P2。若 e e e 在 G G G 的某个圈 C C C 上,则 C − e C-e C−e 是 G − e G-e G−e 中的 ( x , y ) (x,y) (x,y) 链 Q Q Q,从而 P 1 Q P 2 P_1QP_2 P1QP2 是 G − e G-e G−e 中一条 ( u , v ) (u,v) (u,v) 途径,于是 u , v u,v u,v 在 G − e G-e G−e 中连通,矛盾。 - 假设 e = x y e=xy e=xy 不是 G G G 的割边,则由引理知 ω ( G ) = ω ( G − e ) \omega(G)=\omega(G-e) ω(G)=ω(G−e)。因为边 x y xy xy 是 G G G 的一条 ( x , y ) (x,y) (x,y) 链,因此 x , y x,y x,y 在 G G G 的同一连通分支中,故也在 G − e G-e G−e 的连通分支中,即 ( x , y ) (x,y) (x,y) 存在其他链 P P P,于是 P + e P+e P+e 是 G G G 中的圈,包含边 e e e。
3.3.2 边割
边割:
[
S
,
S
′
]
=
{
u
v
∈
E
(
G
)
∣
u
∈
S
,
v
∈
S
′
}
。
[S,S']=\{uv \in E(G) | u \in S, v \in S'\}。
[S,S′]={uv∈E(G)∣u∈S,v∈S′}。若
S
⊂
V
(
G
)
,
S
≠
∅
,
S
‾
=
V
(
G
)
S \subset V(G),S \neq \emptyset,\overline{S} = V(G)
S⊂V(G),S=∅,S=V(G) \
S
S
S,且
[
S
,
S
‾
]
≠
∅
[S,\overline{S}] \neq \emptyset
[S,S]=∅,则称
[
S
,
S
‾
]
[S,\overline{S}]
[S,S] 为
G
G
G 的边割。
极小边割/补圈/余圈:若边割的任意真子集都不再是边割,那该边割为极小边割。
定理:设
G
G
G 为连通图,则
G
G
G 的边割
[
S
,
S
′
]
[S,S']
[S,S′] 是补圈 <==>
G
[
S
]
G[S]
G[S] 和
G
[
S
′
]
G[S']
G[S′] 都连通。
证明:
- 后推前:因为 G [ S ] G[S] G[S] 和 G [ S ‾ ] G[\overline{S}] G[S] 都连通,所以从连通图 G G G 删去 [ S , S ‾ ] [S,\overline{S}] [S,S] 的任何一个真子集后得到的图仍连通,因此 [ S , S ‾ ] [S,\overline{S}] [S,S] 是 G G G 的补圈。
- 前推后:设 [ S , S ‾ ] [S,\overline{S}] [S,S] 是连通图 G G G 的补圈,若 G [ S ] G[S] G[S] 不连通,设 H H H 是 G [ S ] G[S] G[S] 的一个连通分支,则 [ V ( H ) , V ( G ) [V(H),V(G) [V(H),V(G) \ V ( H ) ] V(H)] V(H)] 是边割,且是 [ S , S ‾ ] [S,\overline{S}] [S,S] 的真子集,这与 [ S , S ‾ ] [S,\overline{S}] [S,S] 是极小边割矛盾。若 G [ S ‾ ] G[\overline{S}] G[S] 不连通,同理,也可以得到矛盾。
推论:设
[
S
,
S
′
]
[S,S']
[S,S′] 为图
G
G
G 的一个边割,则
[
S
,
S
′
]
[S,S']
[S,S′] 或者是补圈,或者是一些两两不交的补圈的并。
证明:
- G G G 是连通的:如果 G [ S ] , G [ S ‾ ] G[S],G[\overline{S}] G[S],G[S] 都连通,则由定理知 [ S , S ‾ ] [S,\overline{S}] [S,S] 是补圈。如果 G [ S ] G[S] G[S] 和 G [ S ‾ ] G[\overline{S}] G[S] 不都连通,设 G [ S ] G[S] G[S] 不连通,记 G [ S ] G[S] G[S] 的连通分支为 H 1 , H 2 . . . , H n H_1,H_2...,H_n H1,H2...,Hn,设 G − V ( H i ) G-V(H_i) G−V(Hi) 的连通分支为 G i 1 , G i 2 , . . . , G i r i ( i = 1 , 2 , . . . , n ) G_{i1},G_{i2},...,G_{ir_i}(i=1,2,...,n) Gi1,Gi2,...,Giri(i=1,2,...,n)。由于 G G G 连通,因此 H i H_i Hi 与各个 G i j ( 1 ≤ j ≤ 2 ) G_{ij}(1 \leq j \leq 2) Gij(1≤j≤2) 都有边相连,从而 G [ V ( G i , j ) ‾ ] G[\overline{V(G_{i,j})}] G[V(Gi,j)] 连通 ( 1 ≤ i ≤ n , 1 ≤ j ≤ r j ) (1\leq i \leq n, 1 \leq j \leq r_j) (1≤i≤n,1≤j≤rj)。由定理知 [ V ( G i j ‾ ) , V ( G i j ) ] [\overline{V(G_{ij}}),V(G_{ij})] [V(Gij),V(Gij)] 是 G G G 的补圈,显然,这些补圈互不相交,并且…………
- G G G 是非连通的。令 G G G 的连通分支 G ( 1 ) , G ( 2 ) , . . . , G ( ω ) G^{(1)},G^{(2)},...,G^{(\omega)} G(1),G(2),...,G(ω), S k = S ∩ V ( G k ) S_k=S \cap V(G^{k}) Sk=S∩V(Gk), S k ‾ = V ( G ) \overline{S_k}=V(G) Sk=V(G) \ k = 1 , 2 , . . . , ω k=1,2,...,\omega k=1,2,...,ω,显然 [ S , S ‾ ] [S,\overline{S}] [S,S] = ∪ k = 1 ω [ S k , S k ‾ ] \cup_{k=1}^{\omega}[S_k, \overline{S_k}] ∪k=1ω[Sk,Sk]. …
补树: 设
G
G
G 是连通图,
T
T
T 是
G
G
G 的一个支撑树,则称补图
T
‾
(
G
)
\overline{T}(G)
T(G) 为
G
G
G 的补树,记作
T
‾
\overline{T}
T。
定理:设
T
T
T 是连通图
G
G
G 的支撑树,
e
∈
E
(
T
)
e \in E(T)
e∈E(T),则(1)补树
T
T
T 不含有任何极小边割。(2)
T
+
e
T+e
T+e 中含有唯一的极小边割。
证明:(1)设
[
S
,
S
‾
]
[S,\overline{S}]
[S,S] 是
G
G
G 的一个极小边割,则
G
−
[
S
,
S
‾
]
G-[S,\overline{S}]
G−[S,S] 不连通,因而
G
−
[
S
,
S
‾
]
G-[S,\overline{S}]
G−[S,S] 不包含树
T
T
T,即存在
e
0
∈
E
(
T
)
e_0 \in E(T)
e0∈E(T) 但
e
0
∉
G
−
[
S
,
S
‾
]
e_0 \notin G-[S,\overline{S}]
e0∈/G−[S,S],于是
e
0
∈
[
S
,
S
‾
]
e_0 \in [S, \overline{S}]
e0∈[S,S],故
[
S
,
S
‾
]
[S, \overline{S}]
[S,S] 不包含在
T
‾
\overline{T}
T 中。(2)设边集
E
0
E_0
E0 是包含于
T
‾
+
e
\overline{T} + e
T+e 中唯一极小边割,则
T
−
e
T-e
T−e 包含在
G
−
E
0
G-E_0
G−E0 中。
∀
b
∈
[
V
(
T
1
)
,
V
(
T
2
)
]
\forall b \in [V(T_1),V(T_2)]
∀b∈[V(T1),V(T2)],假若
b
∉
E
0
b \notin E_0
b∈/E0,则
T
−
e
+
b
T-e+b
T−e+b 包含于
G
−
E
0
G-E_0
G−E0。注意到
T
−
e
+
b
T-e+b
T−e+b 连通图且
ε
(
T
−
e
+
b
)
=
v
(
T
)
−
1
\varepsilon(T-e+b)=v(T)-1
ε(T−e+b)=v(T)−1,故
T
−
e
+
b
T-e+b
T−e+b 是
G
G
G 的支撑树,即
G
−
E
0
G-E_0
G−E0 中包含连通子图
T
−
e
+
b
T-e+b
T−e+b 与
G
−
E
0
G-E_0
G−E0 不连通矛盾,
b
∈
E
0
b \in E_0
b∈E0,由
E
0
E_0
E0 是极小边割可知
E
0
=
[
V
(
T
1
)
,
V
(
T
2
)
]
E_0=[V(T_1),V(T_2)]
E0=[V(T1),V(T2)],于是
T
‾
+
e
\overline{T}+e
T+e 中包含
G
G
G 的唯一极小边割。
3.3.3 割点
割点:如果图
G
G
G 的边集
E
E
E 可以分划成两个非空子集
E
1
、
E
2
E_1、E_2
E1、E2,如果
G
[
E
1
]
、
G
[
E
2
]
G[E_1]、G[E_2]
G[E1]、G[E2] 有唯一公共顶点
v
v
v,则称
v
v
v 为图
G
G
G 的割点。
引理:若顶点
v
v
v 满足
ω
(
G
−
v
)
>
ω
(
G
)
\omega(G-v) > \omega(G)
ω(G−v)>ω(G),则
v
v
v 是图
G
G
G 的割点。(不满足也可能是割点)反之,若
G
G
G 的割点
v
v
v 上无环,则
ω
(
G
−
v
)
>
ω
(
G
)
\omega(G-v) > \omega(G)
ω(G−v)>ω(G)。
证明:
- 设顶点 v v v 满足 ω ( G − v ) > ω ( G ) \omega(G-v) > \omega(G) ω(G−v)>ω(G),且 v v v 是 G G G 连通分支 H H H 中的顶点,把 H − v H-v H−v 的连通分支记为 H 1 , H 2 , . . . , H k H_1,H_2,...,H_k H1,H2,...,Hk,由假设知 k ≥ 2 k \geq 2 k≥2,令 E 1 = E ( H 1 ) ∪ { u v ∈ E ( H ) ∣ u ∈ V ( H 1 ) } E_1=E(H_1)\cup\{uv\in E(H) | u \in V(H_1)\} E1=E(H1)∪{uv∈E(H)∣u∈V(H1)}, E 2 = E ( G ) E_2=E(G) E2=E(G) \ E 1 E_1 E1。显然 E 1 , E 2 E_1,E_2 E1,E2 是 G G G 的一个划分,且不为空集,有唯一公共顶点 v v v,从而 v v v 是 G G G 的割点。
- 设 v v v 是 G G G 的割点,且无环。 v v v 是 G [ E 1 ] , G [ E 2 ] G[E_1],G[E_2] G[E1],G[E2] 的唯一公共顶点,注意划分为非空划分。故存在连杆 v u 1 ∈ E 1 , v u 2 ∈ E 2 vu_1 \in E_1, vu_2 \in E_2 vu1∈E1,vu2∈E2,即 u 1 , u 2 u_1,u_2 u1,u2 存在于同一个连通分支中。因此所有 ( u 1 , u 2 ) (u_1,u_2) (u1,u2) 链必定经过 v v v,于是 u 1 , u 2 u_1,u_2 u1,u2 在 G − v G-v G−v 的不同连通分支,即 ω ( G − v ) > ω ( G ) \omega(G-v)>\omega(G) ω(G−v)>ω(G)。
若 G G G 的割点 v v v 有环,则 ω ( G − v ) > ω ( G ) \omega(G-v)>\omega(G) ω(G−v)>ω(G) 不一定成立
定理:树
T
T
T 的顶点
v
v
v 是割点,当且仅当
d
(
v
)
>
1
d(v)>1
d(v)>1。
证明:
- 若 d ( v ) = 0 d(v)=0 d(v)=0,则该图是 1 1 1 阶完全图,故 v v v 不是割点。若 d ( v ) = 1 d(v)=1 d(v)=1,则 T − v T-v T−v 仍是无圈图,且有 ε ( T ) − 1 \varepsilon(T)-1 ε(T)−1 条边,从而有 v ( T ) − 2 = v ( T − v ) − 1 v(T)-2=v(T-v)-1 v(T)−2=v(T−v)−1 条边, T − v T-v T−v 是树,所以 ω ( T − v ) = ω ( T ) \omega(T-v)=\omega(T) ω(T−v)=ω(T),由引理知 v v v 不是割点。
- 若 d ( v ) > 1 d(v)>1 d(v)>1,则 T T T 中存在两个相异顶点 u , w u,w u,w 与 v v v 相邻,链 u v w uvw uvw 是 T T T 中唯一 ( u , w ) (u,w) (u,w) 链,由此知 T − v T-v T−v 中不再有 ( u , w ) (u,w) (u,w) 链,故 ω ( T − v ) > ω ( T ) \omega(T-v)>\omega(T) ω(T−v)>ω(T),知 v v v 是 G G G 的割点。
3.4 最小支撑树
3.4.1 最小支撑树的定义
树
T
T
T 的权:
∑
e
∈
E
(
T
)
w
(
e
)
\sum_{e \in E(T)} w(e)
∑e∈E(T)w(e)。
最小支撑树: 权最小的支撑树。
3.4.2 Prim 算法
算法流程略
定理:设
G
G
G 是连通加权图,由
P
r
i
m
Prim
Prim 算法构造的支撑树一定是图
G
G
G 的最小支撑树。
3.4.3 Kruskal 算法
算法流程略
定理:设
G
G
G 是连通加权图,由
K
r
u
s
k
a
l
Kruskal
Kruskal 算法构造的支撑树一定是图
G
G
G 的最小支撑树。
3.5 二叉树与前缀码
3.5.1 二元树
二元树:设
T
T
T 是一个树,每个边都规定一个方向,若存在一个入度为
0
0
0 的顶点
v
0
v_0
v0,其他顶点
v
v
v 的入度都为
1
1
1,则称
T
T
T 为根树,
v
0
v_0
v0 为根,出度为
0
0
0 的点为叶子。
n
n
n 元树:设
T
T
T 为根树,
∀
v
∈
V
(
T
)
,
d
+
(
v
)
≤
n
\forall v \in V(T), d^+(v) \leq n
∀v∈V(T),d+(v)≤n,则为
n
n
n 元树。若都有
n
n
n 个儿子,则称为典型
n
n
n 元树。
有序树:若根数的每个顶点的儿子们有序,称为有序树。
定理:由
2
n
2n
2n 个括号组成的好括号列个数是:
1
n
+
1
C
2
n
n
\frac1{n+1}C_{2n}^{n}
n+11C2nn。
3.5.2 前缀码
前缀码:在一个序列集合中,如果任何一个序列都不是另一个序列的前缀,则称这个集合为前缀码。文章来源:https://www.toymoban.com/news/detail-739522.html
3.5.3 Huffman树
Huffman树:以
v
0
v_0
v0 为根,以
v
1
,
v
2
,
.
.
.
.
,
v
n
v_1,v_2,....,v_n
v1,v2,....,vn 为叶子的有序二元树中,称
(
v
0
,
v
i
)
(v_0,v_i)
(v0,vi) 链的长
l
i
l_i
li 为叶子
v
i
v_i
vi 的码长。
最优二元树:使得
m
(
T
)
=
∑
i
=
1
n
p
i
l
i
m(T)=\sum_{i=1}^{n}p_il_i
m(T)=∑i=1npili 达最小的
H
u
f
f
m
a
n
Huffman
Huffman 树。文章来源地址https://www.toymoban.com/news/detail-739522.html
到了这里,关于图论与网络优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!