В выражении, содержащем два или более вхождений подряд одного и того же ассоциативного оператора, порядок выполнения операций не имеет значения, пока не изменится последовательность операндов . То есть (после переписывания выражения с помощью скобок и в инфиксной нотации, если необходимо) перестановка скобок в таком выражении не изменит его значения. Рассмотрим следующие уравнения:
Несмотря на то, что скобки были переставлены в каждой строке, значения выражений не изменились. Поскольку это справедливо при выполнении сложения и умножения любых действительных чисел , можно сказать, что «сложение и умножение действительных чисел являются ассоциативными операциями».
Ассоциативность — это не то же самое, что коммутативность , которая определяет, влияет ли порядок двух операндов на результат. Например, порядок не имеет значения при умножении действительных чисел, то есть a × b = b × a , поэтому мы говорим, что умножение действительных чисел является коммутативной операцией. Однако такие операции, как композиция функций и умножение матриц, являются ассоциативными, но (в общем случае) не коммутативными.
Ассоциативные операции широко распространены в математике; фактически, многие алгебраические структуры (такие как полугруппы и категории ) явно требуют, чтобы их бинарные операции были ассоциативными.
Однако многие важные и интересные операции неассоциативны; некоторые примеры включают вычитание , возведение в степень и векторное векторное произведение . В отличие от теоретических свойств действительных чисел, сложение чисел с плавающей точкой в информатике неассоциативно, и выбор способа связывания выражения может оказать существенное влияние на ошибку округления.
Определение
Формально бинарная операция на множестве S называется ассоциативной, если она удовлетворяет ассоциативному закону :
, для всех в S .}}
Здесь ∗ используется для замены символа операции, который может быть любым символом, и даже отсутствием символа ( сопоставлением ), как для умножения .
, для всех в S .
Ассоциативный закон можно также выразить в функциональной записи следующим образом:
Обобщенный ассоциативный закон
Если бинарная операция ассоциативна, повторное применение операции дает тот же результат независимо от того, как вставлены допустимые пары скобок в выражении. [2] Это называется обобщенным ассоциативным законом .
Число возможных скобок — это просто каталонское число ,
, для n операций над n+1 значениями. Например, произведение 3 операций над 4 элементами может быть записано (игнорируя перестановки аргументов) следующими возможными способами:
Если операция произведения ассоциативна, обобщенный ассоциативный закон гласит, что все эти выражения дадут тот же результат. Так что, если только выражение с опущенными скобками уже не имеет другого значения (см. ниже), скобки можно считать ненужными, а «этот» продукт можно однозначно записать как
Примером, где это не работает, является логическое двуусловие ↔ . Оно ассоциативно; таким образом, A ↔ ( B ↔ C ) эквивалентно ( A ↔ B ) ↔ C , но A ↔ B ↔ C чаще всего означает ( A ↔ B ) и ( B ↔ C ) , что не эквивалентно.
Примеры
Вот некоторые примеры ассоциативных операций.
Конкатенация трех строк , , может быть вычислена путем конкатенации первых двух строк (давая ) и добавления третьей строки ( ), или путем объединения второй и третьей строк (давая ) и конкатенации первой строки ( ) с результатом. Оба метода дают одинаковый результат; конкатенация строк ассоциативна (но не коммутативна)."hello"" ""world""hello ""world"" world""hello"
Ввиду ассоциативности группирующие скобки можно опустить без возникновения двусмысленности.
Тривиальная операция x ∗ y = x (то есть результат — первый аргумент, независимо от того, какой второй аргумент) ассоциативна, но не коммутативна. Аналогично, тривиальная операция x ∘ y = y (то есть результат — второй аргумент, независимо от того, какой первый аргумент) ассоциативна, но не коммутативна.
Если M — некоторое множество, а S обозначает множество всех функций из M в M , то операция композиции функций на S ассоциативна:
Немного более общо, даны четыре множества M , N , P и Q , с h : M → N , g : N → P , и f : P → Q , тогда
как и прежде. Короче говоря, композиция отображений всегда ассоциативна.
В теории категорий композиция морфизмов ассоциативна по определению. Ассоциативность функторов и естественных преобразований следует из ассоциативности морфизмов.
Рассмотрим множество из трех элементов: A , B и C. Следующая операция:
ассоциативна. Так, например, A ( B C ) = ( A B ) C = A . Эта операция не является коммутативной.
Поскольку матрицы представляют линейные функции , а умножение матриц представляет композицию функций, можно сразу сделать вывод, что умножение матриц является ассоциативным. [3]
В математике сложение и умножение действительных чисел ассоциативны. Напротив, в информатике сложение и умножение чисел с плавающей точкой не ассоциативны, поскольку могут быть введены различные ошибки округления, когда значения разного размера объединяются в разном порядке. [7]
Чтобы проиллюстрировать это, рассмотрим представление числа с плавающей точкой с 4-битной мантиссой :
Хотя большинство компьютеров вычисляют с 24 или 53 битами мантиссы, [8] это все еще является важным источником ошибок округления, и такие подходы, как алгоритм суммирования Кахана, являются способами минимизировать ошибки. Это может быть особенно проблематично в параллельных вычислениях. [9] [10]
Обозначение неассоциативных операций
В общем случае скобки должны использоваться для указания порядка оценки , если неассоциативная операция встречается в выражении более одного раза (если только нотация не определяет порядок другим способом, например ). Однако математики договариваются о конкретном порядке оценки для нескольких распространенных неассоциативных операций. Это просто соглашение об обозначениях, чтобы избежать скобок.
Левоассоциативная операция — это неассоциативная операция, которая обычно вычисляется слева направо, т. е.
в то время как правоассоциативная операция традиционно вычисляется справа налево:
Имеют место как левоассоциативные, так и правоассоциативные операции. Левоассоциативные операции включают в себя следующее:
Вычитание и деление действительных чисел [11] [12] [13] [14] [15]
Применение функции
Эта нотация может быть мотивирована изоморфизмом каррирования , который допускает частичное применение.
К правоассоциативным операциям относятся следующие:
Возведение действительных чисел в степень в надстрочной записи
Возведение в степень обычно используется со скобками или правоассоциативно, поскольку повторная операция возведения в степень с левой ассоциативностью малополезна. Повторные степени в основном переписывались бы с умножением:
Правильно отформатированный верхний индекс по своей сути ведет себя как набор скобок; например, в выражении сложение выполняется до возведения в степень, несмотря на отсутствие явных скобок, обернутых вокруг него. Таким образом, для выражения, такого как , сначала вычисляется полная экспонента основания . Однако в некоторых контекстах, особенно при рукописном вводе, разницу между , и может быть трудно увидеть. В таком случае обычно подразумевается правая ассоциативность.
Уильям Роуэн Гамильтон, по-видимому, ввел термин «ассоциативное свойство» [17] около 1844 года, когда он размышлял о неассоциативной алгебре октонионов, о которой он узнал от Джона Т. Грейвса . [18]
Смотрите также
Найдите ассоциативное свойство в Викисловаре, бесплатном словаре.
^ Хангерфорд, Томас В. (1974). Алгебра (1-е изд.). Springer . стр. 24. ISBN978-0387905181Определение 1.1 (i) a(bc) = (ab)c для всех a, b, c из G.
^ Дурбин, Джон Р. (1992). Современная алгебра: введение (3-е изд.). Нью-Йорк: Wiley. стр. 78. ISBN978-0-471-51001-7. Если являются элементами множества с ассоциативной операцией, то произведение однозначно, то есть будет получен один и тот же элемент независимо от того, как в произведении расставлены скобки.
^ "Ассоциативность матричного продукта". Khan Academy . Получено 5 июня 2016 г.
^ IEEE Computer Society (29 августа 2008 г.). Стандарт IEEE для арифметики с плавающей точкой . doi :10.1109/IEEESTD.2008.4610935. ISBN978-0-7381-5753-5. Стандарт IEEE 754-2008.
^ Вилья, Оресте; Чаваррия-мир, Даниэль; Гурумурти, Видья; Маркес, Андрес; Кришнамурти, Шрирам, Влияние неассоциативности чисел с плавающей точкой на числовые вычисления в системах с массивной многопоточностью (PDF) , заархивировано из оригинала (PDF) 15 февраля 2013 г. , извлечено 8 апреля 2014 г.
^ Голдберг, Дэвид (март 1991 г.). «Что каждый специалист по компьютерам должен знать об арифметике с плавающей точкой» (PDF) . ACM Computing Surveys . 23 (1): 5–48. doi :10.1145/103162.103163. S2CID 222008826. Архивировано (PDF) из оригинала 2022-05-19 . Получено 20 января 2016 г. .
^ Джордж Марк Бергман «Порядок арифметических операций»
^ "Порядок действий". Место образования.
^ «Приказ операций», временная метка 5м40с. Академия Хана .
^ «Использование порядка операций и исследование свойств». Архивировано 16 июля 2022 г. на Wayback Machine , раздел 9. Департамент образования Вирджинии.
^ Бронштейн, de:Taschenbuch der Mathematik , страницы 115-120, глава: 2.4.1.1, ISBN 978-3-8085-5673-3
^ Экспоненциальная ассоциативность и стандартная математическая нотация Codeplea. 23 августа 2016 г. Получено 20 сентября 2016 г.