Dilworth 定理
Dilworth 定理:对于任意有限偏序集,其最大反链中元素数目等于最小链划分中链的数目。
前置知识
-
二元关系:设
P 为非空集合,若\preceq \ \subseteq P\times P (即\preceq 为关于P 的有序对集合),又有(a,b)\in R ,则称a,b 满足关系\preceq ,记为a\preceq b 。 -
偏序关系:设
P 为非空集合,对于任意一个二元关系\preceq\ \subseteq S\times S ,如果它满足下面的三条公理,我们称这样的二元关系为偏序关系。- 对所有的
x\in P ,x\preceq x (自反性) - 如果
x\preceq y 且y\preceq x ,则x=y (反对称性) - 如果
x\preceq y 且y\preceq z ,则x\preceq z (传递性)
- 对所有的
-
偏序集:设
P 为非空集合,连同一个记为\preceq 的偏序关系,这样的偏序关系和集合为偏序集,记为(P,\preceq) 。 -
可比:设偏序集
(P,\preceq) ,对于P 中的两个元素x,y ,若x\preceq y 或y\preceq x ,则称x,y 是可比的。 -
不可比:设偏序集
(P,\preceq) ,对于P 中的两个元素x,y ,若即不满足x \preceq y ,也不满足y\preceq x ,则称x,y 是不可比的。 -
覆盖:设偏序集
(P,\preceq) ,对于P 中的两个元素x,y ,若x\preceq y 且不存在z\in P ,并且z\neq x,z\neq y ,使得x\preceq z\preceq y ,则称y 覆盖x 。 -
Hasse 图:设偏序集
(P,\preceq) ,有限偏序集的Hasse 图是指顶点为P 中元素,边为覆盖关系,并且若x\preceq y ,y 画在x 上方(具有更高的纵坐标)的图形。不难发现,若将所有边都指向靠下的点,Hasse 图就变为了一张有向无环图。 -
链:任意两个元素都可比的偏序集。又称为全序集。
-
反链:任意两个元素都不可比的偏序集,又称为 Sperner 族。
-
最小链划分:将偏序集
(P,\preceq) 划分为若干条互不相交的链,使得链的数目最小化。证明
记偏序集
当
当
1.存在最长反链
2.若每一条最长反链
对偶形式
对于某一有限偏序集,其最长链大小等于最小反链划分中反链的数目。
证明:
记最小反链划分中反链的数目为
当
当
容易发现的是这些点必然相互不可比,记这些点构成的集合为
由该定理出发,我们去探究算法竞赛中一类经典的问题,最长上升子序列问题。
最长上升子序列问题
给定一个序列
- 一个朴素的
dp 方程为,dp_i 表示以a_i 结尾的最长链长度是多少。转移很容易,dp_i=\max(dp_j)+1 ,其中j<i ,a_j<a_i ,这是一个二维偏序问题,可以用树状数组在O(n \log n) 的时间内很轻松的解决。 - 上述的
dp 方程是在固定结尾元素,最优化链的长度。现在我们换一个方向,我们固定链的长度,最优化结尾元素,dp_i 表示长度为i 的链,结尾元素最小是多少。不难注意到,dp_i 是单调递增的。每次更新,我们从左向右,找到最后一个小于a_i 的位置p ,令dp_{p+1}\leftarrow a_i 即可。
这两种
构造方案
给定一个序列
在这个问题中,链为不严格上升子序列,反链为严格下降子序列。
最小链划分等于最长反链的大小,我们考虑在求最长反链的过程中构造方案。