Dilworth
Dilworth
定理
偏序集能划分成的最少的全序集个数等于最大反链的大小。
名词解释
偏序
在集合 \(S\) 中定义的二元关系 \(\le\),如果它满足以下三个性质:
- 自反性:\(\forall x\in S\) 有 \(x\le x\)。
- 反对称性:\(\forall x,y\in S\),若 \(x\le y,y\le x\),则有 \(x=y\)。
- 传递性:\(\forall x,y,z\in S\),若 \(x\le y,y\le z\),则有 \(x\le z\)。
则称 \(\le\) 为 \(S\) 中的一个偏序关系,\((S,\le)\) 为一个偏序集。
全序集
对于定义在集合 \(S\) 上的偏序关系 \(\le\),若集合 \(T\) 满足 \(T\subseteq S\),且 \(\forall x,y\in T\) 有 \(x\le y\) 或者 \(y\le x\) 成立,则称 \((T,\le)\) 为一个全序集。
换句话说,全序集就是不包含两个不可比元素的集合。
反链
反链的定义恰恰与全序集相反。
对于定义在集合 \(S\) 上的偏序关系 \(\le\),若集合 \(T\) 满足 \(T\subseteq S\),且 \(\forall x,y\in T\) 有 \(x\le y\) 和 \(y\le x\) 都不成立,则称 \((T,\le)\) 为一个全序集。
换句话说,反链就是元素两两不可比的集合。
证明
不会,略。以后补。
应用情形
一般多元组集合
考虑最简单的二元组,那么得到的结论就是:导弹拦截可以用最长上升子序列求解。
图论模型
考虑定义 \(u\le v\) 当且仅当 \(u\) 可以到达 \(v\)。对于一个 DAG,发现 \(\le\) 是定义在点集 \(V\) 上的偏序关系,那么就有最小路径覆盖等于图上最长反链。在某些题目中,这个定理可以将网络流改为贪心,例如网络流 24 题中的魔术球。
这里附上魔术球的做题记录:
\(n\) 个容器,从 1 开始往容器里放数,要求放的容器为空,或者放的数和容器里上一个放的数的和是完全平方数。问最多能放到多少,并构造方案。
\(n\le55\)
首先,答案必然递增。那么可以二分。如何判断是否可行?发现是最小路径覆盖。同一原理的另一种做法是不二分,每次加入一个点,然后继续跑一次网络流(不清空),第一次遇到容器不够的情况时退出。理论复杂度前者优,实际上后者常数很小。另一种思路是贪心,贪心地加入,能加就加,不能加就开新容器。正确性可以证明,利用 Dilworth 定理之类的东西。感性理解的话可以看作某个程度上的模拟网络流。
Dilworth的更多相关文章
- 【codevs1044】导弹拦截问题与Dilworth定理
题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某 ...
- 偏序集的Dilworth定理
定理1 令(X,≤)是一个有限偏序集,并令r是其最大链的大小.则X可以被划分成r个但不能再少的反链.其对偶定理称为Dilworth定理:定理2 令(X,≤)是一个有限偏序集,并令m是反链的最大的大小. ...
- hdu1051(LIS | Dilworth定理)
这题根据的Dilworth定理,链的最小个数=反链的最大长度 , 然后就是排序LIS了 链-反链-Dilworth定理 hdu1051 #include <iostream> #inclu ...
- (转载)偏序集的Dilworth定理学习
导弹拦截是一个经典问题:求一个序列的最长不上升子序列,以及求能最少划分成几组不上升子序列.第一问是经典动态规划,第二问直接的方法是最小路径覆盖, 但是二分图匹配的复杂度较高,我们可以将其转化成求最长上 ...
- codevs1044:dilworth定理
http://www.cnblogs.com/submarine/archive/2011/08/03/2126423.html dilworth定理的介绍 题目大意:求一个序列的lds 同时找出这个 ...
- BZOJ.4160.[NEERC2009]Exclusive Access 2(状压DP Dilworth定理)
BZOJ DAG中,根据\(Dilworth\)定理,有 \(最长反链=最小链覆盖\),也有 \(最长链=最小反链划分数-1\)(这个是指最短的最长链?并不是很确定=-=),即把所有点划分成最少的集合 ...
- 【XSY2727】Remove Dilworth定理 堆 树状数组 DP
题目描述 一个二维平面上有\(n\)个梯形,满足: 所有梯形的下底边在直线\(y=0\)上. 所有梯形的上底边在直线\(y=1\)上. 没有两个点的坐标相同. 你一次可以选择任意多个梯形,必须满足这些 ...
- 【BZOJ3997】【TJOI2015】组合数学 Dilworth定理 DP
题目描述 有一个\(n\times m\)的网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完. 此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子 ...
- BZOJ.1143.[CTSC2008]祭祀(Dilworth定理 最大流ISAP)
题目链接 题目是求最长反链,反链指点集内任意两点不能互相到达. 根据Dilworth定理,在DAG中,\[最长反链 = 最小路径覆盖 = V - 最大匹配数\] 用Floyd求一遍传递闭包后,在所有可 ...
- bzoj 3997 Dilworth定理
看到这道题感觉像是网络流,如果没有权值,可以用DAG最小路径覆盖,有权值,感觉可以求一个上下界最小可行流,但内存卡了....时间估计也悬. 正解要用到一些数学知识,这里梳理一下: 定义: 偏序关系: ...
随机推荐
- Exception in thread &quot;main&quot; java.lang.ArrayIndexOutOfBoundsException: 1
场景:eclipse中编写java中用到数组 问题: 程序不报错但是运行过程中 终止,显示字样 " Exception in thread "main" java.lan ...
- mysql 简单查询
查询特定列SELECT ename,birthday FROM emp; 查询所有的select*from emp; 给列起别名select ename AS 姓名, salary AS 工资 FRO ...
- postgresql的mysql外部数据扩展mysql_fdw编译及安装
下载mysql_fdw项目文件:https://pgxn.org/dist/mysql_fdw/ 注:我使用的是ubuntu18.04,可以直接在仓库查看是否有二级制安装文件,当然是有的啦,这是很方便 ...
- 聊一聊js中元素定位的方法
在做selenium web自动化的时候,有时通过selenium定位不到,或无法操作元素,这个时候就需要通过js来 定位/操作元素,然后通过selenium自带的execute_script()方法 ...
- Go使用协程批量获取数据,加快接口返回速度
服务端经常需要返回一个列表,里面包含很多用户数据,常规做法当然是遍历然后读缓存. 使用Go语言后,可以并发获取,极大提升效率. 使用channel package main import ( &quo ...
- 华为云MRS支持lakeformation能力,打造一站式湖仓,释放数据价值
摘要:对云端用户而言,业务价值发现是最重要的,华为MRS支持LakeFormation后,成功降低了数据应用的成本,帮助客户落地"存"与"算"的管理,加快推进了 ...
- 我这.NET菜鸟,用它开发RabbitMQ消息队列后,竟被老板一夜提拔为架构师
[讲故事] 自2022年末推出此工具以来,相关文章已被圈内顶尖的几家.NET头条号转载,而且短短数月,已有超100个团队/个人开发者使用它来操控RabbitMQ消息队列,反响可谓十分火爆.故本次经典重 ...
- IDEA新手使用教程【详解】
IDEA是一款功能强悍.非常好用的Java开发工具,近几年编程开发人员对IDEA情有独钟. Intellij Idea使用技巧总结 1.如何设置通过鼠标滑轮改变编辑器字体大小 2.如何设置自动导包功能 ...
- 云小课|MRS数据分析-通过Spark Streaming作业消费Kafka数据
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:Spark Str ...
- 原子类Atomic
前言 非阻塞算法:如果在某种算法中,一个线程的失败或挂起不会导致其他线程也失败或挂起,那么这种算法就被称为非阻塞算法.如果在算法的每个步骤中都存在某个线程执行下去,那么这种算法也被称为无锁(Lock_ ...