“聚合版本额外给每条记录权重,取值于一个交换半群,并返回命中权重之和。交换律让无序点集的聚合不依赖枚举顺序;只有结合律的字符串连接会因 与 而不同,必须另定顺序后再谈相应查询。半群未必有单位元…”
形式陈述
半群是二元组
运算的值仍在
结合律使任意有限非空序列的乘积不依赖括号。例如四项时,可以逐步改写
每一步都把三个已经合法的半群元素代入结合律,因子次序始终是
对于单个元素,定义
直觉
半群保留连续组合所需的最低结构。先把一串操作分成若干连续片段,各片段算出一个结果,再按原顺序组合,结果应与一次处理整串相同。字符串连接、矩阵乘法和状态转换都遵循这个规则。
“括号不重要”与“顺序不重要”是两回事。例如先写入状态再读取,与先读取再写入通常不同,但把三步过程的前两步或后两步封装为一个过程,不应改变整体含义。空过程需要额外指定单位元,撤销过程则需要更强的可逆性。
例子与边界
正整数在加法下构成半群,所需单位元
非空字符串在连接下构成半群。把三个片段 ab、c、de 送入不同计算树:左边先拼成 abc 再接 de,右边先拼成 cde 再接 ab 的后面,最终都得到 abcde。但交换前两个片段会得到 cabde,已经改变了输入顺序。这里连接后的字符串依然非空,所以每个中间结果都留在同一底集中。
结合性不能由交换性推出。在实数上定义
通常减法也失败:
另一种极端是非空集合
推论与应用
给半群加入双侧单位元就得到幺半群。若原来没有单位元,可添一个新元素
自动机读入一个词所产生的状态变换,可以按词的连接组合。有限状态集只产生有限多个这样的变换,因而半群和幺半群能把正则语言的识别转化为有限代数问题。区间聚合与并行前缀扫描同样依赖结合性:可改变计算树的形状,但对非交换运算必须保持叶子的原次序。动态规划中的摘要合并只有在确实满足这一接口时才能如此重排;一般状态转移并不自动构成半群。
参考资料
- Alan Doerr and Kenneth Levasseur, Applied Discrete Structures,开放教材,§14.1 “Monoids”(在线版,访问于 2026-10-03)。
- J. S. Milne, Group Theory,第 4 版课程讲义,2021,§1 “Definitions and examples” 中结合律、半群与空乘积的讨论。