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 analogy between the mind and a computer fails for many reasons. The brain is constructed by principles that assure diversity and degeneracy. Unlike a computer, it has no replicative memory. It is historical and value driven. It forms categories by internal criteria and by constraints acting at many scales, not by means of a syntactically constructed program. The world with which the brain interacts is not unequivocally made up of classical categories.”
    —Gerald M. Edelman (b. 1928)

    “For us necessity is not as of old an image without us, with whom we can do warfare; it is a magic web woven through and through us, like that magnetic system of which modern science speaks, penetrating us with a network subtler than our subtlest nerves, yet bearing in it the central forces of the world.”
    —Walter Pater (1839–1894)