一个老坑的补 | Dilworth 定理

主要参考:浅谈Dilworth定理 - cmwqf

「启」

想起来这个定理,是因为我在古远的时候(大约今年 \(3\) 月?)遇到了但是没有进一步了解,今天突然又看到导弹拦截这道题,于是就想把它进一步里了解一下。

「定理内容」

偏序集上最小链划分中链的数量等于其反链长度的最大值。

一看,偏序集,最小链划分,反链,都不会(

于是下面开始逐一理解 看 定 义

「偏序集」

定义一种比较关系使得两种元素进行比较,比如我们定义 \(x \operatorname{Aqua} y\) 当且仅当 \(x,y\in Z\)\(x \le y.\)

显然 \(x\)\(y\) 都满足 \(\in Z\) 的时候她们两个是可比的,否则若有一个不满足,我们则称这两个元素不可比。

那么偏序集 \(S\) 就定义为满足以下性质的允许存在不可比元素的集合:

  1. 自反性:\(\forall x \in S,x \le x;\)

  2. 对称性:\(\forall x,y \in S,x \le y \Rightarrow y \ge x;\)

  3. 传递性:\(\forall x,y,z \in S,x \le y,y \le z \Rightarrow x \le z.\)

「链划分」

若我们把满足 \(x,y \in S,x \le y\)\(x,y\) 之间建立一条 \(x \to y\) 的边,那么显然的是偏序集是一张 DAG.

\(S\) 中的元素划分为若干条链,使得每个元素都在且仅在唯一的一条链中,叫做链划分

「反链」

链是 DAG 上的某条路径上的元素,而反链和链的定义恰好相反,对于一个集合,它是反链当且仅当这个集合里的元素两两都是不可比的,即这个集合中的元素两两不连通。

也就是说,我们将一个偏序集 \(S\) 划分为若干个小集合,使得每个小集合里的元素构成一条链,这个最小的划分数量,等于这个偏序集最长的反链的长度。

然后就能利用这个来做一些看起来很难的题。

以下摘自我的杂题记录。

「例题」

好喵一题。

其实做这道题只是在看自己之前的博客的时候想起来之前有个 Dilworth 定理,然后就随着一个博客(浅谈Dilworth定理 - cmwqf)学习的时候,找到了这道题。

众所周知题目名字里有啥,这道题就不用啥做,所以这道题用不到组合数学(

我们把这道题中的每个点 \((i,j)\) 拆成 \(val(i,j)\) 个点,然后把能够到达的点之间连边,最后变成了一个 DAG,题目所求就是求这个图的最小链的划分,根据 Dilworth 定理,这个 DAG 的最小链划分就等于它的最长反链的长度。

按照我们建图的操作来说的话,这个反链就是说的最长的不能到达的链,也就是说要求每个点的右上和左下矩阵中点权值的最大值,于是直接 DP 即可。

for(int i(1);i<=n;++i)
    for(int j(m);j;--j)
    {
        f[i][j]=f[i-1][j+1]+a[i][j];
        f[i][j]=Hmax(Hmax(f[i][j],f[i-1][j]),f[i][j+1]);
    }

答案即为 f[n][1].

posted @ 2021-12-10 13:59  HerikoDeltana  阅读(89)  评论(0编辑  收藏  举报