結合性:数学とコンピューティングにおける定義、例、重要性
結合性とは、二項演算において項のグループ化を変えても結果が変わらない性質である:(a⋆b)⋆c = a⋆(b⋆c)。本項では概念、例、反例、歴史、実用上の影響を解説する。
概要
結合性は、多くの数学的演算がもつ基本的な性質である。非形式的には、3つの要素に対する演算⋆について、被演算子のグループ化を変えても結果が変わらないとき、その演算は結合的である。すなわち、(a⋆b)⋆c = a⋆(b⋆c) が成り立つ。この考え方は算術、代数的構造、多くのアルゴリズムに適用される。通常この用語は、2つの入力を1つの結果に結び付ける二項演算を指す。結合性を理解することは、式を簡潔にし、計算における特定の最適化を可能にする。
形式的定義と基本的な帰結
集合S上の二項演算⋆が結合的であるとは、Sの任意のa、b、cについて、(a⋆b)⋆c = a⋆(b⋆c) が成立することである。演算が結合的であれば、同じ演算子が長く連なる式では、評価順序を示す括弧を省略できる。どのような適法な括弧付けをしても同じ結果になるためである。通常の算術において a + b + c のような式が曖昧でないのは、この性質による。結合性だけからは、可換性(a⋆b = b⋆a)や単位元の存在といった別の性質は導かれない。
代表的な例
身近な演算の多くは結合的である。
- 加法:(x + y) + z = x + (y + z) は数やベクトルについて成立し、和の項を自由にまとめ直すことができる。加法は標準的な例である。
- 乗法:(x · y) · z = x · (y · z) は、実数、サイズが適合する行列(注意を要する)、および多くの代数系で成立する。適用される文脈については乗法を参照。
非結合的な演算と対比
すべての演算が結合的であるわけではない。たとえば通常の減法は結合性を満たさない。(10 − 5) − 2 ≠ 10 − (5 − 2) である。両辺を計算すると、それぞれ3と7になり、まとめ方によって結果が変化する。したがって減法は非結合的である。除法や他の多くの演算も非結合的であり、べき乗は慣習上、通常は右結合的である。つまり a^(b^c) は a^(b^c) として評価されるが、これは代数的な意味での結合性とは異なる。結合性と可換性の区別は重要である。可換性は被演算子の交換を許すのに対し、結合性が許すのはグループ化の変更だけである。
歴史、代数における役割、応用
結合性という概念は、19世紀に代数系が形式化される過程で現れた。結合性は抽象代数学の構造において中心的な役割を果たす。結合的な二項演算を備えた集合は半群と呼ばれ、これに単位元を加えるとモノイドになる。群には、結合性に加えて逆元と単位元が必要である。環、体、代数を定義する際にも、結合性の認識は重要である。
実用上の重要性:計算と正しさ
コンピューティングでは、結合性により、丸め誤差の低減、性能の改善、処理の並列化のために演算を再結合する、といったアルゴリズム上の選択が可能になる。ただし、浮動小数点演算は丸めのため厳密には結合的ではない。そのため、有限精度の数を用いると、(a + b) + c と a + (b + c) がわずかに異なることがある。したがって、式を再結合するコンパイラ最適化は慎重に適用しなければならない。構文解析やプログラミング言語では、「結合性」という語は連続する演算子をどのようにグループ化するか、すなわち左結合か右結合かを表す意味でも使われる。これは、演算子自体が結合的である場合でも、式の構文解析に影響する。
要約と主な事項
結合性は、繰り返される演算についての推論を単純化し、多くの代数的構成や最適化を支えている。よく知られた演算の多くは結合的である一方、重要な演算のいくつかはそうではなく、数値計算や形式的証明では特別な注意が必要である。関連する話題については、二項演算および演算子の優先順位に関する資料を参照されたい。演算の順序は関連するが別の概念であり、グループ化による不変性を保証するのではなく、異なる演算子間の慣習的な優先順位を定める。
関連項目
著者
AlegsaOnline.com 結合性:数学とコンピューティングにおける定義、例、重要性 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/6767