设XXX是个非空集合,XXX上有一个二元关系RRR满足自反性、反对称性和传递性,我们就称其为偏序关系。三个性质分别指的是:
1、自反性,指∀a,(a,a)∈R\forall a, (a,a)\in R∀a,(a,a)∈R;
2、反对称性,指(a,b)∈R∧(b,a)∈R⇒a=b(a,b)\in R\land (b,a)\in R\Rightarrow a=b(a,b)∈R∧(b,a)∈R⇒a=b;
3、传递性,指(a,b)∈R∧(b,c)∈R⇒(a,c)∈R(a,b)\in R\land (b,c)\in R\Rightarrow (a,c)\in R(a,b)∈R∧(b,c)∈R⇒(a,c)∈R。
通常一个偏序关系,我们记为(X,≤)(X,\le)(X,≤)。偏序集有很多例子,例如正整数ZZZ连同它上面的整除关系就是个偏序集,一个集合的所有子集组成的集合连同被包含关系也成为一个偏序集。

给定一个偏序集(X,≤)(X,\le)(X,≤),若对任意x,yx,yx,y,有x≤y∨y≤xx\le y \lor y\le xx≤y∨y≤x,则称≤\le≤是一个全序关系,偏序集(X,≤)(X,\le)(X,≤)也称为一个全序集,也称为一条链。一个偏序集(X,≤)(X,\le)(X,≤)的子偏序集(X′,≤)(X',\le)(X′,≤)如果是全序集,我们也可以称它是偏序集(X,≤)(X,\le)(X,≤)的一条链,或者严格来讲,全序子集。如果偏序子集(X′,≤)(X',\le)(X′,≤)中的元素两两不可比较,也就是说,对任意x,yx,yx,y,x≤yx\le yx≤y与y≤xy\le xy≤x都不成立,则称其为一条反链。

给定一个偏序集(X,≤)(X,\le)(X,≤),其最长链的长度,称为偏序集(X,≤)(X,\le)(X,≤)的高度;其最长反链的长度,称为偏序集(X,≤)(X,\le)(X,≤)的宽度。

接下来介绍极大元、极小元、最大元、最小元的概念。
偏序集(X,≤)(X,\le)(X,≤),如果有一个元素xxx使得对于任意aaa,若x≤ax\le ax≤a则有x=ax=ax=a,则称xxx是这个偏序集的一个极大元。
如果有一个元素xxx使得对于任意aaa,若a≤xa\le xa≤x则有x=ax=ax=a,则称xxx是这个偏序集的一个极小元。
如果有一个元素xxx使得对于任意aaa,都有a≤xa\le xa≤x,则称xxx是这个偏序集的最大元。
如果有一个元素xxx使得对于任意aaa,都有x≤ax\le ax≤a,则称xxx是这个偏序集的最小元。

我们可以看出,极大元的意思就是,没有比它更大的了;最大元的意思则是,它比别的所有元素都大。这两个概念是不一样的,因为一个偏序集可能有多个极大元,它们之间两两不能比较。但显而易见的是,最大元一定是极大元。反之不然,一个偏序集可能有极大元,但是没有最大元。一个偏序集如果有最大元的话,则最大元一定是唯一的。对于最小元也是一样。

接下来介绍最最重要的两个分解定理。

定理1:一个偏序集(X,≤)(X,\le)(X,≤)的高度为nnn,则存在划分X=⋃i=1nAiX=\bigcup_{i=1}^{n} A_iX=⋃i=1n​Ai​使得每个AiA_iAi​都是反链。
证明:数学归纳法。当n=1n=1n=1时,说明任意两个元素都不可比较,则XXX本身就是个反链,结论成立;设结论对于nnn也成立。当高度为n+1n+1n+1时,首先XXX不可能划分为nnn个反链,否则的话,由鸽巢原理,长度为n+1n+1n+1的链必然有两个元素同属于一个反链,这与反链的定义是矛盾的。取XXX的所有极大元组成一个集合A1A_1A1​,则A1≠∅A_1\ne \emptyA1​​=∅(链的最大元就是个极大元)。我们考虑X−A1X-A_1X−A1​中的链,如果其有长度为n+1n+1n+1的链,则其极大元必然也是XXX的极大元,否则XXX的高度就应该大于等于n+2n+2n+2,矛盾。所以X−A1X-A_1X−A1​的高度是nnn,由归纳假设,其可以分解为nnn个反链,连同A1A_1A1​就是n+1n+1n+1个反链,结论成立。这个证明有点BFS拓扑排序的味道,先找入度为000的顶点,然后删掉,继续找入度为000的顶点,依次下去。找反链的步骤也是这样,先找极大元,然后将其删掉,再继续找极大元。

定理2(Dilworth定理):设有限偏序集(X,≤)(X,\le)(X,≤)的宽度为mmm,则存在划分X=⋃i=1mAiX=\bigcup_{i=1}^{m} A_iX=⋃i=1m​Ai​使得每个AiA_iAi​都是链。
证明以后补。

