Tính kết hợp

Trong toán học, **tính kết hợp** là tính chất của một số phép toán hai ngôi rằng thay đổi các dấu ngoặc trong biểu thức sẽ không làm thay đổi kết quả. Trong logic mệnh đề, **tính kết hợp** là quy tắc thay hợp lệ cho các biểu thức trong các bài chứng minh logic.

Trong các biểu thức có sự xuất hiện của hai nhiều hơn số lần của cùng toán hạng có tính kết hợp, kết quả của biểu thức đó sẽ không thay đổi bất kể sự thay đổi thứ tự các phép toán trên đó, miễn là dãy các toán hạng cũng không thay đổi. Nghĩa là (sau khi viết lại biểu thức bằng các dấu ngoặc), thay đổi vị trí các dấu ngoặc trong biểu thức đó. Để lấy ví dụ, xét các phương trình sau:

\begin{align}
(5 + 3) + 2 &= 5 + (3 + 2) = 10 \,\\
5 \times (3 \times 2) &= (5 \times 3) \times 2 = 30 .
\end{align}

Mặc dù các dấu ngoặc được sắp xếp lại trên mỗi phương trình, giá trị của các biểu thức đó vẫn không thay đổi. Bởi tính chất này đúng khi thực hiện phép cộng và nhân trên bất kỳ số thực nào, ta có thể nói rằng "phép cộng và nhân của số thực có tính kết hợp".

Tính kết hợp không giống như tính giao hoán bởi tính giao hoán chỉ đề cập thứ tự của hai toán hạng trong tính toán. Lấy ví dụ, Thứ tự các toán hạng không cần để ý tới khi nhân các số thực bởi , nên ta nói phép nhân các số thực có tính giao hoán. Tuy nhiên có các phép toán như phép hợp hàm và phép nhân ma trận có tính kết hợp nhưng (thường thì) không giao hoán.

Có rất nhiều phép toán có tính kết hợp trong toán học; thậm chí, nhiều cấu trúc đại số (chẳng hạn như nửa nhóm và phạm trù) yêu cầu phép toán hai ngôi của nó phải có tính kết hợp.

Song, cũng có nhiều phép toán hai ngôi quan trọng không có tính kết hợp; các ví dụ nổi bật bao gồm phép trừ, phép mũ, và tích vectơ. Ngược lại với lý thuyết của số thực, trong khoa học máy tính, phép cộng các số thực dấu phẩy động không có tính kết hợp, do đó cách kết hợp một biểu thức sẽ có ảnh hưởng lớn tới kết quả do sai số làm tròn.

## Định nghĩa
Giả sử trên một tập hợp *X* bất kì có trang bị một phép toán hai ngôi *, tức là tồn tại một hàm số:

:f: X\times X\rightarrow X\ \ \ (a,b)\mapsto c=f(a,b)

Ta ký hiệu:
:*a***b* = *f*(*a*,*b*)

Phép toán * có tính **kết hợp** nếu như 
:(*a***b*)**c* = *a**(*b***c*) 
với mọi *a*, *b*, *c* là phần tử của *X*.

## Ví dụ khác
* Các phép toán cộng và nhân trên số thực có tính kết hợp.
* Phép nhân ma trận có tính kết hợp, nhưng (thường thì) không có tính giao hoán.
* Hai phép bội chung nhỏ nhất và ước chung lớn nhất có tính kết hợp.
:: 
\left.
\begin{matrix}
\operatorname{BCNN}(\operatorname{BCNN}(x,y),z)=
\operatorname{BCNN}(x,\operatorname{BCNN}(y,z))=
\operatorname{BCNN}(x,y,z)\ \quad
\\
\operatorname{UCLN}(\operatorname{UCLN}(x,y),z)=
\operatorname{UCLN}(x,\operatorname{UCLN}(y,z))=
\operatorname{UCLN}(x,y,z)\quad
\end{matrix}
\right\}\mbox{ với mọi }x,y,z\in\mathbb{Z}.

* Phép cộng và nhân của số phức và số quaternion có tính kết hợp. Khi sang các số octonion thì phép cộng vẫn mang tính kết hợp, nhưng phép nhân thì không.  
* Trong khoa học máy tính, phép nối xâu có tính kết hợp. Cụ thể nếu ta có `"Hôm nay "`, `"trời "`, `"nắng"`, việc nối xâu đầu tiên với xâu thứ hai rồi mới nối xâu thứ ba, hoặc nối xâu thứ hai với xâu thứ ba rồi mới nối xâu thứ nhất đều cho chung một kết quả là `"Hôm nay trời nắng"`. Phép nối xâu không có tính giao hoán.

## Phép toán không có tính kết hợp
Một phép toán hai ngôi ***** trên tập S gọi là phép toán không có tính kết hợp nếu
:(x * y) * z \ne x * (y * z)\qquad\mbox{với một số }x, y, z \in S
Đối với các phép toán như vậy, thứ tự tính toán trở nên quan trọng, lấy ví dụ:
* Phép trừ
5 - (3 - 2) \ne (5 - 3) - 2 
* Phép chia
4 : (2 : 2) \ne (4 : 2) : 2 
* Phép lũy thừa
2^{(1^2)} \ne (2^1)^2

## Xem thêm
* Phép toán hai ngôi
* Giao hoán
* Phân phối

## Tham khảo