Значение ассоциативных и коммутативных точно такое же, как в математике.
Оператор "+" называется коммутативным, если a + b =b + a
Оператор "+" называется ассоциативным, если (a + b) + c = a + (b + c)
Для "комбинированного преобразования", описанного в документации, вы пытаетесьреализовать накопление.
s = a + b + c + d
, где "+" - любой оператор.
Ассоциативность является абсолютным требованием для возможности распараллеливаниятакая операция.Если «+» не является ассоциативным
a+b+c+d
имеет значение no , как ((a+b)+c)+d != (a+(b+c))+d
.Чтобы придать выражению, не заключенному в скобки, значение, результат не должен зависеть от группировки операций.
Нельзя изменить скобки, чтобы изменить порядок операций для их параллельного выполнения
(((a+b) + c) + d)
isпо существу последовательный: вычисление a + b, затем добавление c, затем добавление d
((a+b) + (c+d))
позволяет вычислять (a+b)
и (c+d)
параллельно.
Коммутативность менее частотребуется в качестве ограничения для распараллеливания, но позволяет переставлять порядок операндов.