Monoid - Monoids in Computer Science

Monoids in Computer Science

In computer science, many abstract data types can be endowed with a monoid structure. In a common pattern, a sequence of elements of a monoid is "folded" or "accumulated" to produce a final value. For instance, many iterative algorithms need to update some kind of "running total" at each iteration; this pattern may be elegantly expressed by a monoid operation. Alternatively, the associativity of monoid operations ensures that the operation can be parallelized by employing a prefix sum or similar algorithm, in order to utilize multiple cores or processors efficiently.

Given a sequence of values of type M with identity element and associative operation, the fold operation is defined as follows:

In addition, any data structure can be 'folded' in a similar way, given a serialization of its elements. For instance, the result of "folding" a binary tree might differ depending on pre-order vs. post-order tree traversal.

Read more about this topic:  Monoid

Famous quotes containing the words computer and/or science:

    The computer takes up where psychoanalysis left off. It takes the ideas of a decentered self and makes it more concrete by modeling mind as a multiprocessing machine.
    Sherry Turkle (b. 1948)

    The knowledge of an unlearned man is living and luxuriant like a forest, but covered with mosses and lichens and for the most part inaccessible and going to waste; the knowledge of the man of science is like timber collected in yards for public works, which still supports a green sprout here and there, but even this is liable to dry rot.
    Henry David Thoreau (1817–1862)