我们来看应用:
对于一个数组(x1,x2,...,xn)(x_1,x_2,...,x_n)(x1​,x2​,...,xn​),我们考虑将其分解为若干个下降子序列的并,这该如何做呢。
为了方便叙述,我们举一个例子,设数组为A=(4,2,4,5,3,7)A=(4,2,4,5,3,7)A=(4,2,4,5,3,7),连同下标在一起,数组为A=(41,22,43,54,35,76)A=(4_1,2_2,4_3,5_4,3_5,7_6)A=(41​,22​,43​,54​,35​,76​)。定义序关系为,ai≤bja_i\le b_jai​≤bj​当且仅当a≤ba\le ba≤b并且i≤ji\le ji≤j。按照这个序关系的定义,一个数比另一个数小,当且仅当第一个数出现在第二个数左边,并且数值也更小。按照这个序关系,AAA中的最长链就是(22,43,54,76)(2_2,4_3,5_4,7_6)(22​,43​,54​,76​),其实也就是AAA中的最长上升子序列。由分解定理,AAA存在四条反链。我们考虑一下这里的反链是个什么意思。对于AAA的某个反链而言,其中两个元素aia_iai​和bjb_jbj​不可比较,就意味着它们的数值大小关系和它们的下标大小关系”不对应“,换句话说,如果将它们按照下标由小到大排,那么数值就是由大到小的,也就是说,一个反链就对应了一个(严格)下降子序列。要求反链的话,就要求极大元。这里我们要求四轮极大元。
第一轮,在(41,22,43,54,35,76)(4_1,2_2,4_3,5_4,3_5,7_6)(41​,22​,43​,54​,35​,76​)中,767_676​是极大元,别的都不是;
第二轮,在(41,22,43,54,35)(4_1,2_2,4_3,5_4,3_5)(41​,22​,43​,54​,35​)中,353_535​和545_454​都是极大元,别的都不是;
第三轮,在(41,22,43)(4_1,2_2,4_3)(41​,22​,43​)中,434_343​是极大元,别的都不是;
第四轮,剩下的两个数(41,22)(4_1,2_2)(41​,22​)都是极大元。
每轮的极大元都是一个反链,所以得到的四个反链就是(76),(54,35),(43),(41,22)(7_6),(5_4,3_5),(4_3),(4_1,2_2)(76​),(54​,35​),(43​),(41​,22​)。我们发现,其实就是将AAA拆成了四个下降子序列。由分解定理,这是AAA能拆的最多的下降子序列个数了。
反过来想就是这样的,如果一道题目问,一个数组AAA能分拆成的最多严格下降子序列的个数是多少,那么答案就是AAA的最长(不严格)上升子序列的长度。

可以注意到,上述算法就是每次取极大元。接下来考虑求AAA的四个反链的更简单的算法。算法如下:
1、设已经开了若干个反链,遇到新的数的时候,如果它比所有反链的最小值都要大于等于,那么这个数无法接到任何一个已经开的反链上去,则将它自成一个反链;
2、如果遇到的新的数可以接到某个反链后面,那么就挑最小值最小的那条反链接上去。

按照这个算法,求AAA的四个反链的做法就是这样的:
遇到414_141​,开一个新的反链,(41)(4_1)(41​);
遇到222_222​,可以接上去,得(41,22)(4_1,2_2)(41​,22​);
遇到434_343​,接不上去,开一个新反链,得(41,22),(43)(4_1,2_2),(4_3)(41​,22​),(43​);
遇到545_454​,接不上去,开一个新反链,得(41,22),(43),(54)(4_1,2_2),(4_3),(5_4)(41​,22​),(43​),(54​);
遇到353_535​,可以接到两个数上去,我们挑最小的接上去,得(41,22),(43,35),(54)(4_1,2_2),(4_3,3_5),(5_4)(41​,22​),(43​,35​),(54​);
遇到767_676​,接不上去,开一个新反链,得(41,22),(43,35),(54),(76)(4_1,2_2),(4_3,3_5),(5_4),(7_6)(41​,22​),(43​,35​),(54​),(76​)。
遍历完毕,正好得到四个反链。证明以后补。

接下来考虑严格偏序集的分解定理。XXX上的一个严格偏序RRR,指的是:
1、反自反性,对于任意aaa,(a,a)∉R(a,a)\notin R(a,a)∈/​R;
2、非对称性,(a,b)∈R⇒(b,a)∉R(a,b)\in R\Rightarrow (b,a)\notin R(a,b)∈R⇒(b,a)∈/​R(注意,反对称性和非对称性不是一个意思。反自反性允许(a,a)∈R(a,a)\in R(a,a)∈R,但是非对称性不允许);
3、传递性,(a,b)∈R,(b,c)∈R⇒(a,c)∈R(a,b)\in R, (b,c)\in R\Rightarrow (a,c)\in R(a,b)∈R,(b,c)∈R⇒(a,c)∈R。
严格偏序集一般记为(X,<)(X,<)(X,<)。严格偏序集里也可以定义极大、极小、最大、最小元,极大元指的是没有元素比它“大”(它自己也不比它大),最大元指的是它别的元素都大(除了它自己)。于是,严格偏序集也有链和反链的概念。由于偏序集的分解定理里并没有用到自反性和对称性,所以证明可以直接套用过来用。具体就不叙述了。

