序理论
偏序集合
一个集合 \(P\) 内的 \(\le\) 满足偏序则 \(P\) 为 偏序集合。
\(\le\) 为偏序则其具有 自反性
,反对称性
,递移性
,即对于 \(a,b,c\in P\) ,满足:
- \(a\le a\)
- 如果 $a\le b $ 且 \(b\le a\) ,那么 \(a=b\)
- 如果 \(a\le b\) 且 \(b\le c\) ,那么 \(a\le c\)
当 \(\forall a,b\in P,a\le b\) 或 \(b\le a\) 成立时, 集合 \(P\) 称为 全序集合(或者链)。
打个比方,实数集合就是一个全序集合,以及一个以整除关系定义 \(\le\) 的某个有限整数集合是个偏序集合。
实际上偏序关系可以建成拓扑图,所以全序集合叫链(虽然图上是完全图,但是可以通过链来完全表示偏序关系)。如果偏序集中不存在任何可比的两个元素,我们称之为 反链 。表现在图上为多个单点。
一些概念
对于偏序集合 \(P\):
大与小是一个正好相反的概念,就不多赘述。
最小元素 :满足 \(\forall x\in P,m\le x\) ,则 \(m\) 为最小元素。
极小元素:拓扑图末端元素。满足 \(\forall x\in P,x\le m\) 时 \(x=m\) 成立,则 \(m\) 为极小元素。
打个比方,对于以整除关系定义 \(\le\) 的集合 \(S=\{2,3,4,5,6\}\) ,有极小元素 \(2,3,5\) 和极大元素 \(4,5,6\)。
Dilworth定理
偏序集能划分成的最少的全序集的个数等于其最大反链的元素个数。
即:
最小链覆盖=最长反链长度
最小反链覆盖=最长链长度
证明:
结论的话画画图就知道了,比较显然。\(n\) 个互相没有偏序关系的点至少要用 \(n\) 个全序集合才能囊括,由于 \(n\) 是最长反链长度,那么此时使用这 \(n\) 个全序集合已经覆盖全图,即为最小链覆盖。
第二个结论只需要每条链上拿出一个放到一个反链,一直放直到放完,这样保证了每次覆盖的数量尽可能多。
一些应用
经典题,第一问就是最长不增子序列,第二问要求最少将序列划分为多少个非递增序列。我们考虑怎么搞第二问。
我们刚证明了最小链覆盖=最长反链覆盖。我们对于 \(\ge\) 建立拓扑图,那么找到最长上升子序列就是最长反链。只需要求最长上升子序列即可。
求最小不降子序列覆盖及其方案。转换成求最长下降子序列覆盖。然后考虑如何构造方案。也简单,直接就是以当前字符为结尾的最长下降子序列长度即可。
直接找最长反链长度=最小链覆盖。用 \(floyd\) 跑一下把拓扑图补成偏序关系图。然后直接二分图匹配即可。