形式陈述
幺半群是一个带有双侧单位元的半群理路半群Semigroup带有结合二元运算的集合。。具体地,它由非空集合 、二元运算 和元素 组成,满足
第一条是结合律,第二条是单位律。封闭性已经包含在运算的类型中:两个 中的元素合并后仍在 中。
结合律允许重新放置括号,却不允许调换元素顺序。若另有 ,才称为交换幺半群。若每个元素都有双侧逆,则得到群理路群Group配备结合二元运算、单位元,并且每个元素都有逆元的集合。;普通幺半群不要求可撤销操作。
单位元是唯一的:若 都是双侧单位元,则 。因此,既可把 列为结构数据,也可说这个半群“存在单位元”,二者表达同一类结构。
从 到 的幺半群同态是函数 ,要求
本条目采用保单位的同态约定;第二个条件不能在一般情形下由第一个省略。
直觉
幺半群描述一种能够连续合并、并允许“什么都不放”的操作。字符串连接是直接的例子:对三个片段 a、b、c,可以先把前两个连接成 ab,也可以先把后两个连接成 bc,再与剩余片段按原顺序连接,最终都得到 abc。空字符串接在任一侧都不改变内容。可是 ab 与 ba 不同,连接通常不交换。
结合律使长串 不必固定计算括号。例如可以先合并左半段和右半段,再合并两个结果。单位元则给空串一个结果:
这不是单独打补丁的特殊值;它保证把空片段插入任意分段计算都不改变答案。对重复元素,幂因此自然定义为 、,并满足 。
“能够合并”与“能够撤回”是不同能力。在 上,最大值运算以 为单位元,且满足结合律;但 ,合并后已无法区分此前是 还是 。因此删掉当前最大元素时,旧最大值通常不够用,还须保存其他候选值或额外计数。单位元只保证空输入可以参与组合,不保证其他输入可以被撤销。
例子与边界
三种不同的合并规律
是交换幺半群, 也是,但两者的运算与单位元都不同。讨论一个集合是否为幺半群时,必须同时说明运算。
字母表 上所有有限字符串组成 ,以连接为运算、空串 为单位元,称为自由幺半群。这里包括所有有限长度,不要求字符串长度统一,也不包含无限字符串。
一个集合 上的全部自映射 ,以函数复合理路函数复合Function composition · Composition of maps按先 f 后 g 的次序把映射串联为 g∘f。为运算、 为单位元,也构成幺半群。它允许不可逆操作:在 上,把所有输入变成 的函数 满足 ,但没有逆。幂等性表示重复做不再变化,不表示一次操作没有丢失信息。
只会合并平均值为什么不够
某一数据块有 个数、总和为 。若只保存平均值,直接平均两个块的均值会忽略块大小。一个元素的块 [0] 与三个元素的块 [4,4,4] 的均值分别为 ,平均这两个均值得到 ,而合并后的真实均值为 。
保存摘要 后,定义
结合性可以在两个坐标上分别验证:合并三个摘要得到 ,两种括号给出的坐标都相同; 则既不增加总和,也不增加数量。因此这给出交换幺半群。
上述两个数据块的摘要是 与 ,合并为 ,最后读取 。如果把第二块拆成 [4] 和 [4,4],相应计算变成
分块方式改变,摘要仍一致。最后只在数量大于零时读取均值 ;空摘要 可以参与合并,却不对应已经定义的均值。用于合并的数据与最终展示的统计量,因而可以是不同对象。
少一个条件会发生什么
在至少含两个元素的集合上定义 。它满足结合律,每个元素都是右单位元,却不存在左单位元,所以不是幺半群。要求双侧单位不能由一侧代替。
再看乘法幺半群 。常值映射 满足 ,但 ,所以只保持乘法还不够成为保单位的幺半群同态。
实现中还要区分数学运算与机器运算。实数加法结合,浮点加法却可能因舍入而不结合。数学上的任意括号重排保证,并不能不加条件地变成逐位相同的浮点并行结果。
推论与应用
同态把原数据的组合变成摘要的组合
若 是从字符串连接幺半群到某个摘要幺半群的同态,则
因此可以分别处理两个片段,再合并摘要;这正是检查分块计算是否保持含义的一种方法。反过来,自由幺半群上只要给每个字母指定一个目标幺半群元素,就能唯一地把整串映射定义成按顺序相乘。这种“先定义基本符号,再唯一扩展”的性质解释了自由二字。
有限自动机理路有限状态自动机Finite-state automaton · Finite automaton用有限个控制状态概括已读前缀,并沿带输入标号的转移识别有限字的模型家族。中,每个输入字母作用为一次状态变换;读入一个词就按读取顺序复合这些变换。把状态变换表示成幺半群元素,可以研究不同输入片段是否产生相同效果。若 表示读完词 后的状态变换,先读 再读 就有 ,因为函数复合从右向左执行。要把 写成保乘法的同态,可把目标运算定义为 ;必须先固定这个次序,不能直接把字符串顺序抄成通常的复合顺序。
对于维护区间摘要的树结构,只要摘要合并结合、并有空区间单位元,就能把子区间答案沿树合并。前缀扫描也能通过分块再组合计算所有前缀结果。若输入顺序有意义,例如矩阵乘积或字符串连接,分组可以调整,顺序仍须保留。
幺半群作用进一步描述“幺半群元素怎样变换某个集合”:单位元素不改变对象,两个元素连续作用等于其乘积的作用。它把抽象的可组合操作与具体状态变化联系起来,而不要求每次变化可逆。
参考资料
- Alan Doerr、Kenneth Levasseur,Applied Discrete Structures,§14.1 Monoids,开放教材在线版(访问于 2026-10-03):结合律、双侧单位元与自映射幺半群。
- Emily Riehl,Category Theory in Context,作者开放版,第 1 章:幺半群作为单对象范畴,以及保单位映射的角色。
- Guy E. Blelloch,Prefix Sums and Their Applications,作者开放章节 §§1.1–1.2:结合运算在并行前缀计算中的使用。