在数学中,结合律(associative property)是二元运算可以有的一个性质,意指在一个包含有二个以上的可结合运算子的表示式,只要运算数的位置没有改变,其运算的顺序就不会对运算出来的值有影响。亦即,重新排列表示式中的括号并不会改变其值。例如:
![{\displaystyle (5+2)+1=5+(2+1)=8}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d5fa645122001a5060d3f0341534c92de1d234a4)
上式中的括号虽然重新排列了,但表示式的值依然不变。当这在任何实数的加法上都成立时,我们说“实数的加法是一个可结合的运算”。
结合律不应该和交换律相混淆。交换律会改变表示式中运算元的位置,而结合律则不会。例如:
![{\displaystyle (5+2)+1=5+(2+1)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3f2108c6cf13fc5428505827d9d6d268229bf87b)
是一个结合律的例子,因为其中的括号改变了(且因此运算子在运算中的顺序也改变了),而运算元
、
、
则在原来的位置中。再来,
![{\displaystyle (5+2)+1=(2+5)+1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/89961582a9b8e323ee301bd454860d4fca948010)
则不是一个结合律的例子,因为运算元
和
的位置互换了。
可结合的运算在数学中是很常见的,且事实上,大多数的代数结构确实会需要它们的二元运算是可结合的。不过,也有许多重要且有趣的运算是不可结合的;其中一个简单的例子为向量积。
定义
形式上,一个在集合
上的二元运算
被称之为可结合的若其满足下面的结合律:
。
运算的顺序并不会影响到表示式的值,且可证明这在含有“任意”多个
运算的表示式之下也依然是成立的。因此,当
是可结合的时,运算的顺序可以不需要去规范而不会使其意义不清,所以可以省略掉括号而简单写成:
![{\displaystyle x*y*z.\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3cfbc782b90f3058f15dcbee88690fa12f3a0923)
不过,需要记住的是,改变运算的顺序并不包含或允许以移动表示式中的运算元来改变其真实的运算。
例子
一些可结合的运算的例子如下。
![{\displaystyle \left.{\begin{matrix}(x+y)+z=x+(y+z)=x+y+z\quad \\(x\,y)z=x(y\,z)=x\,y\,z\qquad \qquad \qquad \quad \ \ \,\end{matrix}}\right\}\forall x,y,z\in \mathbb {R} .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/684bd956f24e044efa4e0e47e4950cf47b6db511)
- 复数和四元数的加法与乘法是可结合的。八元数的加法也是可结合的,但其乘法则是不可结合的。
![{\displaystyle \left.{\begin{matrix}\operatorname {gcd} (\operatorname {gcd} (x,y),z)=\operatorname {gcd} (x,\operatorname {gcd} (y,z))=\operatorname {gcd} (x,y,z)\ \quad \\\operatorname {lcm} (\operatorname {lcm} (x,y),z)=\operatorname {lcm} (x,\operatorname {lcm} (y,z))=\operatorname {lcm} (x,y,z)\quad \end{matrix}}\right\}\forall x,y,z\in \mathbb {Z} .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5e0a68499a09528834a34313d2f55d006379969d)
- 因为线性变换是个可表示成矩阵的函数,其中的函数复合则可以用矩阵乘法来表示,立即可知矩阵乘法为可结合的。
![{\displaystyle \left.{\begin{matrix}(A\cap B)\cap C=A\cap (B\cap C)=A\cap B\cap C\quad \\(A\cup B)\cup C=A\cup (B\cup C)=A\cup B\cup C\quad \end{matrix}}\right\}\forall A,B,C.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/34ce188f2235e4702a712b9488242f3b6b73d824)
- 若
是某个集合且
为所有从
映射至
的函数所组成的集合,则在
上的函数复合的运算是可结合的:
。
- 更一般性地,给定四个集合
、
、
和
,且
、
,则
![{\displaystyle (f\circ g)\circ h=f\circ (g\circ h)=f\circ g\circ h}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7ac9ff2f14721c0ad9348126aad6a77a0a014b8d)
- 和前面一样。简单地说,映射的复合总会是可结合的。
- 给定一个有三个元素
、
和
的集合,其运算如下:
|
![{\displaystyle \times }](https://wikimedia.org/api/rest_v1/media/math/render/svg/0ffafff1ad26cbe49045f19a67ce532116a32703) |
A |
B |
C
|
A
|
A |
A |
A
|
B
|
A |
B |
C
|
C
|
A |
A |
A
|
是可结合的。不过,此运算不是可交换的。
不可结合性
一个在集合
上的二元运算*若不满足结合律,则称之为不可结合的。表示成符号即为:
。
在此一运算下,运算的顺序是有影响的。减法、除法和幂都是不可结合运算的简单例子:
![{\displaystyle {\begin{matrix}(5-3)-2\neq 5-(3-2)\quad \\(4/2)/2\neq 4/(2/2)\qquad \qquad \\2^{(1^{2})}\neq (2^{1})^{2}.\quad \qquad \qquad \end{matrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c6c1818086d41ca717f42a94eadeb5b683d2cd16)
一般,当不可结合运算在一个表示出现多于一次时,括号就必须被使用来表示其运算顺序。不过,数学家会对若干常见的不可结合运算采用一种特别的运算顺序的规则。这单纯只是个为了减少括号的语法约定。
二进位浮点数
在电脑科学中,由于采用二进位浮点数运算,因此加法不符合结合律。[1]
![{\displaystyle (a+b)+c\neq a+(b+c)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4590790abe76beae131ed3ce7ec91e07645e9c59)
以下两个运算的结果在电脑中不相等:
![{\displaystyle (0.1+0.2)+0.3}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f11a45ed7f36f857fb33b443934f23675beb22bd)
![{\displaystyle 0.1+(0.2+0.3)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7a68fb97c945a10801ac149f203c5419d1652cab)
使用相等运算符进行比较,会传回假(false)。
参考文献
参见