序理论

\(sort\) 的时候, 我们的 \(cmp\)函数应该满足 \(<\)

可什么是小于 它需要满足什么性质才能等价于小于?

序理论给出了严格的定义

二元关系

集合\(X\)和集合\(Y\)上的一个二元关系, \(G(R) \subseteq X \times Y = \{ (x,y); x \in X, y \in Y \}\)

\(xRy\) 成立当且仅当 \((x,y) \in G(R)\)

例如 \(N_+\) 上的整除 与 小于等于都是二元关系

性质

  • 自反性 \(\forall a \in S, aRa\)

  • 反自反性 \(\forall a \in S, \neg (aRb)\)

  • 对称性 \(\forall a, b \in S, (aRb) \Longleftrightarrow (bRa)\)

  • 反对称性 \(\forall a, b \in S, (aRb \wedge bRa) \Longrightarrow a = b\)

  • 非对称性 \(\forall a, b \in S, (aRb) \Longrightarrow \neg (bRa)\)

  • 传递性 \(\forall a, b, c \in S, (aRb \wedge bRc) \Longrightarrow aRc\)

  • 连接性 \(\forall a, b \in S, a \ne b \Longrightarrow (aRb \vee bRa)\)

  • 不可比的传递性 \(\forall a,b,c \in S, (\neg (aRb \vee bRa) \wedge \neg (bRc \vee cRb)) \Longrightarrow \neg(aRc \vee cRa)\)

这就是它所有的定义

等价关系

满足自反性, 对称性, 传递性

例子:

  • \(=\)

  • 有集合\(S\), 这是集合 \(S\)的一种划分 $S = \sqcup_{\alpha \in I}S_{\alpha} $

\(\{ (a,b) \in S \times S;a,b \in S_{\alpha},\alpha \in I \}\)

  • 有线性空间 \(L\) , \(V\)\(L\)的一个线性子空间

\(\{ (a,b) \in L \times L; a + V = b + V\}\)

等价关系与集合的划分

如果把一个二元关系理解成为一条边 那么它形成的图就是多个无向子图

所以我们可以把每一个无向子图看成一个等价类 于是这个就形成了一个原集合的一种划分!

也就是说一个等价关系会诱导形成一个集合的划分

一个集合的划分也会诱导形成一个等价关系

全序

满足自反性, 反对称性, 传递性, 连接性

例子

  • \(\le\)
  • 一条链
    \(a\) 可以到达 \(b\), 则\(aRb\)成立

偏序

满足自反性, 反对称性, 传递性

例子:

  • 一个 \(DAG\)

\(a\) 可以到达 \(b\), 则\(aRb\)成立

偏序集

若集合 \(S\) 上的一个二元关系 \(\preceq\) 具有 自反性、反对称性、传递性,则称 \(S\) 是 偏序集,\(\preceq\) 为其上一偏序。

链与反链

链就是偏序集的全序子集

\(S\) 的子集 \(T\) 中任意两个不同元素均不可比,(即 \((\forall~a,b \in T)~~a \neq b \implies (a \npreceq b \land b \npreceq a)\)),则称 \(T\) 为反链

Dilworth定理

最长反链长度等于最小的链覆盖数

同理也有 \(S\) 的最长链长度等于最小的反链覆盖数

证明

首先 最小链覆盖一定大于等于最大反链的长度

因为你考虑如果最小链覆盖小于最大反链长度 一定存在一条链经过两个反链上的节点 这显然是矛盾的

那么我们考虑这个为什么可以取到等号

我们用数学归纳法 节点数等于 \(1\) 时显然

考虑等于 \(n\) 的情况

首先我们先把反链上的节点在原集合中删掉(这里可以用DAG类比)

因为任何一条极长的链上的节点一定包含一个反链上的节点, 所以这条极长的链会一分为二

所以原来的DAG也一定会一分为二 再在两个分裂的DAG上都加入删去的点 这是一个子问题 容易发现 分裂的两个DAG最大反链一定是原图的最大反链长度 然后用数学归纳 我们可以得到 两个DAG中分别的 那么多条链

最后拼起来 就得到了最大反链条链

例题

定义二元关系 $ (i,h_i)\preceq(j,h_j) \iff (i\leq j \land h_i\geq h_j) $

要求的就转换成了 最长不下降子序列

第二问也有贪心的做法

网格图肯定是一个 DAG

一次走就是一条链 然后要求全部覆盖 好的这就是一个最小链覆盖的问题

我们把财宝拆开 每一个都是独立的

然后考虑怎么求最大反链 可以用\(DP\)

具体地 就是从右上角走到左下角, 然后考虑从哪里转移过来,考虑当前点的这几个拆的点可不可以选择

当然也有贪心的做法 也可以网络流建模(跑不过)

严格弱序

满足反自反性 非对称性 传递性 不可比的传递性

这个是C++ STL里面要求排序的二元关系

例子

  • <

严格弱序与贪心

在一种贪心题目中 我们通常需要确定一种排列 让他最优

我们通常会使用一种方法是考虑相邻交换满足什么条件的时候是不用交换的 然后以这个条件作为二元关系 进行 \(sort\) 排序

容易证明这样是对的 因为考虑 \(i\)\(j (i < j)\) 交换会不会更优我们考虑每次交换相邻的 然后每次交换都是不优的, 所以排完序后就是最优的

但是 这里有一个非常重要的点就是它必须满足严格弱序, (例题参考贪心板块)

posted @ 2024-08-20 10:15  d3genera7e  阅读(101)  评论(0)    收藏  举报