這是一個關于偏序集的定理,事實上它也可以擴展到圖論,dp等中,是一個很有意思的東西
偏序集
偏序集是由集合 S S S以及其上的一個偏序關系 R R R定義的,記為 ( S , R ) (S,R) (S,R)
偏序關系:
對于一個二元關系 R ? S × S R\subset S\times S R?S×S,如果其滿足:
- ? x ∈ S , x R x \forall x\in S,xRx ?x∈S,xRx 自反性
- ? x , y ∈ S \forall x,y\in S ?x,y∈S,若 x R y xRy xRy且 y R x yRx yRx,則 x = y x=y x=y 反對稱性
- x R y , y R z → x R z xRy,yRz\rightarrow xRz xRy,yRz→xRz 傳遞性
顯然自然數集 N N N以及最常見的小于等于關系 ≤ \leq ≤, ( N , ≤ ) (N,\leq) (N,≤)就構成了一個偏序集
事實上 ( N ? , ∣ ) (N^*,|) (N?,∣)也是一個偏序集,其中 ∣ | ∣表示正整數的整除關系
以下為了討論方便,我們將 R R R簡記為 ≤ \leq ≤,當然它可以指代小于等于關系之外的其它關系
此外, ? x , y ∈ S \forall x,y\in S ?x,y∈S,如果 x ≤ y x\leq y x≤y或 y ≤ x y\leq x y≤x,那么我們就說它們是可比的,否則說它們是不可比的
定義完了偏序集,我們可以從圖上來看看它具體的樣子
哈斯圖(Hasse 圖)
考慮一個偏序集 ( S , ≤ ) (S,\leq) (S,≤), ? x , y ∈ S \forall x,y\in S ?x,y∈S,如果 x ≤ y x\leq y x≤y且不存在 z S . T . x ≤ z ≤ y z\ S.T. \ x\leq z\leq y z?S.T.?x≤z≤y,我們稱為 y y y覆蓋 x x x,那么此時我們就連一條從 x x x指向 y y y的有向邊,最后得到的圖就稱為這個偏序集 ( S , ≤ ) (S,\leq) (S,≤)的Hasse圖
比如下圖是 x , y , z {x,y,z} x,y,z的冪集關于包含關系得到的Hasse圖
由于偏序關系滿足了反對稱性,所以Hasse圖里面一定沒有自環(否則就會合并成一個點),所以我們可以說Hasse圖一定是一張DAG
其它偏序集的前置芝士
還是記我們要討論的偏序集為 ( S , ≤ ) (S,\leq) (S,≤)
鏈:
偏序集中的一個全序子集。形式化地說,若集合 C ? S C\subset S C?S,且 ? a , b ∈ C \forall a,b\in C ?a,b∈C, a , b a,b a,b是可比的,那么 C C C就是 S S S的一個鏈
鏈這個名字起的就很有水平,因為我們不難發現,偏序集中的一個全序子集,其在Hasse圖中似乎就一定表現為一條鏈。比如上圖中的 { { x , y , z } , { x , z } , { x } , { ? } } \{\{x,y,z\},\{x,z\},\{x\},\{\phi\}\} {{x,y,z},{x,z},{x},{?}}就是一個全序子集,在圖中剛好也表現成一條鏈。但我沒有嚴格證明,這邊擱置。
類似地,我們定義一個反鏈
反鏈:
若集合 C ? S C\subset S C?S,且 ? a , b ∈ C \forall a,b\in C ?a,b∈C, a , b a,b a,b是不可比的,那么 C C C就是 S S S的一個反鏈
在圖上看的話, { { x } , { y } , { z } } \{\{x\},\{y\},\{z\}\} {{x},{y},{z}}就是一個反鏈
深度:
最長鏈大小
寬度:
最長反鏈大小
以上兩個定義也是相當的形象。因為我們不難發現,如果把Hasse圖按照偏序關系從低到高排列的話,鏈在圖中往往就是一條豎著的,而反鏈是橫著的,由此給出如上定義
最小鏈劃分:
將集合 S S S劃分為最少的若干個不相交的鏈
最小反鏈劃分:
將集合 S S S劃分為最少的若干個不相交的反鏈
Dilworth 定理
現在可以給出Dilworth 定理的具體內容了
Lemma1 對于任意有限偏序集,其最長反鏈大小必等于最小鏈劃分中鏈的數目
其對偶形式也成立:
Lemma2 對于任意有限偏序集,其最長鏈大小必等于其最小反鏈劃分中反鏈的數目
以下討論均假定偏序集有限
總結以下:
最小鏈劃分 = 最長反鏈大小 = 偏序集寬度
最小反鏈劃分 = 最長鏈大小 = 偏序集深度
先來證Lemma2:
記定理中的最長鏈大小為n,我們對n做數學歸納法
顯然n=1時定理成立
若n=k時定理成立,我們來證 n=k+1時定理成立
此時偏序集中的最長鏈長度為k+1,我們取出集合 S S S的所有極大元,組成集合 M M M,顯然 M M M是一個反鏈,并且考慮 S ? M S-M S?M,其最大鏈長一定為k(因為取出了所有的極大元),根據之前的歸納假設, S ? M S-M S?M的最小反鏈劃分數目為 k,再加上M自己是一個反鏈,從而此時S的最小反鏈劃分數為 k+1 = 最長鏈長度 □ \square □
再來看Lemma1:
考慮偏序集 ( S , ≤ ) (S,\leq) (S,≤),記 ∣ S ∣ = m |S|=m ∣S∣=m,我們對m進行歸納
m = 1 m=1 m=1時Lemma1顯然成立
若 m = k m=k m=k時定理成立,我們來證 m = k + 1 m=k+1 m=k+1時定理成立:
設 A A A是集合 S S S的一條最長反鏈,記為
A = { a 1 , a 2 , . . . a w } A = \{a_1,a_2,...a_w\} A={a1?,a2?,...aw?}
其中 ∣ A ∣ = w |A|=w ∣A∣=w
我們取
D ( A ) = { x ? A ∣ ? α ∈ S , x ≤ a } D(A) = \{x\notin A|\exists \alpha \in S,x\leq a\} D(A)={x∈/A∣?α∈S,x≤a}
U ( A ) = { x ? A ∣ ? α ∈ S , a ≤ x } U(A) = \{x\notin A|\exists \alpha \in S,a\leq x\} U(A)={x∈/A∣?α∈S,a≤x}
顯然 D ( A ) ? U ( A ) ? A = S D(A)\bigcup U(A)\bigcup A = S D(A)?U(A)?A=S
若存在最長反鏈 A A A使得 D ( A ) , U ( A ) D(A),U(A) D(A),U(A)均非空:
A A A是 S S S的最長反鏈,故 A A A也是 A ? D ( A ) A\bigcup D(A) A?D(A)的一個最長反鏈。注意到 ∣ U ( A ) ∣ ≥ 1 |U(A)|\geq 1 ∣U(A)∣≥1,故 ∣ A ? D ( A ) ∣ ≤ k |A\bigcup D(A)|\leq k ∣A?D(A)∣≤k,從而由歸納假設, A ? U ( A ) A\bigcup U(A) A?U(A)可以劃分為 w w w條鏈 c 1 , c 2 , . . . c w c_1,c_2,...c_w c1?,c2?,...cw?,其中 c i c_i ci?的極大元是 a i a_i ai?.(這一點顯然)
同理, A ? D ( A ) A\bigcup D(A) A?D(A)也可以劃分為 w w w條鏈 d 1 , d 2 , . . . d w d_1,d_2,...d_w d1?,d2?,...dw?,其中 d i d_i di?的極小元是 a i a_i ai?
從而,我們就可以將 S S S劃分為 w w w條鏈: c 1 ∪ d 1 , . . . . c w ∪ d w c_1\cup d_1,....c_w\cup d_w c1?∪d1?,....cw?∪dw?
若對于任意最長反鏈 A A A,都有 D ( A ) = ? D(A)=\phi D(A)=?或 U ( A ) = ? U(A)=\phi U(A)=?
由假設,任一條反鏈 A A A必定構成全上界或者全下界。在 S S S中選一個極大元 y y y,再選一個極小元 x x x滿足 x ≤ y x\leq y x≤y, { x , y } \{x,y\} {x,y}構成一條鏈 C C C,從而在集合 S ? C S-C S?C中,任一條最長反鏈的大小為 w ? 1 w-1 w?1(必定去除了一個元素),從而根據歸納假設, S ? C S-C S?C的最小鏈劃分數為 w ? 1 w-1 w?1,再加上 C C C自己是一條鏈,故 S S S的最小鏈劃分數為 w w w
□ \square □
應用舉例
求一個序列的最大非遞增序列長度以及其最少可以劃分為多少個非遞增序列
考慮由(位置,元素大小)這個二元組組成的集合,再定義一個偏序關系 < < <:
a < b a<b a<b當且僅當 a a a的位置< b b b的位置且 a a a的值 < b <b <b的值
從而這就構成了一個偏序集 ( s , < ) (s,<) (s,<),并且要求的分別就是集合的最長反鏈以及最小反鏈劃分數
第一個問題可以直接dp即可,第二個問題,根據Dilworth 定理,實際上就是求偏序集的最長鏈大小,實際上也就是序列的LIS,非常妙的一個轉化。
與DAG
之前說過,Hasse圖就是一個DAG,而反過來,我們將DAG的點作為集合 S S S的元素,將偏序關系 ≤ \leq ≤定義為點之間的可達性,就定義了一個偏序集 ( S , ≤ ) (S,\leq) (S,≤)
從而DAG上的最小可重路徑覆蓋(要求覆蓋所有點)就等價于偏序集 ( S , ≤ ) (S,\leq) (S,≤)上的最小鏈覆蓋
同理,將DAG上的有向邊作為集合 T T T的元素,將偏序關系 ≤ ′ \leq' ≤′定義為邊之間的可達性,就得到的另一個偏序集 ( T , ≤ ′ ) (T,\leq') (T,≤′)
從而DAG上的最小可重路徑覆蓋(要求覆蓋所有邊)就等價于偏序集 ( T , ≤ ′ ) (T,\leq') (T,≤′)上的最小鏈覆蓋
Erd?s–Szekeres 定理
含至少 r s + 1 rs+1 rs+1個元素的實數序列 { a } \{a\} {a}要么有一個長為 r + 1 r+1 r+1的不下降子序列,要么有一個長為 s + 1 s+1 s+1?的不上升子序列
Proof:
設序列長度為 n ≥ r s + 1 n\geq rs+1 n≥rs+1,定義偏序集 { ( i , a i ) } i = 1 n \{(i,a_i)\}_{i=1}^{n} {(i,ai?)}i=1n?,其上的偏序關系 ≤ \leq ≤定義為:
( i , a i ) ≤ ( j , a i ) ? ( i ≤ j ∧ a i ≤ a j ) (i,a_i)\leq (j,a_i)\Leftrightarrow (i\leq j \ \wedge \ a_i\leq a_j) (i,ai?)≤(j,ai?)?(i≤j?∧?ai?≤aj?)
假設該偏序集的寬度 ≤ s \leq s ≤s,則由Dilllworth定理可知其最小鏈覆蓋數 ≤ s \leq s ≤s,若這些鏈的長度都 ≤ r \leq r ≤r,則總元素數 ≤ r s < r s + 1 ≤ n \leq rs< rs+1\leq n ≤rs<rs+1≤n
矛盾。
□ \square □