結合性:演算の順序と結果の関係
数学において、結合性(associativity)は、特定の
二項演算が持つ重要な性質です。複数の同じ演算が連続して適用される場合、演算の順番を変えても結果が変わらないことを意味します。この性質を満たす演算は結合法則を満たすと表現されます。
例えば、
実数の
加法と
乗法は結合的です。
(2 + 3) + 4 = 2 + (3 + 4) = 9
2 × (3 × 4) = (2 × 3) × 4 = 24
これらの式において、括弧の位置を変えても計算結果は変わりません。これは、
被演算子の順番を変えない限り、演算の順番が結果に影響を与えないことを意味します。
結合性は、演算子の順番を入れ替えても結果が変わらない可換性とは異なります。可換性を持つ
乗法は、a × b = b × a が成立しますが、結合性はそのような演算子の順番ではなく、演算それ自体の順番に関する性質です。
結合性の定義
集合S上で定義された
二項演算 が結合的であるとは、以下の結合法則が成立することです。
(x y)
z = x (y
z) (∀x, y, z ∈ S)
ここで、 は任意の
二項演算を表します。関数記法を用いると、以下のように表現できます。
f(f(x, y), z) = f(x, f(y, z))
一般化された結合法則
二項演算が結合的な場合、複数の演算を繰り返しても、括弧の位置に関係なく結果が同じになります。これを一般化された結合法則と呼びます。例えば、a, b, c, d の4つの数の積を計算する場合、以下の5通りの計算順序が考えられますが、演算が結合的であれば、全て同じ結果になります。
((ab)c)d, (ab)(cd), (a(bc))d, a((bc)d), a(b(cd))
そのため、結合的な演算では、括弧を省略して計算することができます。ただし、双条件演算子 ↔ のように、括弧の省略が意味を変える場合もあるので注意が必要です。
結合的演算の例
結合的演算の例として、以下が挙げられます。
文字列結合
複素数の
加法と
乗法
四元数の加法と乗法
八元数の
加法
最大公約数
最小公倍数
集合の交叉と合併
写像の合成
行列の積
非結合的演算
結合法則を満たさない演算を非結合的演算と呼びます。計算順序によって結果が異なります。非結合的演算の例として、以下が挙げられます。
減法
除法
冪乗
ベクトルの交叉積
無限和
非結合的演算では、括弧を用いて計算順序を明確にする必要があります。また、左結合や右結合といった規則を用いることで、括弧の省略を許容する場合もあります。
プログラミング言語では、演算子の結合性と優先順位が定義されています。結合性には、左結合、右結合、非結合の3種類があります。
左結合:a + b - c は (a + b) - c と解釈されます。
右結合:a = b = 1 は a = (b = 1) と解釈されます。
* 非結合:a < b < c は、通常はエラーになります。
優先順位と結合性は、式の評価順序を決定する規則です。しかし、最適化などによって、必ずしもこの規則通りに評価されるとは限りません。
まとめ
結合性は、
数学における重要な演算の性質です。多くの基本的な演算が結合性を持ちますが、結合性を持たない演算も存在します。
プログラミング言語においても、演算子の結合性は重要な概念であり、プログラムの挙動を理解するために理解する必要があります。 結合性の理解は、
数学やプログラミングの様々な場面で役立ちます。