【数学】偏序集及其分解定理和应用相关推荐

  1. Gym-101466K Random Numbers(线段树,数学,唯一分解定理)

    给一棵树,树上每个节点有一个权值,有两个操作,RAND操作查询u的子树乘积是多少以及有多少因数,SEED操作把节点u乘上v n,q <= 1e5.数值小于等于1e9,最大的质因数不超过13 组队 ...

  2. 信奥中的数学:质数与合数

    什么是质数 ? 什么是质数 ?_哔哩哔哩_bilibili 质数与合数知识导览 质数与合数知识导览_哔哩哔哩_bilibili 质数和合数. 质数和合数._哔哩哔哩_bilibili 质数与合数_哔哩 ...

  3. 信奥中的数学 数论篇 相关资料汇总(2022.07.07)

    数论入门书籍推荐 数论入门书籍推荐_dllglvzhenfeng的博客-CSDN博客_数论入门应该看什么书 数学女孩系列书籍 数学女孩系列书籍_dllglvzhenfeng的博客-CSDN博客 信息学 ...

  4. 信奥中的数学:抽屉原理

    抽屉原理 抽屉原理_哔哩哔哩_bilibili 小学奥数基础知识:第十课 抽屉原理 小学奥数基础知识:第十课 抽屉原理_哔哩哔哩_bilibili 3-03 抽屉原理(1) 3-03 抽屉原理(1)_ ...

  5. 信奥中的数学:集合与子集

    [信息学奥赛系列]集合与子集 [信息学奥赛系列]集合与子集_哔哩哔哩_bilibili 包含与子集 包含与子集_哔哩哔哩_bilibili Why U数学科普动画-双语字幕-代数01-集合定义 Why ...

  6. 信奥中的数学:加法原理和乘法原理

    加法原理和乘法原理 还在为分不清乘法原理.加法原理而苦恼么 加法原理和乘法原理 还在为分不清乘法原理.加法原理而苦恼么_哔哩哔哩_bilibili 四年级:加法原理&乘法原理初步. 四年级:加 ...

  7. 信奥中的数学:奇数与偶数

    奇数偶数 奇数偶数_哔哩哔哩_bilibili 奇数与偶数_哔哩哔哩_bilibili 为什么风扇叶片是奇数?而发动机叶片却是偶数? 为什么风扇叶片是奇数?而发动机叶片却是偶数?_哔哩哔哩_bilib ...

  8. 数论学习书籍及信奥中的数学之数论相关资料

    1.数学女王的邀请 初等数论入门(2020.07) 2.初中数学竞赛中的数论初步(第2版)-2020.04 3.初等数论(2015.11) 4.数论初步(2023.01) 5.初等数论(第3版)-20 ...

  9. 信奥中的数学基础:分解质因数

    五分钟掌握一个小学数学知识点--分解质因数(苏教版五年级下册) 五分钟掌握一个小学数学知识点--分解质因数(苏教版五年级下册)_哔哩哔哩_bilibili [算法竞赛中的数学]素数筛选与质因数分解 [ ...

最新文章

  1. java 与sql设置排序方法是_恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合...
  2. openGL第四讲——像素格式管理
  3. mysql教程 api_Mysql入门系列:MySQL可用的API
  4. Curator实现分布式锁的基本原理-getTheLock
  5. HDU4267(2012年长春站)
  6. python棋盘最短路径_【leetcode】64. Minimum Path Sum 棋盘最短路径
  7. linux/window 下 solr5.1 tomcat7.x 环境搭建即简单功能测试
  8. react学习(54)--注意传递请求
  9. android studio n3710,英特尔奔腾N3710性能跑分和评测 | ZMMOO
  10. ThinkPHP导出CSV、Excel
  11. 双线性插值函数的形状
  12. hdu 1078 FatMouse and Cheese(记忆化搜索)
  13. python+selenium自动化测试环境搭建步骤(selenium环境搭建)-绝不浪费您的时间
  14. 教你如何玩转豆瓣(douban) 豆瓣使用入门!
  15. 前端学习路线(详细)
  16. U盘中文件消失但仍占用空间
  17. Pandas基础-利用python进行数据分析
  18. 重磅榜单 | 国内云服务企业估值50强,【友盟+】位列其中。
  19. 2022.7.26刷题合集
  20. Linux 目录管理类命令

热门文章

  1. python圣诞节_快到圣诞节了,用python来给自己的头像加上一顶圣诞帽
  2. 服务器中毒怎么办,服务器中毒是什么导致的?
  3. 前端实现五子棋小游戏1(本地双人对战)
  4. 接口测试应该怎么做?常见工具使用方法
  5. 遇见AI,从Java到数据挖掘。
  6. C++标准模板库(STL)的容器的底层实现
  7. 语音识别-声纹识别-语音合成【专题四】
  8. (个人)AR电子书创新系统实训第五周(1)
  9. 一文搞懂slq 左右连接
  10. 【stm32】HAL库教程一:GPIO