在数学中,结合律(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)。