又到了上课的时间,组合数学的书是《组合理论及其应用》,这次从二分图(第六章)开始讲起。这本书的二分图是从几何的角度进行讲述。这里有个题外话,组合数学的前序课程应该是《离散数学》,主要包括数理逻辑、集合论、代数和图论四个部分。
相异代表系是针对几何来讲的,这里主要抓住“相异”、“代表”、“系”三个部分来进行区分,首先是系表明是一个集合,代表则是集合内每一个元素代表着一个子集(即该元素来源于这个子集),相异表明其元素各不相同。下面给出其形式化定义:
例如: 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}(每个元素都来自不同的子集,都不相同)。
非空集合构成的集族一定有代表系,但不一定有相异代表系。那么什么时候集族有相异代表系呢?1935年的何氏定理告诉了我们的充要条件。
这定义比较拗口,其大致意思就是若有n个子集,从中任意选取k个子集,其并集的元素个数≥k。这里有一个疑问,这定理有啥用啊,相异代表系好像仅仅是为了存在而存在啊?这个疑问我们先放一放,因为这个问题我们后面解释。
既然是数学,那么给出一个定理时,一个必要的操作就是要证明它。这是一个充要条件。必要性是必然的,因为互不相同的k个元素的并集一定是大于等于k的,下面主要证明充分性。
这里又有一个题外话:数学的证明方法有哪些?
需要证明和整数n有关,且n为无穷时,使用数学归纳法;
需要证明和整数n有关,且n是有限的,使用枚举法(分类讨论、分析法)
直接证明、间接证明都不太容易时,使用反证法。
如果要考虑最值、条件时,使用构造法。
这里使用数学归纳法进行证明:
当m=1时, ∣ A 1 ∣ ≥ 1 |A_1|\ge1 ∣A1∣≥1成立。
当m
(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)证毕。
如果集合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
因此,可以有以下推论:
这个意思就是说,要使得选取的集合数最多,而其并集的个数最小。
如果一个图的节点的集合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,则该图为二分图。也就是说该图的节点两个部分,所有的边都在这两个部分之间,各部分之内没有边,如图所示:
这是一个非常特殊的图结构,具有很多特性。等等,既然二分图的定义这么简单,那为啥第一章还要介绍相异代表系呢?
上图的一个用处就是描述“婚姻匹配”问题,(左边都是女生,右边都是男生,毕竟女生比男生少嘛),那这样就是否存在一个匹配,使得女生都有归宿。如果存在这样一个匹配,就可以使用相异代表系表示。例如上图可以表示为集族: 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]}没有公共节点,因此是该图的一个匹配。(也是其集族的相异代表系)。
刚才是从边出发,给定结点的约束条件,从而形成匹配的概念。与之相反的,二分图的覆盖则从点出发,给定边的约束条件:
如果结点集合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个节点,但是节点可以有多个边),而且,匹配的边一般是二分图的边的子集,而覆盖的结点多半会有重复的,也就是存在冗余。
因此,如果以匹配的最大边数为匹配数,以覆盖的最小节点数为覆盖数,则其两者相等。
数学就是,来一个定理,就要给出证明。这是个两个数相等的证明,一般证明使用“夹逼”方法。
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 α=β
盖饭算法是来判断一个二分图的匹配M是否是最大匹配。如果不是,如何修改M得到更多的匹配,依此循环从而获得最大匹配。
由于交错链有一个特性即在关于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条边的匹配,与原条件不符,反证结束。
然后证明充分性,如图所示,在交错链中,红色的比蓝色的多一条边。
有了上面这条定理,我们就可以实现以下寻找最大匹配的算法了。
这里我们先给出例子,然后再给出第一步结束的证明。
通过第一步,就可以找到这条红蓝相间的交错链,此时是到第二步停止。我们使用红色代替蓝色,将红色置为粗体(在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两个角度考虑。其核心是在算法的过程中体现出来的。
这里增加一个题目,就是如何判断一个图是二分图?
当然无脑想法就是暴力解决,按照循环去遍历不同的划分使得该图可以成为两部分,再判断两部分内部是否有无相连的边。
但是这样时间复杂度上至少是 O ( n 3 ) O(n^3) O(n3)。如果能先进行一次划分,再去判断多好?根据二分图的性质,在图中,任意选取一点,将其与其连接的点按照边数长度奇偶划分成两部分,再判断这两部分是否内部有相连即可,此时可以减少至 O ( n 2 ) O(n^2) O(n2)。当然,也可以使用广度优先算法[代码]进行黑白着色,从而判断一个图是否是二分图(时间复杂度也是 O ( n 2 ) O(n^2) O(n2))。
当然也可以从,若一个图不存在奇数环,则该图是二分图入手,证明一个图不存在奇数环即可,这个等价定理还需要证明才能够实现。