Dilworth定理
偏序关系
设RRR是集合AAA的一个二元关系,若RRR满足:
1.自反性:∀x∈A\forall x \in A∀x∈A,有xRxxRxxRx
2.反对称性:∀x,y∈A\forall x,y \in A∀x,y∈A,若xRy,yRxxRy,yRxxRy,yRx,则x=yx=yx=y
3.传递性:∀x,y,z∈A\forall x,y,z\in A∀x,y,z∈A,若xRy,yRzxRy,yRzxRy,yRz,则xRzxRzxRz
则称RRR为AAA上的偏序关系,通常记作⪯\preceq⪯
偏序集
偏序集合(Partially ordered set,Poset)是数学中,特别是序理论中,指配备了偏序关系的集合
链
设若干元素构成一个集合,那么这个集合是链当且仅当这个集合的所有元素两两可比
反链
对一个集合,它是反链当且仅当这个集合里的元素两两不可比
极大元
设偏序集AAA,x∈Ax\in Ax∈A,∄y∈A,x≠y,s.t.x⪯y\not\exists y\in A,x\neq y, s.t.\ x\preceq y∃y∈A,x=y,s.t. x⪯y,则xxx为极大元
Dilworth定理
设PPP是一个有限的偏序集,则
min{m∣∃链C1,C2,⋯,Cm,P=∪i=1mCi}=max{∣A∣:A是反链}\min\left\{m|\exists 链C_1,C_2,\cdots,C_m,P = \cup_{i=1}^{m}C_i\right\}=\max\left\{\left|A\right|:A是反链\right\} min{m∣∃链C1,C2,⋯,Cm,P=∪i=1mCi}=max{∣A∣:A是反链}
偏序集能划分成的最少的链的个数与最大反链的元素个数相等
证明:
首先证明max{∣A∣}≤min{m}\max\left\{\left|A\right|\right\}\le \min\left\{m\right\}max{∣A∣}≤min{m}
假设max{∣A∣}>min{m}\max\left\{\left|A\right|\right\}> \min\left\{m\right\}max{∣A∣}>min{m}
存在∃x,y∈A,s.t.x,y∈Ci\exists x,y \in A,s.t.\ x,y\in C_i∃x,y∈A,s.t. x,y∈Ci
说明x,yx,yx,y是可比的,与反链定义矛盾
同时我们也可以得出∣Ci∩A∣=1\left|C_i\cap A\right| = 1∣Ci∩A∣=1
接着我们对∣P∣\left|P\right|∣P∣进行归纳,来证明可以取等
当∣P∣=0,1\left|P\right| = 0,1∣P∣=0,1时,显然成立
假设∣P∣=k\left|P\right| = k∣P∣=k时成立
当∣P∣=k+1\left|P\right| = k + 1∣P∣=k+1时
设最大反链长度是mmm
最长的链是C={x1,x2,⋯,xp}C=\left\{x_1,x_2,\cdots, x_p\right\}C={x1,x2,⋯,xp},满足x1⪯x2⪯⋯⪯xpx_1 \preceq x_2\preceq \cdots \preceq x_px1⪯x2⪯⋯⪯xp
换句话说我们不能再往CCC中增加元素,也可以得出xpx_pxp是极大元
接下来分类讨论
当P\CP\backslash CP\C的每一条反链都的元素个数≤m−1\le m-1≤m−1
由于∣P\C∣<k\left|P\backslash C\right| <k∣P\C∣<k,由归纳P\CP\backslash CP\C可以划分为m−1m-1m−1个链,即P\C=∪i=1mCiP\backslash C = \cup_{i=1}^{m}C_iP\C=∪i=1mCi
那么PPP可以划分为P=C∪∪i=1mCiP = C\cup \cup_{i=1}^{m}C_iP=C∪∪i=1mCi,结论成立
当P\CP\backslash CP\C中存在反链A={a1,a2,⋯,am}A = \left\{a_1,a_2,\cdots,a_m\right\}A={a1,a2,⋯,am}时
令
P−={x∈P∣∃i,x⪯ai}P+={x∈P∣∃i,ai⪯x}P^{-} = \left\{x\in P\mid \exists i ,x \preceq a_i\right\}\\ P^{+} = \left\{x\in P\mid \exists i ,a_i\preceq x\right\}\\ P−={x∈P∣∃i,x⪯ai}P+={x∈P∣∃i,ai⪯x}
我们可以得出
1.P=P−∪P+P = P^{-} \cup P^{+}P=P−∪P+(否则存在元素与反链中的元素不可比,则这条反链不是最大的,矛盾)
2.P−∩P+=AP^{-}\cap P^{+} = AP−∩P+=A (因为ai⪯aia_i \preceq a_iai⪯ai,所以ai∈P−,ai∈P+a_i \in P^{-},a_i \in P^{+}ai∈P−,ai∈P+)
3.xp∉P−x_p \notin P^{-}xp∈/P−(反则xpx_pxp不是极大元)
AAA是P−P^{-}P−的一条最大反链,由归纳P−P^{-}P−可以划分为mmm条链C1−1,C2−,⋯,Cm−C_1^{-1},C_2^{-},\cdots, C_m^{-}C1−1,C2−,⋯,Cm−
由于∣A∩Ci−∣=1\left|A\cap C_i^{-}\right| = 1A∩Ci−=1,不妨假设ai∈Ci−a_i \in C_i^{-}ai∈Ci−
我们可以得出,aia_iai是Ci−C_i^{-}Ci−的最大元
(否则,不妨假设x∈Ci−x\in C_i^{-}x∈Ci−满足ai⪯xa_i \preceq xai⪯x,由于x∈P−x \in P^{-}x∈P−,∃aj,s.t.x⪯aj(ai≠aj)\exists a_j,s.t.\ x\preceq a_j(a_i\neq a_j)∃aj,s.t. x⪯aj(ai=aj),进而ai⪯x⪯aja_i \preceq x \preceq a_jai⪯x⪯aj,与反链定义矛盾)
同理P+P^{+}P+也可以划分为C1+,C2+,⋯,Cm+C_1^{+},C_2^{+},\cdots,C_m^{+}C1+,C2+,⋯,Cm+,aia_iai是Ci+C_i^+Ci+的极小元
令Ci=Ci−∪Ci+C_i = C_i^{-} \cup C_i^+Ci=Ci−∪Ci+,则PPP可以划分为C1,C2,⋯,CmC_1, C_2,\cdots, C_mC1,C2,⋯,Cm这mmm条链
得证
洛谷P1020
最长不上升子序列
设A=[a1,a2,⋯,an]A= [a_1,a_2,\cdots, a_n]A=[a1,a2,⋯,an]
定义偏序关系ai⪯aj⇔i≤j且ai≥aja_i \preceq a_j \Leftrightarrow i\le j 且 a_i \ge a_jai⪯aj⇔i≤j且ai≥aj(容易验证满足偏序关系)
这个偏序关系就对应了最长不上升序列
最长不上升序列就是在求最长的链
划分最长不上升序列的个数最少为最长上升子序列长度
#include<cstdio>
#include<algorithm>
#include<functional>const int N = 1e5 + 5;int dp1[N];
int dp2[N];int main() {bool flag = false;int t, idx, ans1 = 1, ans2 = 1;while (~scanf("%d", &t)) {if (!flag) {flag = true;dp1[1] = dp2[1] = t;continue;}if (dp1[ans1] >= t) {++ans1;dp1[ans1] = t;}else {int idx = std::upper_bound(dp1 + 1, dp1 + 1 + ans1, t, std::greater<int>()) - dp1;dp1[idx] = t;}if (t > dp2[ans2]) {++ans2;dp2[ans2] = t;}else {int idx = std::lower_bound(dp2 + 1, dp2 + 1 + ans2, t) - dp2;dp2[idx] = t;}}printf("%d\n%d\n", ans1, ans2);return 0;
}
https://www.cnblogs.com/itlqs/p/6636222.html
https://cmwqf.github.io/2019/12/17/%E6%B5%85%E8%B0%88Dilworth%E5%AE%9A%E7%90%86/
https://www.math.cmu.edu/~af1p/Teaching/Combinatorics/F03/Class14.pdf
相关文章:
Dilworth定理
偏序关系 设RRR是集合AAA的一个二元关系,若RRR满足: 1.自反性:∀x∈A\forall x \in A∀x∈A,有xRxxRxxRx 2.反对称性:∀x,y∈A\forall x,y \in A∀x,y∈A,若xRy,yRxxRy,yRxxRy,yRx,则xyxyxy 3.传递性&…...
使用loading动画让你的条件渲染页面更高级
前言在我们做项目的使用常常会使用条件渲染去有选择的给用户展示相关页面,如果渲染的数据或场景比较多比较复杂,那么往往需要3、4s的时间去完成,用户点击了之后就会陷入3、4s的空白期,并且这段时间屏幕是处于一种”未响应“的状态…...
Renegade:基于MPC+Bulletproofs构建的anonymous DEX
1. 引言 白皮书见: Renegade Whitepaper: Protocol Specification, v0.6 开源代码见: https://github.com/renegade-fi/renegade(Renegade p2p网络每个节点的核心网络和密码逻辑)https://github.com/renegade-fi/mpc-bulletpr…...
二、Plugin The chain/event/query function
The chain function 链函数是所有数据处理都在其中进行的函数。在简单过滤器的情况下(本节示例的情况),_chain()函数大多是线性函数——因此对于每个传入的缓冲区,也将输出一个缓冲区。下面是一个非常简单的chain函数的实现: sta…...
了解 PostgreSQL 的扩展查询协议
1.介绍 本篇博客用于解释扩展协议的工作原理以及它与简单查询的区别。 2.简单查询 在PostgreSQL中,客户端连接能够发起两种类型的查询:简单查询和扩展协议查询。 简单查询顾名思义。 当启动 psql 客户端连接到pg服务器时,几乎所有发送的…...
接入网关和隔离网关
文章目录1. 什么是网关?2. 网关的作用是什么?3. 接入网关和隔离网关1. 什么是网关? 网关(Gateway)是一种网络设备,通常用于将不同网络之间的流量进行转发和路由,将一个网络连接到另一个网络&…...
实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?
文/云原生SIG本篇文章我们将详细介绍怎么轻松在 Anolis OS 上使用 Kata Containers 安全容器,我们将介绍 Kata Container 社区于 2022 年 10 月 10 日最新发行的 Kata3.0.0 的安装部署方式,3.0.0 版本包含了基于袋鼠 RunD 开源的最新 Rust Kata runtime …...
如何锁定Word文档部分文字不被修改
我们知道,想要保护Word文档的内容无法随意更改,可以设置“限制编辑”的保护模式。 那如果实际工作中,只需要固定的一部分内容不能编辑,可以实现吗?答案是肯定的,今天就来说说如何设置Word文档部分文字可修…...
聊聊8万8的私董会,很扎心
聊聊8万8的私董会,很扎心 道几句真心话,很扎心,但也很现实。 如果你喜欢刷抖音,这种感觉应该会更加明显。 股市哀鸿遍野,实体一地鸡毛,我们办公室楼下的门面换了一波又一波。 别说那些不起眼的小生意&a…...
卷积网络与全连接网络的区别
问题卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络。全连接神经网络是具有多层感知器的的网络&a…...
【5000左右电脑配置清单】预算不高于5000,不带显示器的电脑配置清单推荐
由于本人是学生党经济有限,预算不高于5000元配一套电脑主机,说实话5000左右的电脑配置已经很好了,今天站长整理了几款配置给大家参考参考,更多电脑配置还请继续关注西安SEO优化站点! 配置1: <CPU> I5…...
在 4G 内存的机器上,申请 8G 内存会怎么样?
在 4GB 物理内存的机器上,申请 8G 内存会怎么样? 这个问题在没有前置条件下,就说出答案就是耍流氓。这个问题要考虑三个前置条件: 操作系统是 32 位的,还是 64 位的?申请完 8G 内存后会不会被使用&#x…...
JavaSE学习day9 集合(基础班结束)
1.ArrayList 集合和数组的优势对比: 长度可变 添加数据的时候不需要考虑索引,默认将数据添加到末尾 不能存基本数据类型。只能通过包装。 1.1ArrayList类概述 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 Ar…...
Python爬虫进阶 - win和linux下selenium使用代理
目录 Windows selenium配置 下载地址 Chrome Chromedriver 版本对应关系 实践测试 操作元素 浏览器操作 获取元素信息 鼠标操作 实战demo selenium添加代理 Linux selenium配置 检查服务器环境 下载安装第三方库(最简单版) 实践测试 代码…...
力扣-从不订购的客户
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:183. 从不订购的客户二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果总结前言…...
速来!掘金数据时代2022年度隐私计算评选活动火热报名中!
开放隐私计算 开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神,专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播,愿成为中国 “隐私计算最后一公里的服务区”。183篇原创内容公众号…...
Springboot @Test 给Controller接口 写 单元测试
前言 最近有小伙伴问到怎么给 controller的接口写单元测试。 单元测试是开发必不可少的一个环节。 既然有人问到了,那我觉得可能不止一个人不会,那就按照惯例,出手。 正文 内容: 主要是get 和 post 两种请求方式的接口 的 单元测…...
ISO 6721-1~12 ,塑料-电动机械性能的测定,2022更新
ISO 6721-1 :2019 Plastics - Determination of dynamic mechanical properties - Part 1: General principles ISO 6721-1 :2019 塑料 - 电动机械性能的测定. 第1部分:一般原理 ISO 6721-2 :2019 Plastics — Determination of dynamic mechanical properties — Part 2:…...
vue3.2中使用swiper缩略图轮播教程
介绍 在vue3 中使用 swiper 实现缩略图的轮播图效果,具体如下图所示: 使用 切换到项目终端 ,输入命令 npm install swiper --save , 进行安装在 main.js里,引入 swiper.css并使用,具体代码如下;import {createApp } from vue import App from ./App.vue import router…...
边玩边学,13个 Python 小游戏真有趣啊(含源码)
经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
