0. 前言
又到了上課的時間,組合數學的書是《組合理論及其應用》,這次從二分圖(第六章)開始講起。這本書的二分圖是從幾何的角度進行講述。這裏有個題外話,組合數學的前序課程應該是《離散數學》,主要包括數理邏輯、集合論、代數和圖論四個部分。
1. 相異代表系
1.1 定義
相異代表系是針對幾何來講的,這裏主要抓住“相異”、“代表”、“系”三個部分來進行區分,首先是系表明是一個集合,代表則是集合內每一個元素代表着一個子集(即該元素來源於這個子集),相異表明其元素各不相同。下面給出其形式化定義:
例如: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時,∣A1∣≥1成立。
當m<n時,假設滿足條件。
當m=n時,這裏再使用分類討論方法進行證明。
(1)對任意1≤k≤n−1,任意選擇1≤i1≤i2≤i3≤...≤ik≤n,滿足條件∣i=1⋃kAi∣≥k+1(這個條件比定理上的要求更嚴格)此時,取en∈An,使得∣i=1⋃kAi−{en}∣≥k
則e1,e2,...,en−1就是其(Ai−{en})相異代表系,從而使得e1,e2,...,en−1,en是其{A1,A2,...,An}的相異代表系。
以上只是比較好證明的一部分,下面證明剩餘的部分:
(2)對存在1≤p≤n−1,存在某種選擇1≤i1≤i2≤i3≤...≤ip≤n,使得∣A1∪A2∪...∪Ap∣=p,符合假設條件,有相異代表系F={e1,e2,...,ep}(到這裏都是在找一個前提條件)。
現在考慮剩餘的n-p個集合構成的集族{Ap+1−F,Ap+2−F,...,Ap+n−F},對於任意1≤k≤n−p有
∣(Aj1−F)∪(Aj2−F)∪...∪(Ajk−F)∣
=∣(Aj1∪Aj2∪...∪Ajk)−F∣
=∣(A1∪A2∪...∪Ap∪Aj1∪Aj2∪...∪Ajk)−F∣
≥(p+k)−p=k
滿足定理原始條件,即{Ap+1−F,Ap+2−F,...,Ap+n−F}有相異代表系{ep+1,ep+2,...,en},因此結合前提條件,就可以獲得存在相異代表系{e1,e2,...,en}。
綜上(1)(2)證畢。
1.3 集族的子集存在相異代表系
如果集合E沒有相異代表系,則最多可以有多少r元子集有相異代表系?下面這個定理告訴我們:
還是需要證明:
當 1≤k≤n−r時,等式右邊是負數,不等式自動滿足。
這裏證明分爲兩步走,首先令F={f1,f2,...,fn−r},且F∩(A1∪A2∪...∪An)=∅
先證明(1):{A_1,A_2,…,A_n}的r 元子集有相異代表系,當且僅當{A1∪F,A2∪F,...,An∪F}有相異代表系。
先證明充分性。假設集族有r元子集相異代表係爲e1,e2,...,er,顯然e1,e2,...,er,f1,f2,...,fn−r就是{A1∪F,A2∪F,...,An∪F}的相異代表系。
再證明必要性。假設{A1∪F,A2∪F,...,An∪F}有相異代表系x1,x2,...,xn,因爲F中只有n-r個元素,所以x1,x2,...,xn中至少有r個元素不在F中,因此x1,x2,...,xr是{A1,A2,...,An}的一個相異代表系。
然後證明(2):定理6.1.2。
根據定理6.1.1,{A1∪F,A2∪F,...,An∪F}有相異代表系,且
∣(A1∪F)∪(A2∪F)∪...∪(Ak∪F)∣≥k
從而
∣(A1∪F)∪(A2∪F)∪...∪(Ak∪F)∣
=∣A1∪A2∪...∪Ak∪F∣
=∣A1∪A2∪...∪Ak∣+∣F∣
從而
=∣A1∪A2∪...∪Ak∣≥k−(n−r)
也就是
=∣A1∪A2∪...∪Ak∣+(n−k)≥r
因此,可以有以下推論:
這個意思就是說,要使得選取的集合數最多,而其並集的個數最小。
2. 二分圖
2.1 二分圖的定義
如果一個圖的節點的集合V可以分爲2個部分,分別是X和Y,且V=X∪Y,X∩Y=∅,且其邊均爲[x,y]其中x∈X,y∈Y,則該圖爲二分圖。也就是說該圖的節點兩個部分,所有的邊都在這兩個部分之間,各部分之內沒有邊,如圖所示:
這是一個非常特殊的圖結構,具有很多特性。等等,既然二分圖的定義這麼簡單,那爲啥第一章還要介紹相異代表系呢?
2.2 二分圖的匹配
上圖的一個用處就是描述“婚姻匹配”問題,(左邊都是女生,右邊都是男生,畢竟女生比男生少嘛),那這樣就是否存在一個匹配,使得女生都有歸宿。如果存在這樣一個匹配,就可以使用相異代表系表示。例如上圖可以表示爲集族:A1={y1,y2},A2={y1,y3},A3={y2,y3,y4},A4={y4,y5},則{[1,y1],[2,y3],[3,y4],[4,y5]}沒有公共節點,因此是該圖的一個匹配。(也是其集族的相異代表系)。
因此這個二分圖和相異代表系的關係如下:
2.3 二分圖的覆蓋
剛纔是從邊出發,給定結點的約束條件,從而形成匹配的概念。與之相反的,二分圖的覆蓋則從點出發,給定邊的約束條件:
如果結點集合S⊆X∪Y,使得邊集合△每條邊至少有一個結點在其中,則稱S爲△的一個覆蓋。
例如,上圖中{1,2,3,4},{3,4,y1,y2,y3}都是△的覆蓋
2.4 匹配與覆蓋的關係
就像上面的兩個定義一樣,一個是從邊給出約束條件(匹配),一個是從結點給出約束條件(覆蓋),但是都是對於一張二分圖的描述,那麼這兩個之間存在什麼關係呢?
我們拍腦袋想嘛,應該是匹配的邊的數量一般會小於覆蓋的節點數(因爲這是簡單圖,一個邊只能有2個節點,但是節點可以有多個邊),而且,匹配的邊一般是二分圖的邊的子集,而覆蓋的結點多半會有重複的,也就是存在冗餘。
因此,如果以匹配的最大邊數爲匹配數,以覆蓋的最小節點數爲覆蓋數,則其兩者相等。
數學就是,來一個定理,就要給出證明。這是個兩個數相等的證明,一般證明使用“夾逼”方法。
1)首先證明匹配數α≤覆蓋數β
設M是二分圖的最大匹配,S爲二分圖的最小覆蓋。由於M中沒有兩邊存在公共節點,並且M中的α條邊每邊至少有一個結點在S中,所以α≤β。後半句容易理解,因爲每條邊至少會有一個節點在S中,否則S就不是覆蓋了。而前半句旨在說明α是不重不漏計數的,因此後半句才能夠成立。
2)接着證明匹配數α≥覆蓋數β
由第一節中相異代表系最大子集數推論(6.1.1)可知,一定存在整數k,選擇i1,i2,...,ik使得∣Ai1∪Ai2∪...∪Aik∣+(n−k)=α
然後,考慮證明T=(Ai1∪Ai2∪...∪Aik)∪(X−{i1,i2,...,ik})爲覆蓋即可。可從兩個方面考慮,任取一條邊[x,y].
一、當x∈{i1,i2,...,ik}時,存在一個點x=il,使得y∈Ail,從而y∈T.
二、當x∈X−{i1,i2,...,ik}時,則x∈T。
這樣[x,y]都在T中,又因爲
∣T∣=∣Ai1∪Ai2∪...∪Aik∣+∣X−{i1,i2,...,ik}∣
=∣Ai1∪Ai2∪...∪Aik∣+(n−k)=α
因此T是具有α個節點的覆蓋,而β是最小覆蓋,因此α≥β
綜上所述α=β
3. 二分圖的匹配算法
蓋飯算法是來判斷一個二分圖的匹配M是否是最大匹配。如果不是,如何修改M得到更多的匹配,依此循環從而獲得最大匹配。
3.1交錯鏈
由於交錯鏈有一個特性即在關於M的交錯鏈中,不在M中的邊數比在M中的邊數多1,因此當我們反轉其邊時,就可以獲得更多的邊了。
首先給出基本鏈的定義:
基本鏈有一些性質:
若n爲偶數,則基本鏈的邊數爲偶數,此時頭結點u0和尾結點un同屬於X或同屬於Y
若n爲奇數,則基本鏈的邊數爲奇數,此時頭結點u0和尾結點un分別屬於X和Y。
正是有這樣的特殊性質,纔有了交錯鏈的存在:
例如:
經過這一次變換,就增加了一條邊在M中,現在有4條邊了。但是有5個節點,因此接下來,還可以再試一把。
有了交錯鏈就可以找到最大匹配了。
有了定理,本來是該高興的事,但是有定理就要證明。
首先證明必要性,即若M是具有最大邊數的匹配,則不存在關於M的交錯鏈(==>)。
如圖所示,假設存在r是M的一個交錯鏈,則∣N0∣=∣M0∣+1,令M′=(M−M0)∪N0,由於N0和(M−M0)都是而二分圖的一個匹配,如果M−M0與N0沒有公共節點,那麼M′就是比M多1條邊的匹配。
下面證明M−M0與N0沒有公共節點,設[x,y]∈N0。
1)若[x,y]是首邊(或尾邊),如圖所示,x不在M中,y在M中,因此y不在M−M0中,因此[x,y]不在M−M0中。
2)若[x,y]是中邊,則x,y都在M0,顯然不在M−M0中。
綜上所述,M−M0與N0沒有公共節點,因此M′就是比M多1條邊的匹配,與原條件不符,反證結束。
然後證明充分性,如圖所示,在交錯鏈中,紅色的比藍色的多一條邊。
3.2 尋找最大匹配算法
有了上面這條定理,我們就可以實現以下尋找最大匹配的算法了。
這裏我們先給出例子,然後再給出第一步結束的證明。
通過第一步,就可以找到這條紅藍相間的交錯鏈,此時是到第二步停止。我們使用紅色代替藍色,將紅色置爲粗體(在M中),藍色變回正常(不在M中),從而得到新的匹配。
再在M中再執行一次算法,可以得到紅藍邊數相等,此時已經無法繼續增加匹配中邊的數量了,因此此時算法結束,M′爲最大匹配。
雖然我們從直觀上可以發現並不能繼續增加更多的邊了,但是數學上,要講究證明,即證明定理6.3.2。
該定理就是要證明,若S是覆蓋,且∣S∣=∣M∣,則M是最大匹配。
這裏面說的比較拗口,因爲是完全從具體說法上的解釋。在證明第一個時,其反證法主要證明若e=[x,y]不在S中,以兩種情況考慮即e∈M和e∈/M;證明第二個則以x和y兩個角度考慮。其核心是在算法的過程中體現出來的。
3.3 判斷一個圖是否爲二分圖
這裏增加一個題目,就是如何判斷一個圖是二分圖?
當然無腦想法就是暴力解決,按照循環去遍歷不同的劃分使得該圖可以成爲兩部分,再判斷兩部分內部是否有無相連的邊。
但是這樣時間複雜度上至少是O(n3)。如果能先進行一次劃分,再去判斷多好?根據二分圖的性質,在圖中,任意選取一點,將其與其連接的點按照邊數長度奇偶劃分成兩部分,再判斷這兩部分是否內部有相連即可,此時可以減少至O(n2)。當然,也可以使用廣度優先算法[代碼]進行黑白着色,從而判斷一個圖是否是二分圖(時間複雜度也是O(n2))。
當然也可以從,若一個圖不存在奇數環,則該圖是二分圖入手,證明一個圖不存在奇數環即可,這個等價定理還需要證明才能夠實現。