Lattice
Lattice
基础
偏序(Partial Order)
在数学中(特别是集合论和序理论),偏序关系(partial order relation)是一种二元关系,它满足自反性、反对称性和传递性三个基本性质。以下是其精确定义:
设 是一个非空集合(集合中的元素可以是任意对象)。一个二元关系 定义在 上(即 ),称为偏序关系,当且仅当它满足自反性(Reflexivity),反对称性(Antisymmetry)和传递性(Transitivity)。一个集合 与定义在集合上的偏序关系 被称作偏序集(partially ordered set, 或 poset),表示为 ,的成员被成为偏序集的元素。
习惯上,在任意偏序集,符号 被用来表示。偏序关系也通常用符号表示,当时,记作。
如果一个偏序集合上的元素 和 满足或,我们称它们是可比较的(comparable)。如果既不满足 也不满足 ,则 和 是不可比较(incomparable)。
如果存在偏序集,并且中的每个元素都是可比较的,则 是全序集(totally ordered set)或线型序集(linearly ordered set), 是全序(total order)或线性序(linear order)。一个全序集有时也被称作 链(chain)。
如果偏序集 的 是全序并且的每个非空子集都至少含有一个元素,则 是良序集(well-ordered set)。
字典序(Lexicographic Order)
Lexicographic Order(字典序)是一种基于已有顺序为序列(如字符串、元组、列表或笛卡尔积)定义全序关系的方法。其名称来源于字典中单词的排列规则:先比较首字母,若相同则比较第二个字母,依此类推。
设两个序列 和 ,且序列元素所属的集合 上已定义全序关系 (如字母顺序、数值大小)。字典序 定义为:
全序性(Total Order):
- 若底层元素集 是全序集,则字典序也是全序(任意两个序列可比)。
- 例如:字母集 按字母表顺序是全序,因此单词序列按字典序全序排列。
递归比较:
- 从第一个元素开始逐位比较,直到找到差异或一个序列结束。
- 示例:比较
(2, 3, 5)
和(2, 3, 4, 9)
:- 前两位相同 → 比较第三位: → 故
(2, 3, 5) > (2, 3, 4, 9)
。
- 前两位相同 → 比较第三位: → 故
前缀规则:
- 若一序列是另一序列的前缀,则前缀更小。
- 示例:
"cat" < "catalog"
(因"cat"
是"catalog"
的前缀)。
严格字典序(Strict Lexicographic Order) 定义严格版本 :
- 示例:
"apple" < "apply"
(前四位相同appl
,第五位e
<y
)。
底层为偏序的情况 若元素集 仅有偏序(非全序),则字典序仅为偏序:
- 示例:设 且 与 不可比(即既非 也非 ),则:
- 序列和在字典序下不可比(因首元素不可比)。
哈斯图 (Hasse Diagrams)
Hasse 图是用于可视化有限偏序集(Partially Ordered Set, Poset)的简约图示方法,它通过省略冗余边(可由传递性和自反性推导出的关系),仅保留覆盖关系(covering relations),从而清晰展现偏序结构。
核心思想与定义
覆盖关系(Covering Relation): 在偏序集 中,元素 覆盖元素 (记作 ),当且仅当:
- (即 且 ),
- 不存在中间元素 满足 。 例如:在整除序中, 覆盖 (因无整数 满足 ),但 不直接覆盖 (因存在 满足 )。
Hasse 图的构建原则:
- 顶点:每个元素表示为平面上的点。
- 边:仅当 覆盖 时,从 到 画一条无向线段(约定俗成:若 ,则 画在 上方)。
- 省略:
- 自反性:不画 的自环。
- 传递性:若 且 ,则不直接画 到 的边(由路径隐含)。
绘制步骤
分层排列:
- 将极小元(minimal elements,无更小元素)置于底层。
- 若 覆盖 ,则 放置在 正上方(或斜上方)。
- 同一水平层的元素不可比(incomparable)。
恢复完整偏序:
- 当且仅当存在一条从 到 的向上路径(路径可能经过多条边)。
关键性质
- 简约性:边数 (远少于完整偏序图的 条边)。
- 无环:不含回路(因偏序是反对称的)。
- 方向隐含:所有边隐含向上方向(无需箭头)。
经典示例
例1:集合 的幂集(子集包含序 )
- 元素:
- 覆盖关系:
- Hasse 图:
例2:整除序(,关系为整除)
- 覆盖关系:
- Hasse 图:
最大元素和最小元素(Maximal and Minimal Elements)
在偏序集中,如果不存在一个元素 满足 ,则 是最大的(Maximal)。同样的,如果不存在元素 满足 ,则 是最小的(Minimal)。
对于偏序集,对于所有,总满足 ,则 是偏序集中的最大元素(Greatest element)。如果最大元素存在,那么它是唯一的。同样,对于所有,总满足 ,则 是偏序集中的最小元素(Least element)。
在偏序集中,设 是任意子集:
1. 上界 (Upper Bound)
定义:元素 称为 的上界,当且仅当:
- 性质:
- 上界可能不存在(如 (S) 无界)
- 上界不一定唯一(可能有多个)
- 上界不一定属于 (S)(通常 )
2. 下界 (Lower Bound)
定义:元素 称为 的下界,当且仅当:
- 性质:
- 下界可能不存在
- 下界不一定唯一
- 下界不一定属于
示例:
子集的上界是 和 。它的下界只有 。子集 没有上界,它的下界是 和 。 的上界是 和 ,它的下界是 。
3. 最小上界 (Least Upper Bound, LUB) / 上确界 (Supremum)
定义:元素 称为 的最小上界,当且仅当:
- 性质:
- 若存在则唯一(由反对称性保证)
- 记作 或
- 不一定属于
示例:
- :
- 无理数)
- 不存在例:在 中,无最小上界(因
4. 最大下界 (Greatest Lower Bound, GLB) / 下确界 (Infimum)
定义:元素 称为 的最大下界,当且仅当:
- 性质:
- 若存在则唯一
- 记作 或
- 不一定属于
示例:
- :
- :
存在性定理
实数完备性公理: 在 中,任意有上界的非空子集必有最小上界(存在)。
格 (Lattice): 若偏序集 中,任意两个元素 都有最小上界 和最大下界 ,则称为格。
- 示例:
- 幂集 :,
- 正整数集 (整除序):,
- 示例:
拓扑排序(Topological Sorting)
拓扑排序是对有向无环图(DAG) 的顶点进行线性排序的算法,使得对于图中的每条有向边 ,在排序中 都出现在 之前。它反映了顶点间的依赖关系,常用于任务调度、编译顺序等场景。
核心概念
有向无环图(DAG):
- 有向边:表示顶点间的偏序关系(如任务依赖)
- 无环:图中不存在循环依赖(否则拓扑排序不可能)
偏序与全序:
- 拓扑排序将偏序关系扩展为全序关系
- 同一层级的顶点(无直接依赖)可任意排序
算法原理
拓扑排序的核心是逐步移除入度为0的顶点(无前置依赖的顶点),直到所有顶点被处理。
数学定义
设 DAG :
- :顶点集,
- :有向边集,
- :顶点 的入度(指向 的边数)
拓扑排序输出序列 满足:
其中 表示 在序列中的索引。
算法实现(Kahn 算法)
伪代码
function TopologicalSort(Graph G):
1. 初始化:
- 入度数组 indegree[1..n] ← 0
- 队列 Q ← 空队列
- 结果列表 L ← 空列表
2. 计算入度:
for each 边 (u, v) ∈ E:
indegree[v] ← indegree[v] + 1
3. 初始化队列:
for each 顶点 v ∈ V:
if indegree[v] == 0:
Q.enqueue(v)
4. 处理队列:
while Q 非空:
u ← Q.dequeue()
L.append(u) // 将 u 加入结果
for each 邻接顶点 v of u: // 遍历 u → v 的边
indegree[v] ← indegree[v] - 1
if indegree[v] == 0:
Q.enqueue(v)
5. 检查环:
if |L| < n:
return "图中有环,拓扑排序不存在"
else:
return L
数学符号描述
算法特性
时间复杂度:
- 计算入度:
- 每个顶点入队/出队一次:
- 每条边处理一次:
空间复杂度:
- 存储入度数组和队列
正确性保证:
- 无环图:总能找到拓扑排序
- 有环图:队列提前空,检测到环
示例演示
A → B → D
↘ ↗
C
顶点入度:
执行过程:
- 初始列队
- 处理 :
- 更新 入度 →0,入度→0
- (顺序任意)
- 处理 :
- 更新 入度→1
- 处理 :
- 更新 入度→0
- 处理 :
合法拓扑序: 或 。
格(Lattice)
格是一种具有特殊代数结构的偏序集,其中任意两个元素都有唯一的最小上界(join)和最大下界(meet)。
1. 核心定义
设 是一个偏序集。若对任意两个元素 :
- 最小上界(join) 存在: 存在,记作
- 最大下界(meet) 存在: 存在,记作
则称 为一个格(Lattice)。当格满足以下条件时,称为 有界格:
- 存在 最小元 (bottom):
- 存在 最大元 (top):
在 有界分配格 中,若对元素 存在元素 满足:
则称 是 的 逆元 (或 补元),记为 或
2. 等价代数定义
格也可定义为配备两个二元运算 (并)和 (交)的集合 ,满足:
- 交换律:
- 结合律: )
- 吸收律:
偏序关系可通过运算恢复:
关键特性
- 有限子集的边界存在性: 在格中,任意有限非空子集都有最小上界和最大下界。
格同态(Lattice Homomorphism):
映射 满足:
子格(Sublattice):
子集 对 和 运算封闭。
3. 格的分类
有界格(Bounded Lattice)
若存在元素 (最大元)和 (最小元)满足:
- 此时 ,
- 示例:幂集格 中,,
分配格(Distributive Lattice)
满足分配律:
非分配格示例:钻石格 或五角格 (下图)
⊤ /|\ a b c --> 违反分配律:a ∧ (b ∨ c) = a ∧ ⊤ = a \|/ 但 (a ∧ b) ∨ (a ∧ c) = ⊥ ∨ ⊥ = ⊥ ⊥
模格(Modular Lattice)
满足模律:
- 分配格一定是模格,反之不成立
完备格(Complete Lattice)
任意子集(包括无限子集)都有最小上界和最大下界。
- Knaster-Tarski 定理:完备格上的单调函数有最小不动点
4. 示例
1. 子空间格
对于向量空间的所有子空间构成的偏序集 ,任意两个子空间 和:
交(Meet):
验证:
子空间封闭性:
对任意 和标量 :
所以 是子空间
最大下界(GLB):
- 下界性: 且
- 最大性:对任意子空间 满足 和 ,有
和 (Join):
验证:
子空间封闭性:
对任意 , 和标量 :
所以 是子空间
最小上界(LUB):
- 上界性: (因 ),同理
- 最小性:对任意子空间 满足 和 ,有 ,故 。
格的性质分析:
有界格:
- 最小元 (零子空间)
- 最大元 (全空间)
模格性(Modular Lattice):
子空间格满足模律:
反例说明非分配性:
取 ,设:
违反分配律,故为非分配格