離散結構:圖論進階
一、匹配
1.0 引論
設 G=(V, E) 是簡單圖, M E。 如果 M 中任何兩條邊都不鄰接, 則稱 M 爲 G 中的一個匹配(matching)或邊獨立集
設頂點 v V, 若存在 e M, 使得 v 是 e 的一個端點, 則稱 v 是 M-飽和的(matched or saturated) , 否則稱 v 是 M-非飽和的(unmatched)。
例子如下所示:
{v2, v4, v5, v6}是M-飽和頂點 {v1, v3}是M-非飽和頂點 |
若匹配 M 滿足對任意 e E - M, M∪{e} 不再構成匹配,則稱 M 作 G 的一個極大匹配(maximal matching)
如果圖 G 的匹配 M 滿足對於 G 的任何匹配 M’ 都有 |M| |M’|, 則稱 M 是 G 的一個最大基數匹配(maximum-cardinality matching ) 或 最大匹配(maximum matching)
最大匹配 M 的元素數稱作圖 G 的匹配數(matching number) , 記作 v (G)
飽和圖 G 中每個頂點的匹配稱作完全匹配(complete matching) 或完美匹配(perfect matching)
例子如下:
性質:
(a) 極大匹配不是任何其他匹配的子集
(b) 若匹配 M 是 G 的一個極大匹配, 則對於任意e E - M, 都存在 e1 M, 使得 e 與 e1 相鄰
(c) 一個圖中的極大匹配可能不唯一
(d) 一個圖中的最大匹配可能不唯一
(e) 每個最大匹配都是極大匹配, 但不是每個極大匹配都是最大匹配
(f) 顯然圖 G 的匹配數不超過 G 的階數的一半
(a) 在完美匹配中, 每個頂點都關聯匹配中的一條邊
(b) 如果圖 G 存在完美匹配, 則圖 G的匹配數爲 G 的階數的一半, 此時的階數爲偶數
(c) 每個完美匹配都是最大匹配, 但不是每個最大匹配都是完美匹配
例
- 完全圖 Kn(n 3) 中匹配數爲
- 完全二部圖 Km, n 的匹配數爲 min(m, n)
- 圈圖 Cn(n 3) 的匹配數爲
1.1 伯奇引理 Berge's lemma
該引理用來判斷是否爲最大匹配的伯奇引理。
設 M 是 G 中一個匹配, 若 G 中一條初級道路是由 M 中邊和 EM 中邊交替出現組成的, 則稱其爲交錯道路(alternating path),若一條交錯道路的始點和終點都是M-非飽和頂點, 則稱其爲M-可增廣道路(augmenting path),
易知可增廣道路的長度一定是奇數。
定理(伯奇引理)
匹配 M 爲圖 G=(V, E) 的最大匹配當且僅當 G 中不存在 M-可增廣道路。(證明略)
1.2 最大匹配構造算法 Algorithm on Constructing Maximum Matching
基於伯奇引理, 可以給出求二部圖中最大匹配的算法, 其基本思想是:
從任何一個初始匹配開始, 不斷尋找可增廣道路從而擴大匹配的基數, 直至不能再擴大爲止。
爲表述該算法, 首先補充一個定義。
設 W 是圖 G 的頂點集的一個子集, 則(W) = { v | 存在u W,使得u與v相鄰 } 稱作 W 的鄰接頂點集(neighborhood of W)
算法描述如下:
1.3 霍爾定理 Hall's Theorem
霍爾(Philip Hall) 曾研究二部圖中的匹配, 並於1935年提出了著名的“霍爾婚配定理(Hall's marriage theorem) ” ,或簡稱“霍爾定理(Hall's theorem) ”
設 G=(X, Y, E) 爲二部圖, G 中存在飽和 X 中每個結點的匹配 M(即 |M| = |X| )
當且僅當對任何非空集合 S X, |(S)| |S|
該條件表示任意子集 S 都有足夠多的相鄰頂點
定理
設 G = (X, Y, E) 爲二部圖, G 中存在飽和 X 中每個頂點的匹配 M 當且僅當對任何非空集合S X, |(S)| |S|
推論1
設 G=(X, Y, E) 爲二部圖, 若存在正整數 k, 使得對任意 xX, 有 deg(x) k, 對任意 yY, 有deg(y) k, 則 G 中存在飽和 X 中每個頂點的匹配。
推論2
對任意正整數 k, k-正則二部圖中必定存在飽和 X 中每個頂點的匹配。
1.4 拉丁方 Latin square
例子引入:
稱每行及每列都包含給定的 n 符號恰 1 次的一個 n×n 矩陣爲拉丁方(Latin square)
例:
- 著名數學家和物理學家歐拉最早研究了這樣的方陣, 他使用拉丁字母來作爲方陣裏元素的符號, 拉丁方因此而得名
- 拉丁方不僅影響着統計學實驗設計, 而且出現在離散數學及代數的許多不同領域中
- 一般來說, 設 S={1, 2,…, n}, 構造 S 上 n 階拉丁方的主體思路就是逐行生成:例子如下
1.5 邊覆蓋集 Edge Cover Set
設 G(V, E) 是沒有孤立頂點的簡單圖, E E
- 如果對於任意 v V, 都存在 e , 使得 v 是 e 的一個端點, 則稱 爲 G 的一個邊覆蓋集, 簡稱邊覆蓋(edge cover)
- 若 是圖 G 的邊覆蓋, 且 的任何真子集都不再是邊覆蓋, 則稱E 爲一個極小邊覆蓋(minimaledge cover)
- 如果圖 G 的邊覆蓋 滿足對於 G 的任何邊覆蓋 E ’ 都有 || |E ’|, 則稱 是 G 的一個最小邊覆蓋(minimum edge cover)
- 最小邊覆蓋 的元素數稱作圖 G 的邊覆蓋數(edge covering number) , 記作 (G)。例子如下
性質:
(a) 顯然有孤立頂點的簡單圖不存在邊覆蓋
(b) 極小邊覆蓋 中任何一條邊的兩個端點不可能都與 中其他邊相關聯
(c) 明顯有 (G) | V | / 2
(d) 一個圖中的極小邊覆蓋可能是不唯一的
(e) 一個圖中的最小邊覆蓋可能是不唯一的
(f) 每個最小邊覆蓋都是極小邊覆蓋, 但不是每個極小邊覆蓋都是最小邊覆蓋
定理
設 G(V, E) 是沒有孤立頂點的簡單圖,M 爲 G 的一個匹配, N 爲 G 的一個邊覆蓋, 則 |N| (G) |V|/2 v (G) |M| ;
且當等號成立時, M 爲 G 的一個完美匹配, N 爲 G 的一個最小邊覆蓋。
定理
設 G(V, E) 是沒有孤立頂點的簡單圖則有:
設 M 爲 G 的一個最大匹配, 對 G 中每一個M-非飽和頂點均取一條與其關聯的邊, 組成集合 N,
則 M∪N 構成 G 的一個最小邊覆蓋。
定理
設 G(V, E) 是沒有孤立頂點的簡單圖則有:
- 設 M 爲 G 的一個最大匹配, 對 G 中每一個M-非飽和頂點均取一條與其關聯的邊,組成集合 N, 則 M∪N 構成 G 的一個最小邊覆蓋。
- 設 N 爲 G 的一個最小邊覆蓋, 若 N 存在相鄰的邊則移去其中一條, 直至不存在相鄰的邊爲止, 構成的邊集合 M 則爲 G 的一個最大匹配
定理
設 G(V, E) 是沒有孤立頂點的簡單圖則有
- 設 M 爲 G 的一個最大匹配, 對 G 中每一個M-非飽和頂點均取一條與其關聯的邊,組成集合 N, 則 M∪N 構成 G 的一個最小邊覆蓋
- 設 N 爲 G 的一個最小邊覆蓋, 若 N 存在相鄰的邊則移去其中一條, 直至不存在相鄰的邊爲止, 構成的邊集合 M 則爲 G 的一個最大匹配
- (G) + v (G) = |V |
1.6 柯尼希-艾蓋爾瓦里定理 Kö nig-Egervá ry Theorem
定理1
假設 K 爲沒有孤立頂點的簡單圖 G 的任意一個點覆蓋集, M 爲 G 的任意一個匹配, 則 |M| |K|。特別是 v (G) (G)
推論
假設 K 爲沒有孤立頂點的簡單圖 G 的任意一個點覆蓋集, M 爲 G 的任意一個匹配, 若 |M|=|K|,則 M 是一個最大匹配, K 是一個最小覆蓋。
證明: 由 |M| v (G) (G) |K| 即得
定理2(柯尼希-艾蓋爾瓦里定理, KönigEgerváry theorem)
二部圖中最大匹配的邊數等於最小點覆蓋數的頂點數。(證明略)
柯尼希-艾蓋爾瓦里定理還可以從另一個角度來描述:
- 所謂布爾矩陣的覆蓋, 是指選擇了矩陣中某些行與列, 這些行與列包含了矩陣中的所有非零元“1”。 稱能覆蓋全部非零元的最少行、 列數之和爲最小覆蓋數,記爲 S
- 對於任一個 mxn 布爾矩陣中, 如果蓋住了全部 m 行或全部 n 列, 就會蓋住全部非零元。 因此顯然有 S≤min(m, n)
- 容易看出, 每個布爾矩陣都可以看爲二部圖的矩陣形式, 而每個覆蓋都對應於二部圖中的一個點覆蓋。
- 定義mxn布爾矩陣的秩(term rank) 爲矩陣中不在同行同列的1元素的最大個數,易見它的秩小於min(m, n), 而且二部圖的矩陣形式的秩就是最大匹配數
- 則定理2也可以等價表述爲:布爾矩陣的秩等於其最小覆蓋數
由是, 如果將布爾矩陣和二部圖(的矩陣形式) 視爲等同, 則二部圖的最大匹配數、 二部圖的點覆蓋數、 布爾矩陣的秩、 布爾矩陣的最小覆蓋數 4 者相等。
1.7 二部圖中的最佳匹配 Optimal Matching of Bipartite Graph
- 最大匹配、 霍爾定理都是在邊權值爲1(或者說是邊無權值) 的情況下的匹配問題, 但在實際應用問題中——
- 不同的人從事不同工作時可能具有各不相同的效益或者成本, 於是在人員工作安排時,不僅要求每個人有工作可做, 而且還進一步要求總的工作效益最高或者成本最小
- 此時人員和工作可以形成一個二部圖, 而效益或者代價可以作爲邊的權值, 之後尋找權值總和最大或最小的最大匹配。
二、流網絡
2.1 引言
引例:
一個地區的供水管線圖:
|
|
一個地區的各條主幹道
|
上述這一類問題都可以用一個統一的模型來描述:
假設 G = ( V, E ) 是一個連通無重邊且不包含自環的有向圖。 如果 G 中
(1) 只有一個入度爲0的頂點, 記之作 s, 稱作源(sourse)
(2) 只有一個出度爲0的頂點, 記之作 t, 稱作匯(sink)
(3) 每條有向邊 e = ( u, v ) 都存在一個非負的權值 cuv,稱作邊的容量(capacity)
則稱 G 是一個網絡(network) 或流網絡(flow network) , 也記作 G = ( V, E, s, t, c )
有向邊也稱作弧(arcs) , 邊 e=(u,v) 通常也記作 uv
注:
- 事實上如果有重邊的話, 將所有重邊的容量求和作爲其中一條邊的總容量並刪除其他重邊, 可以得到等價的網絡圖
- 自環的存在與否不影響問題的分析和求解, 爲簡潔起見要求圖不存在自環。
- 在實際應用中, 有時需要考慮點的權重(例如中轉站的容量上限) , 假設該頂點的容量爲w, 可以通過如圖方式修改
當網絡中出現多個源和匯的時候:
有時網絡 N 中可能有多個源和多個匯, 可以通過下述方式將網絡 N 擴大爲 N’, 將問題轉化爲單個源和單個匯的網絡 N’ 中的最大流問題:
- 增加兩個新的頂點 s 和 t
- 添加 s 到每個源的有向邊
- 添加每個匯到 t 的有向邊
- 並且將足夠大的容量 c0 賦予這些新加的有向邊(通常取 c0 大於每個源發出邊容量之和即可)
- 分別稱 s 和 t 爲超源(super-source)和 超匯(super-sink)
下面來看一個例子:
從城市A到城市C可以直達也可以途徑城市B。在下午18時到19時晚高峯期間平均行駛時間是: A到B需要15分鐘、 B到C需要
30分鐘、 A到C需要30分鐘。而路的最大容量是: A到B的容量是1000 輛、 B到C容量是1500輛、 A到C容量是 2000 輛。
根據上述描述,並且同時如果在 t1 時刻離開城市 X 並在 t2 時刻到達城市 Y, 則在“X, t1”向“Y, t2”引一條邊,邊的權值是路的容量。其建立的流網絡模型如下所示:
引入一個超源和一個超匯 |
下面我們定義前驅和後繼
假設網絡 G = ( V, E, s, t, c ) 對於頂點 v V, 定義 v 的前驅(predecessor)爲 pred(v) = { u | (u, v) E }, 定義 v 的後繼
(successor) 爲 succ(v) = { u | (v, u) E }
接下來,我們將各個水管中流動的水量抽象爲一個函數 f 。
若實值函數 f : E → R 滿足:
(1) 容 量 限 制 (capacity constraint ) : 對 所 有 e = (u, v) E, 有 ;
(2) 流量守恆(flow conservation) :對所有頂點 v V - { s, t },
- 則稱它是網絡的一個容許流分佈, 或簡稱爲一個流(flow)
- 稱作邊 (u, v) 上的流量
- 如果邊 e = (u, v) 滿足 = , 則稱 e 爲飽和邊。
如下是兩個流。
- 對所有頂點 v V - {s},定義 稱作頂點v的總流入量
- 對所有頂點 v V - {t},定義 稱作頂點u的總流出量
- 流量守恆表明流在除了源和匯的各個頂點, 總流入量等於總流出量, 即既不產生也不消
下面我們定義流量,和最大流
- 設 f 是網絡圖 G 的一個流, 稱作流 f 的流量或者值(value) , 即源 s 的總流出量, 記作 | f | 。
- 若 G 任意一個流 f ’ 都滿足 | f | | f ’|,則稱 f 是 G 的一個最大流(maximumflow)。
- 一般而言,網絡的最大流是不唯一的。
2.2 剩餘圖和可增廣道路 Residual Graph and Augment Path
假設網絡 G=(V, E, s, t, c) 中有流 f , 則可如下定義 G 關於 f 的剩餘圖(residual graph) 爲
= (V, , s, t, c’):
(1) 的頂點集與 G 的頂點集相同;
(2) 的邊集合 有兩類:
{ (u, v) | < } 稱之爲前向邊(forward edge)
{ (u, v) | > 0 }稱之爲後向邊(backward edge)
即 = { (u, v) | < 或 > 0 };
(3) 容量
注:不同的流 f 對應不同的剩餘圖
例子如下:
假設網絡 G = (V, E, s, t, c) 中有流 f,G 關於 f 的剩餘圖中的簡單 s-t 道路 P 稱作可增廣道路(augment path) ,
定義 bottleneck ( P, f ) 爲 P 所經過各邊的最小容量。
可以由增廣道路 P 構造 G 的一個新的流 :
- 可以驗證 f ’ 滿足容量條件和守恆條件
- | f ’| = | f | + bottleneck ( P, f ) > | f |, 流的流量得以提升
2.3 最大流最小割定理 Max-flow Min-cut Theorem
首先,我們來定義割,
在網絡 G=(V, E, s, t, c) 中, 任何一個滿足 s S, t T=V - S 的頂點 V 的劃分 {S, T} 稱作一個 s-t 割(s-t cut) , 簡稱割(cut)
一個 s-t 割的容量(capacity) 定義爲 ,記爲 cap(S, T)
如果圖 G 的 s-t 割 (S, T ) 使得任意一個 G 的 s-t 割 (S’, T ’) 都有 cap( S, T ) cap(S’, T ’),則稱 ( S, T ) 是圖 G 的一個最小s-t割, 簡稱最小割(minimum cut)
一般而言, 網絡的最小 s-t 割不唯一。
下面建立流與割之間的關係, 首先引入一些符號的定義。在網絡 G=(V, E, s, t, c) 中, 假設 A, B 都是 V 的非空子集, 定義
定理 1
假設 G=(V, E, s, t, c) 是一個網絡, 令 f 是一個流, (S, T) 是一個 s-t 割,則通過該割的流量等於由源 s 發出的流量。 即 f(S, T) - f(T, S) = | f | 。 特別地有 f (, t)=| f | 。(證明略)
定理 2
設 G 是一個網絡, 令 f 是 G 的一個流,( S, T ) 是 G 的一個 s-t 割, 則| f | cap( S, T )
推論
設 G 是一個網絡, f 是一個流, ( S, T ) 是一個 s-t 割,則若 | f | = cap( S, T ), 則 f 是一個最大流且 ( S, T ) 是一個最小 s-t 割
福特和福爾克森(Ford-Fulkerson) 1956年得到了可增廣道路定理和最大流最小割定理(max-flow min-cut theorem)
定理3
假設 f 是網絡 G=(V, E, s, t, c) 的一個流,
則以下陳述等價:
(a) f 是一個最大流
(b) 當前 f 的剩餘圖中不存在可增廣道路
(c) 存在 G 的一個 s-t 割 (S, T) 使得 | f | = cap( S, T )
由(a)和(b)的等價性可以給出最大流的構造算法——福特-福爾克森最大流算法(Ford-Fulkerson, 1956),算法實例如下:
最小割 |
如果各邊的容量都是整數, 則每次 “” 的更新都使得流的值至少增加1, 因此算法至多在 次後結束
2.4 網絡最大流的應用 Applications of Maximum Flow
可以將二部圖的匹配問題化爲網絡流圖:
1. 將原圖的所有無向邊改爲有向邊, 由 X 中頂點指向 Y 中頂點; 2. 添加一個超源頂點 s 和一個超匯頂點 t ; 3. 添加 s 到 X 中每個頂點的有向邊, 添加 Y 中每個頂點到 t 的有向邊; 4. 所有有向邊的容量都設置爲1。所得的圖稱作匹配網絡(matching nerwork) |
定理
(a) 可以由匹配網絡的一個流給出 G 的一個匹配, 其中頂點 x X 和 y Y 相匹配當且僅當邊 (x, y) 上的流量是 1
(b) 一個最大流對應於一個最大匹配
(c) 一個值爲 | X | 的流對應於一個飽和 X中每個結點的匹配
舞伴問題(dancing problem, k-正則二部圖的完美匹配) :
一次舞會有 n 個男孩和 n 個女孩, 每名男孩恰好認識 k 名女孩, 每名女孩也恰好認識 k 名男孩(1 k n) , 是否可以安排得當, 使得每人的舞伴都是自己認識的? 也即是否存在k-正則二部圖的完美匹配?
可以證明它是一個值爲 n 的最大流——這就證明 了完美匹配的存在性 |
設 G=(V, E) 是一個有向連通圖, s 和 t 是圖中兩個給定的不同頂點。 在圖中從頂點 s 到頂點 t 的沒有公共邊的初級道路稱爲邊不相交的道路(edge-disjoint paths)
由於要求找到從 s 到 t 的初級道路, 因此可以忽略指向 s 的有向邊和由 t 發出的有向邊、 忽略不是 s 或 t 但入度爲0或出度爲0的頂點,故而可以假定圖中只有一個入度爲0的頂點 s、 只有一個出度爲0的頂點 t, 並給每條有向邊都賦以權值1, 於是形成一個網絡。其中最大流的值就是 s 到 t 的邊不相交道路的最大數目
如果 E’ E, 且滿足每條從 s 到 t 的初級道路都必然包含 E’ 中的邊, 則稱 E’ 是 G 的 st-分離集 (st-disconnectigng set)
其中最大流的值就是 s 到 t 的邊不相交道路的最大數目, 而最小割的容量,則是st-分離集的最少有向邊數
由最大流最小割定理即得到門格定理(Menger, 1927) :
定理
有向圖 D 中的從頂點 s 到頂點 t 的邊不相交有向道路的最大數目等於st-分離集的最少有向邊數