Dilworth定理学习笔记

最近做了两道题,都涉及到了这个定理,虽然我都没有用,不过学会这个定理确实有很多好处。

第一道是[TJOI2015] 组合数学,让你在一个矩阵中用最少的只能往右和往下的路径覆盖掉全部的点(点有权值)。这道题我一开始是用贪心做的,思考时模拟路径变化的过程其实挺复杂的,但是我做的时候总是隐隐约约的感觉有一种很好的性质,但是找不到。后面看了题解,发现用了Dilworth定理就能直接把DAG上的最小覆盖转换成最大独立集,在这一道题目中就是左下和右上的两个点,确实很厉害。

然后我学了一下Dilworth定理的证明。

首先是偏序集的定义:
对于集合 A A A给定一个关系 R R R(表达元素间的这个关系可以记做 a R b aRb aRb),若 R R R满足(默认元素均 ∈ A \in A A):
1. a R a aRa aRa(自反性)
2.若 a R b , b R a aRb,bRa aRb,bRa存在,当且仅当 a = b a=b a=b(反对称性)
3.若 a R b , b R c aRb,bRc aRb,bRc,则有 a R c aRc aRc(传递性)、

则R是A上的偏序关系,R和A一起称为一个偏序集。

然后是链和反链的定义:
1.链,指一个集合 S ⊆ A S \subseteq A SA,它的任意两个元素可比(指存在关系)。
2.反链,指一个集合 S ′ ⊆ A S' \subseteq A SA,它的任意两个元素不可比。

而Dilworth定理就是:对于一个偏序集,其最少反链划分=最大链,最少链划分=最大反链。

我们只需要证明第一条:最少反链划分=最大连,就能够通过“反向”定义偏序集得到。

定义最少反链划分数 p p p,最大链大小 r r r,偏序集 X X X

Lemma1. p > = r p>=r p>=r
Proof.由于链中元素都两两可比,所以它们之间都不会被划分在同一个反链中,显然得证。

下面定义极小元的概念:在偏序集 X X X中,对于某个元素 A A A,如果不存在 B B B,使得 B R A BRA BRA,那么元素 A A A则视为极小元。

Lemma2. r > = q r>=q r>=q
Proof.设 X 1 = X X_1=X X1=X,在 X 1 X_1 X1中删去极小元集合 A 1 A_1 A1得到 X 2 X_2 X2,以此类推,令 X k X_k Xk非空而 X k + 1 X_{k+1} Xk+1为空。

显然 A 1 , A 2 , A 3 , . . . , A k A_1,A_2,A_3,...,A_k A1,A2,A3,...,Ak X X X反链划分的一种,因此有 k > = q k>=q k>=q;且注意到对于 X i ( i > 1 ) X_i(i>1) Xi(i>1)中的任意元素 a i a_i ai,比存在 X i − 1 X_{i-1} Xi1中的元素 a i − 1 a_{i-1} ai1,使得 a i − 1 R a i a_{i-1}Ra_i ai1Rai,因此存在连 S = a 1 , a 2 , . . . , a k , R S={a_1,a_2,...,a_k,R} S=a1,a2,...,ak,R(根据传递性)。由于 r r r是最长链,因此有 r > = k r>=k r>=k。引理于是得证。

第二题是ICPC2023合肥的B题,题目里面问有多少种序列能够通过两个队列排好序,我们把偏序定义为若 i < j , a i < = a j i<j,a_i<=a_j i<j,ai<=aj i R j iRj iRj,这样就能转换成序列列的最长下降子序列不超过。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值