I've recently been learning a bit about parallel computation. Two things I recently learned about are Reduce and Scan.
Where Reduce is defined as 2-Tuple of a Set of elements and a binary operation that is associative.
Scan is defined as a 2-Tuple of a set of elements and a binary operation that is associative and that this pair has an identity.
So a Scan is essentially a Group. Now I haven't looked too much further into this, but I was wondering if any of you might know if this idea that parallel computation works on sets of information with binary (or really any associative function) operations and applied principles of abstract algebra to it?
Reducequalifies as a semigroup, andScanis a monoid (a monoid is a semi-group with an identity).Neither is a group, which is, essentially, a monoid in which the inverse of every element in the "monoid" is also in the "monoid".
Take a peek at the linked entries in Wikipedia to get a feel for the properties shared by semigroups, and those shared by monoids.