“常见的 min、max、gcd 都是半格运算,所以教材常把常数查询描述为“半格情形”。半格是充分条件,却比算法真正需要的幂等半群更强。”
形式陈述
半格有两种等价表达。
代数上,半格是交换的幂等半群
序理论上,可定义
这给出偏序:幂等律保证自反性,交换律保证反对称性,结合律保证传递性。在这个序下,
半格指定一种二元 meet 或 join。格则要求在同一个偏序下,每对元素既有最大下界,又有最小上界;这两种运算满足吸收律。
直觉
半格描述“合并两个对象后,只保留共同信息”或“汇总两个对象的最小共同上界”。交换性让输入次序无关,结合性让多项合并无须括号,幂等性让重复证据不产生额外效果。
一个半格运算会反过来决定“谁的信息更少”这套偏序。因此代数与序不是两份独立数据:选定 meet 后,次序由
例子与边界
幂集按包含关系排序,交集给出 meet,并集给出 join。正整数按整除关系排序时,
取集合族
再取一个不同于
对至少含两个元素的集合,左零运算
推论与应用
每个格在 meet 与 join 运算下分别形成半格。meet 的单位元是顶元,因为
在按集合并汇总信息的数据流分析中,交换律使汇总次序无关,结合律允许分批合并,幂等律则保证重复收到同一份信息不会改变结果。Sparse Table 的重叠区间查询也利用结合律和幂等律:重叠部分计算两次后,汇总值仍保持不变。这个算法只需幂等半群;常用的 min/max/gcd 还满足交换律,因此也是半格运算。
参考资料
- B. A. Davey and H. A. Priestley, Introduction to Lattices and Order, 2nd ed., Cambridge University Press, 2002, Chapters 1–2.
- Garrett Birkhoff, Lattice Theory, 3rd ed., American Mathematical Society, 1967, Chapter I.
- George Grätzer, Lattice Theory: Foundation, Birkhäuser, 2011, Chapters 1–2.
- Richard P. Stanley, Enumerative Combinatorics, Volume 1, 2nd ed., Cambridge University Press, 2012,Proposition 3.3.1:有限 meet-semilattice 加顶元得到格。