文章目录
0. 前言
又到了上课的时间,组合数学的书是《组合理论及其应用》,这次从二分图(第六章)开始讲起。这本书的二分图是从几何的角度进行讲述。这里有个题外话,组合数学的前序课程应该是《离散数学》,主要包括数理逻辑、集合论、代数和图论四个部分。
1. 相异代表系
1.1 定义
相异代表系是针对几何来讲的,这里主要抓住“相异”、“代表”、“系”三个部分来进行区分,首先是系表明是一个集合,代表则是集合内每一个元素代表着一个子集(即该元素来源于这个子集),相异表明其元素各不相同。下面给出其形式化定义:
例如:
A
1
=
{
1
,
4
}
,
A
2
=
{
1
,
2
,
3
}
,
A
3
=
{
3
,
4
,
5
}
,
A
4
=
{
3
,
4
,
5
}
,
A_1=\{1,4\},A_2=\{1,2,3\},A_3=\{3,4,5\},A_4=\{3,4,5\},
A1={1,4},A2={1,2,3},A3={3,4,5},A4={3,4,5},其一个代表系可以是:{1,1,3,3}(有元素相同),而一个相异代表系则可以是:{1,2,3,4}(每个元素都来自不同的子集,都不相同)。
1.2 集族有相异代表系的条件
非空集合构成的集族一定有代表系,但不一定有相异代表系。那么什么时候集族有相异代表系呢?1935年的何氏定理告诉了我们的充要条件。
这定义比较拗口,其大致意思就是若有n个子集,从中任意选取k个子集,其并集的元素个数≥k。这里有一个疑问,这定理有啥用啊,相异代表系好像仅仅是为了存在而存在啊?这个疑问我们先放一放,因为这个问题我们后面解释。
既然是数学,那么给出一个定理时,一个必要的操作就是要证明它。这是一个充要条件。必要性是必然的,因为互不相同的k个元素的并集一定是大于等于k的,下面主要证明充分性。
这里又有一个题外话:数学的证明方法有哪些?
需要证明和整数n有关,且n为无穷时,使用数学归纳法;
需要证明和整数n有关,且n是有限的,使用枚举法(分类讨论、分析法)
直接证明、间接证明都不太容易时,使用反证法。
如果要考虑最值、条件时,使用构造法。
这里使用数学归纳法进行证明:
当m=1时,
∣
A
1
∣
≥
1
|A_1|\ge1
∣A1∣≥1成立。
当m<n时,假设满足条件。
当m=n时,这里再使用分类讨论方法进行证明。
(1)对任意
1
≤
k
≤
n
−
1
1\le k\le n-1
1≤k≤n−1,任意选择
1
≤
i
1
≤
i
2
≤
i
3
≤
.
.
.
≤
i
k
≤
n
1 \le i_1 \le i_2 \le i_3\le ... \le i_k \le n
1≤i1≤i2≤i3≤...≤ik≤n,满足条件
∣
⋃
i
=
1
k
A
i
∣
≥
k
+
1
|\bigcup_{i=1}^{k} A_i|\ge k+1
∣i=1⋃kAi∣≥k+1(这个条件比定理上的要求更严格)此时,取
e
n
∈
A
n
e_n \in A_n
en∈An,使得
∣
⋃
i
=
1
k
A
i
−
{
e
n
}
∣
≥
k
|\bigcup_{i=1}^{k} A_i-\{e_n\}|\ge k
∣i=1⋃kAi−{en}∣≥k
则
e
1
,
e
2
,
.
.
.
,
e
n
−
1
e_1,e_2,...,e_{n-1}
e1,e2,...,en−1就是其(
A
i
−
{
e
n
}
A_i-\{e_n\}
Ai−{en})相异代表系,从而使得
e
1
,
e
2
,
.
.
.
,
e
n
−
1
,
e
n
e_1,e_2,...,e_{n-1},e_n
e1,e2,...,en−1,en是其
{
A
1
,
A
2
,
.
.
.
,
A
n
}
\{A_1,A_2,...,A_n\}
{A1,A2,...,An}的相异代表系。
以上只是比较好证明的一部分,下面证明剩余的部分:
(2)对存在 1 ≤ p ≤ n − 1 1\le p\le n-1 1≤p≤n−1,存在某种选择 1 ≤ i 1 ≤ i 2 ≤ i 3 ≤ . . . ≤ i p ≤ n 1 \le i_1 \le i_2 \le i_3\le ... \le i_p\le n 1≤i1≤i2≤i3≤...≤ip≤n,使得 ∣ A 1 ∪ A 2 ∪ . . . ∪ A p ∣ = p |A_1\cup A_2\cup ...\cup A_p|=p ∣A1∪A2∪...∪Ap∣=p,符合假设条件,有相异代表系 F = { e 1 , e 2 , . . . , e p } F=\{e_1,e_2,...,e_p\} F={e1,e2,...,ep}(到这里都是在找一个前提条件)。
现在考虑剩余的n-p个集合构成的集族
{
A
p
+
1
−
F
,
A
p
+
2
−
F
,
.
.
.
,
A
p
+
n
−
F
}
\{A_{p+1}-F, A_{p+2}-F,...,A_{p+n}-F\}
{Ap+1−F,Ap+2−F,...,Ap+n−F},对于任意
1
≤
k
≤
n
−
p
1\le k\le n-p
1≤k≤n−p有
∣
(
A
j
1
−
F
)
∪
(
A
j
2
−
F
)
∪
.
.
.
∪
(
A
j
k
−
F
)
∣
|(A_{j1}-F)\cup(A_{j2}-F)\cup ... \cup(A_{jk}-F)|
∣(Aj1−F)∪(Aj2−F)∪...∪(Ajk−F)∣
=
∣
(
A
j
1
∪
A
j
2
∪
.
.
.
∪
A
j
k
)
−
F
∣
=|(A_{j1}\cup A_{j2}\cup ... \cup A_{jk})-F|
=∣(Aj1∪Aj2∪...∪Ajk)−F∣
=
∣
(
A
1
∪
A
2
∪
.
.
.
∪
A
p
∪
A
j
1
∪
A
j
2
∪
.
.
.
∪
A
j
k
)
−
F
∣
=|(A_{1}\cup A_{2}\cup ... \cup A_{p}\cup A_{j1}\cup A_{j2}\cup ... \cup A_{jk})-F|
=∣(A1∪A2∪...∪Ap∪Aj1∪Aj2∪...∪Ajk)−F∣
≥
(
p
+
k
)
−
p
=
k
\ge(p+k)-p=k
≥(p+k)−p=k
满足定理原始条件,即
{
A
p
+
1
−
F
,
A
p
+
2
−
F
,
.
.
.
,
A
p
+
n
−
F
}
\{A_{p+1}-F, A_{p+2}-F,...,A_{p+n}-F\}
{Ap+1−F,Ap+2−F,...,Ap+n−F}有相异代表系
{
e
p
+
1
,
e
p
+
2
,
.
.
.
,
e
n
}
\{e_{p+1},e_{p+2},...,e_{n}\}
{ep+1,ep+2,...,en},因此结合前提条件,就可以获得存在相异代表系
{
e
1
,
e
2
,
.
.
.
,
e
n
}
\{e_1,e_2,...,e_n\}
{e1,e2,...,en}。
综上(1)(2)证毕。
1.3 集族的子集存在相异代表系
如果集合E没有相异代表系,则最多可以有多少r元子集有相异代表系?下面这个定理告诉我们:
还是需要证明:
当
1
≤
k
≤
n
−
r
1 \le k \le n-r
1≤k≤n−r时,等式右边是负数,不等式自动满足。
这里证明分为两步走,首先令
F
=
{
f
1
,
f
2
,
.
.
.
,
f
n
−
r
}
F=\{ f_1,f_2,...,f_{n-r}\}
F={f1,f2,...,fn−r},且
F
∩
(
A
1
∪
A
2
∪
.
.
.
∪
A
n
)
=
∅
F\cap (A_1 \cup A_2\cup ... \cup A_n)=\varnothing
F∩(A1∪A2∪...∪An)=∅
先证明(1):{A_1,A_2,…,A_n}的r 元子集有相异代表系,当且仅当
{
A
1
∪
F
,
A
2
∪
F
,
.
.
.
,
A
n
∪
F
}
\{A_1 \cup F,A_2\cup F, ... ,A_n \cup F \}
{A1∪F,A2∪F,...,An∪F}有相异代表系。
先证明充分性。假设集族有r元子集相异代表系为 e 1 , e 2 , . . . , e r {e_1,e_2,...,e_r} e1,e2,...,er,显然 e 1 , e 2 , . . . , e r , f 1 , f 2 , . . . , f n − r {e_1,e_2,...,e_r,f_1,f_2,...,f_{n-r}} e1,e2,...,er,f1,f2,...,fn−r就是 { A 1 ∪ F , A 2 ∪ F , . . . , A n ∪ F } \{A_1 \cup F,A_2\cup F, ... ,A_n \cup F \} {A1∪F,A2∪F,...,An∪F}的相异代表系。
再证明必要性。假设 { A 1 ∪ F , A 2 ∪ F , . . . , A n ∪ F } \{A_1 \cup F,A_2\cup F, ... ,A_n \cup F \} {A1∪F,A2∪F,...,An∪F}有相异代表系 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn,因为F中只有n-r个元素,所以 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn中至少有r个元素不在F中,因此 x 1 , x 2 , . . . , x r x_1,x_2,...,x_r x1,x2,...,xr是 { A 1 , A 2 , . . . , A n } \{A_1,A_2, ... ,A_n \} {A1,A2,...,An}的一个相异代表系。
然后证明(2):定理6.1.2。
根据定理6.1.1,
{
A
1
∪
F
,
A
2
∪
F
,
.
.
.
,
A
n
∪
F
}
\{A_1 \cup F,A_2\cup F, ... ,A_n \cup F \}
{A1∪F,A2∪F,...,An∪F}有相异代表系,且
∣
(
A
1
∪
F
)
∪
(
A
2
∪
F
)
∪
.
.
.
∪
(
A
k
∪
F
)
∣
≥
k
|(A_1 \cup F) \cup (A_2 \cup F) \cup ... \cup(A_k \cup F)|\ge k
∣(A1∪F)∪(A2∪F)∪...∪(Ak∪F)∣≥k
从而
∣
(
A
1
∪
F
)
∪
(
A
2
∪
F
)
∪
.
.
.
∪
(
A
k
∪
F
)
∣
|(A_1 \cup F) \cup (A_2 \cup F) \cup ... \cup(A_k \cup F)|
∣(A1∪F)∪(A2∪F)∪...∪(Ak∪F)∣
=
∣
A
1
∪
A
2
∪
.
.
.
∪
A
k
∪
F
∣
=|A_1 \cup A_2 \cup ... \cup A_k \cup F |
=∣A1∪A2∪...∪Ak∪F∣
=
∣
A
1
∪
A
2
∪
.
.
.
∪
A
k
∣
+
∣
F
∣
=|A_1 \cup A_2 \cup ... \cup A_k|+ | F |
=∣A1∪A2∪...∪Ak∣+∣F∣
从而
=
∣
A
1
∪
A
2
∪
.
.
.
∪
A
k
∣
≥
k
−
(
n
−
r
)
=|A_1 \cup A_2 \cup ... \cup A_k|\ge k-(n-r)
=∣A1∪A2∪...∪Ak∣≥k−(n−r)
也就是
=
∣
A
1
∪
A
2
∪
.
.
.
∪
A
k
∣
+
(
n
−
k
)
≥
r
=|A_1 \cup A_2 \cup ... \cup A_k|+(n-k)\ge r
=∣A1∪A2∪...∪Ak∣+(n−k)≥r
因此,可以有以下推论:
这个意思就是说,要使得选取的集合数最多,而其并集的个数最小。
2. 二分图
2.1 二分图的定义
如果一个图的节点的集合V可以分为2个部分,分别是X和Y,且
V
=
X
∪
Y
,
X
∩
Y
=
∅
V=X \cup Y, X \cap Y=\empty
V=X∪Y,X∩Y=∅,且其边均为[x,y]其中
x
∈
X
,
y
∈
Y
x \in X, y \in Y
x∈X,y∈Y,则该图为二分图。也就是说该图的节点两个部分,所有的边都在这两个部分之间,各部分之内没有边,如图所示:
这是一个非常特殊的图结构,具有很多特性。等等,既然二分图的定义这么简单,那为啥第一章还要介绍相异代表系呢?
2.2 二分图的匹配
上图的一个用处就是描述“婚姻匹配”问题,(左边都是女生,右边都是男生,毕竟女生比男生少嘛),那这样就是否存在一个匹配,使得女生都有归宿。如果存在这样一个匹配,就可以使用相异代表系表示。例如上图可以表示为集族: A 1 = { y 1 , y 2 } , A 2 = { y 1 , y 3 } , A 3 = { y 2 , y 3 , y 4 } , A 4 = { y 4 , y 5 } A_1=\{y_1, y_2 \},A_2=\{y_1, y_3 \},A_3=\{y_2, y_3, y_4 \},A_4=\{y_4, y_5 \} A1={y1,y2},A2={y1,y3},A3={y2,y3,y4},A4={y4,y5},则 { [ 1 , y 1 ] , [ 2 , y 3 ] , [ 3 , y 4 ] , [ 4 , y 5 ] } \{[1,y_1],[2,y_3],[3,y_4],[4,y_5]\} {[1,y1],[2,y3],[3,y4],[4,y5]}没有公共节点,因此是该图的一个匹配。(也是其集族的相异代表系)。
因此这个二分图和相异代表系的关系如下:
2.3 二分图的覆盖
刚才是从边出发,给定结点的约束条件,从而形成匹配的概念。与之相反的,二分图的覆盖则从点出发,给定边的约束条件:
如果结点集合S
⊆
X
∪
Y
\subseteq X \cup Y
⊆X∪Y,使得边集合
△
\triangle
△每条边至少有一个结点在其中,则称S为
△
\triangle
△的一个覆盖。
例如,上图中
{
1
,
2
,
3
,
4
}
,
{
3
,
4
,
y
1
,
y
2
,
y
3
}
\{1,2,3,4\},\{3,4,y_1,y_2,y_3\}
{1,2,3,4},{3,4,y1,y2,y3}都是
△
\triangle
△的覆盖
2.4 匹配与覆盖的关系
就像上面的两个定义一样,一个是从边给出约束条件(匹配),一个是从结点给出约束条件(覆盖),但是都是对于一张二分图的描述,那么这两个之间存在什么关系呢?
我们拍脑袋想嘛,应该是匹配的边的数量一般会小于覆盖的节点数(因为这是简单图,一个边只能有2个节点,但是节点可以有多个边),而且,匹配的边一般是二分图的边的子集,而覆盖的结点多半会有重复的,也就是存在冗余。
因此,如果以匹配的最大边数为匹配数,以覆盖的最小节点数为覆盖数,则其两者相等。
数学就是,来一个定理,就要给出证明。这是个两个数相等的证明,一般证明使用“夹逼”方法。
1)
首
先
证
明
匹
配
数
α
≤
覆
盖
数
β
首先证明匹配数\alpha \le覆盖数\beta
首先证明匹配数α≤覆盖数β
设M是二分图的最大匹配,S为二分图的最小覆盖。由于M中没有两边存在公共节点,并且M中的
α
\alpha
α条边每边至少有一个结点在S中,所以
α
≤
β
\alpha \le \beta
α≤β。后半句容易理解,因为每条边至少会有一个节点在S中,否则S就不是覆盖了。而前半句旨在说明
α
\alpha
α是不重不漏计数的,因此后半句才能够成立。
2)
接
着
证
明
匹
配
数
α
≥
覆
盖
数
β
接着证明匹配数\alpha \ge覆盖数\beta
接着证明匹配数α≥覆盖数β
由第一节中相异代表系最大子集数推论(6.1.1)可知,一定存在整数k,选择
i
1
,
i
2
,
.
.
.
,
i
k
i_1,i_2,...,i_k
i1,i2,...,ik使得
∣
A
i
1
∪
A
i
2
∪
.
.
.
∪
A
i
k
∣
+
(
n
−
k
)
=
α
|A_{i1}\cup A_{i2}\cup ...\cup A_{ik}|+(n-k)=\alpha
∣Ai1∪Ai2∪...∪Aik∣+(n−k)=α
然后,考虑证明
T
=
(
A
i
1
∪
A
i
2
∪
.
.
.
∪
A
i
k
)
∪
(
X
−
{
i
1
,
i
2
,
.
.
.
,
i
k
}
)
T=(A_{i1}\cup A_{i2}\cup ...\cup A_{ik}) \cup (X-\{i_1,i_2,...,i_k\})
T=(Ai1∪Ai2∪...∪Aik)∪(X−{i1,i2,...,ik})为覆盖即可。可从两个方面考虑,任取一条边[x,y].
一、当
x
∈
{
i
1
,
i
2
,
.
.
.
,
i
k
}
x \in \{i_1,i_2,...,i_k\}
x∈{i1,i2,...,ik}时,存在一个点
x
=
i
l
x=i_l
x=il,使得
y
∈
A
i
l
y\in A_{il}
y∈Ail,从而
y
∈
T
y\in T
y∈T.
二、当
x
∈
X
−
{
i
1
,
i
2
,
.
.
.
,
i
k
}
x \in X-\{i_1,i_2,...,i_k\}
x∈X−{i1,i2,...,ik}时,则
x
∈
T
x\in T
x∈T。
这样[x,y]都在T中,又因为
∣
T
∣
=
∣
A
i
1
∪
A
i
2
∪
.
.
.
∪
A
i
k
∣
+
∣
X
−
{
i
1
,
i
2
,
.
.
.
,
i
k
}
∣
|T|=|A_{i1}\cup A_{i2}\cup ...\cup A_{ik}|+|X-\{i_1,i_2,...,i_k\}|
∣T∣=∣Ai1∪Ai2∪...∪Aik∣+∣X−{i1,i2,...,ik}∣
=
∣
A
i
1
∪
A
i
2
∪
.
.
.
∪
A
i
k
∣
+
(
n
−
k
)
=
α
=|A_{i1}\cup A_{i2}\cup ...\cup A_{ik}|+(n-k)=\alpha
=∣Ai1∪Ai2∪...∪Aik∣+(n−k)=α
因此T是具有
α
\alpha
α个节点的覆盖,而
β
\beta
β是最小覆盖,因此
α
≥
β
\alpha \ge \beta
α≥β
综上所述 α = β \alpha=\beta α=β
3. 二分图的匹配算法
盖饭算法是来判断一个二分图的匹配M是否是最大匹配。如果不是,如何修改M得到更多的匹配,依此循环从而获得最大匹配。
3.1交错链
由于交错链有一个特性即在关于M的交错链中,不在M中的边数比在M中的边数多1,因此当我们反转其边时,就可以获得更多的边了。
首先给出基本链的定义:
基本链有一些性质:
若n为偶数,则基本链的边数为偶数,此时头结点
u
0
u_0
u0和尾结点
u
n
u_n
un同属于X或同属于Y
若n为奇数,则基本链的边数为奇数,此时头结点
u
0
u_0
u0和尾结点
u
n
u_n
un分别属于X和Y。
正是有这样的特殊性质,才有了交错链的存在:
例如:
经过这一次变换,就增加了一条边在M中,现在有4条边了。但是有5个节点,因此接下来,还可以再试一把。
有了交错链就可以找到最大匹配了。
有了定理,本来是该高兴的事,但是有定理就要证明。
首先证明必要性,即若M是具有最大边数的匹配,则不存在关于M的交错链(==>)。
如图所示,假设存在r是M的一个交错链,则
∣
N
0
∣
=
∣
M
0
∣
+
1
|N_0|=|M_0|+1
∣N0∣=∣M0∣+1,令
M
′
=
(
M
−
M
0
)
∪
N
0
M'=(M-M_0)\cup N_0
M′=(M−M0)∪N0,由于
N
0
N_0
N0和
(
M
−
M
0
)
(M-M_0)
(M−M0)都是而二分图的一个匹配,如果
M
−
M
0
M-M_0
M−M0与
N
0
N_0
N0没有公共节点,那么
M
′
M'
M′就是比
M
M
M多1条边的匹配。
下面证明 M − M 0 M-M_0 M−M0与 N 0 N_0 N0没有公共节点,设 [ x , y ] ∈ N 0 [x,y] \in N_0 [x,y]∈N0。
1)若
[
x
,
y
]
[x,y]
[x,y]是首边(或尾边),如图所示,x不在
M
M
M中,y在M中,因此y不在
M
−
M
0
M-M_0
M−M0中,因此
[
x
,
y
]
[x,y]
[x,y]不在
M
−
M
0
M-M_0
M−M0中。
2)若[x,y]是中边,则x,y都在
M
0
M_0
M0,显然不在
M
−
M
0
M-M_0
M−M0中。
综上所述,
M
−
M
0
M-M_0
M−M0与
N
0
N_0
N0没有公共节点,因此
M
′
M'
M′就是比
M
M
M多1条边的匹配,与原条件不符,反证结束。
然后证明充分性,如图所示,在交错链中,红色的比蓝色的多一条边。
3.2 寻找最大匹配算法
有了上面这条定理,我们就可以实现以下寻找最大匹配的算法了。
这里我们先给出例子,然后再给出第一步结束的证明。
通过第一步,就可以找到这条红蓝相间的交错链,此时是到第二步停止。我们使用红色代替蓝色,将红色置为粗体(在M中),蓝色变回正常(不在M中),从而得到新的匹配。
再在M中再执行一次算法,可以得到红蓝边数相等,此时已经无法继续增加匹配中边的数量了,因此此时算法结束,
M
′
M'
M′为最大匹配。
虽然我们从直观上可以发现并不能继续增加更多的边了,但是数学上,要讲究证明,即证明定理6.3.2。
该定理就是要证明,若S是覆盖,且
∣
S
∣
=
∣
M
∣
|S|=|M|
∣S∣=∣M∣,则M是最大匹配。
这里面说的比较拗口,因为是完全从具体说法上的解释。在证明第一个时,其反证法主要证明若
e
=
[
x
,
y
]
e=[x,y]
e=[x,y]不在S中,以两种情况考虑即
e
∈
M
e \in M
e∈M和
e
∉
M
e \notin M
e∈/M;证明第二个则以x和y两个角度考虑。其核心是在算法的过程中体现出来的。
3.3 判断一个图是否为二分图
这里增加一个题目,就是如何判断一个图是二分图?
当然无脑想法就是暴力解决,按照循环去遍历不同的划分使得该图可以成为两部分,再判断两部分内部是否有无相连的边。
但是这样时间复杂度上至少是 O ( n 3 ) O(n^3) O(n3)。如果能先进行一次划分,再去判断多好?根据二分图的性质,在图中,任意选取一点,将其与其连接的点按照边数长度奇偶划分成两部分,再判断这两部分是否内部有相连即可,此时可以减少至 O ( n 2 ) O(n^2) O(n2)。当然,也可以使用广度优先算法[代码]进行黑白着色,从而判断一个图是否是二分图(时间复杂度也是 O ( n 2 ) O(n^2) O(n2))。
当然也可以从,若一个图不存在奇数环,则该图是二分图入手,证明一个图不存在奇数环即可,这个等价定理还需要证明才能够实现。