序理论

偏序集合

一个集合 \(P\) 内的 \(\le\) 满足偏序则 \(P\)偏序集合

\(\le\) 为偏序则其具有 自反性反对称性递移性 ,即对于 \(a,b,c\in P\) ,满足:

  1. \(a\le a\)
  2. 如果 $a\le b $ 且 \(b\le a\) ,那么 \(a=b\)
  3. 如果 \(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\) 建立拓扑图,那么找到最长上升子序列就是最长反链。只需要求最长上升子序列即可。

String Coloring

求最小不降子序列覆盖及其方案。转换成求最长下降子序列覆盖。然后考虑如何构造方案。也简单,直接就是以当前字符为结尾的最长下降子序列长度即可。

bzoj1143 祭祀

直接找最长反链长度=最小链覆盖。用 \(floyd\) 跑一下把拓扑图补成偏序关系图。然后直接二分图匹配即可。

posted @ 2022-04-11 18:24  cbdsopa  阅读(242)  评论(0编辑  收藏  举报