Ассоциативность
Ассоциативность — это свойство бинарной операции \u2014 способа объединять элементы множества, при котором порядок группировки (скобок) не влияет на результат. Формально это записывают так: . Иными словами, когда операция ассоциативна, выражения с одинаковой последовательностью операндов, но с разной расстановкой скобок, дают один и тот же результат; поэтому при вычислениях можно опускать скобки или менять способ последовательного применения операции без опасения изменить значение.
Ассоциативность встречается в самых разных областях математики и информатики. В обычной арифметике сложение и умножение являются ассоциативными: и . Это позволяет вводить такие структуры, как полугруппы и моноиды, где основной акцент делается на ассоциативность операции (в случае моноида дополнительно присутствует нейтральный элемент): . В программировании ассоциативность важна для оптимизации и параллелизации: операции свертки (reduce) можно разбивать на независимые части, выполнять их параллельно и затем объединять результаты без потери корректности. Ниже показано схематическое изображение распределённой обработки, где скобки переставляют без изменения результата: {IMAGE_0}
Однако не все операции ассоциативны. Яркие контрпримеры — вычитание и возведение в степень: и . Наличие или отсутствие ассоциативности влияет на правила вычислений и требует явной расстановки скобок там, где результат зависит от группировки. В линейной алгебре, в отличие от покомпонентных операций, произведение матриц ассоциативно, что записывают как . Это свойство позволяет переставлять порядок вычислений при умножении большого числа матриц, выбирая наиболее эффективную стратегию.
Простой числовой пример ассоциативного сложения: — обе скобки дают одинаковый результат. Пример неассоциативной операции: показывает, что разные скобки дают разные значения.
Ассоциативность умножения матриц позволяет записать: . На практике это значит, что для вычисления произведения трёх и более матриц можно сначала умножать пары в любом порядке, выбирая тот, который быстрее по памяти и времени. Иллюстрация последовательности умножений: {IMAGE_1}