Upwards and downwards accumulations on trees
An accumulation is a higher-order operation over structured objects of some type; it leaves the shape of an object unchanged, but replaces each element of that object with some accumulated information about the other elements. Upwards and downwards accumulations on trees are two instances of this scheme; they replace each element of a tree with some function—in fact, some homomorphism—of that element's descendants and of its ancestors, respectively. These two operations can be thought of as passing information up and down the tree.
We introduce these two accumulations, and show how together they solve the so-called prefix sums problem.
KeywordsParallel Time Initial Algebra Parallel Prefix Program Research Group Algebraic Data Type
Unable to display preview. Download preview PDF.
- 1.Selim G. Akl. Design and Analysis of Parallel Algorithms. Prentice-Hall, 1989.Google Scholar
- 2.Roland Backhouse. An exploration of the Bird-Meertens formalism. In International Summer School on Constructive Algorithmics, Hollum, Ameland. STOP project, 1989. Also available as Technical Report CS 8810, Department of Computer Science, Groningen University, 1988.Google Scholar
- 3.Richard S. Bird. An introduction to the theory of lists. In M. Broy, editor, Logic of Programming and Calculi of Discrete Design, pages 3–42. Springer-Verlag, 1987. Also available as Technical Monograph PRG-56, from the Programming Research Group, Oxford University.Google Scholar
- 4.Richard S. Bird. Lectures on constructive functional programming. In Manfred Broy, editor, Constructive Methods in Computer Science. Springer-Verlag, 1988. Also available as Technical Monograph PRG-69, from the Programming Research Group, Oxford University.Google Scholar
- 5.G. Estrin. Organization of computer systems—the fixed plus variable structure computer. In Proceedings Western Joint Computer Conference, pages 33–40, May 1960.Google Scholar
- 6.Maarten M. Fokkinga. Tupling and mutumorphisms. The Squiggolist, 1(4):81–82, June 1990.Google Scholar
- 7.Jeremy Gibbons. Algebras for Tree Algorithms. D. Phil. thesis, Programming Research Group, Oxford University, 1991. Also available as Technical Monograph PRG-94 from the Programming Research Group, Oxford.Google Scholar
- 8.Tatsuya Hagino. A Categorical Programming Language. PhD thesis, Laboratory for the Foundations of Computer Science, Edinburgh, September 1987.Google Scholar
- 9.Peter M. Kogge and Harold S. Stone. A parallel algorithm for the efficient solution of a general class of recurrence equations. IEEE Transactions on Computers, C-22(8):786–793, August 1973.Google Scholar
- 10.Richard E. Ladner and Michael J. Fischer. Parallel prefix computation. Journal of the ACM, 27(4):831–838, October 1980.Google Scholar
- 11.Grant Malcolm. Algebraic Data Types and Program Transformation. PhD thesis, Rijksuniversiteit Groningen, September 1990.Google Scholar
- 12.Lambert Meertens. Algorithmics: Towards programming as a mathematical activity. In J. W. de Bakker, M. Hazewinkel, and J. K. Lenstra, editors, Proc. CWI Symposium on Mathematics and Computer Science, pages 289–334. North-Holland, 1986.Google Scholar
- 13.Lambert Meertens. Paramorphisms. Technical Report CS-R9005, CWI, Amsterdam, 1990.Google Scholar
- 14.Gary L. Miller and John H. Reif. Parallel tree contraction and its application. In 26th FOCS, pages 478–489, 1985.Google Scholar
- 15.John T. O'Donnell. Derivation of fine-grain algorithms. Presentation at IFIP Working Group 2.8 meeting, Rome, 1990.Google Scholar