Overview
In Chapter 16 we discuss three widely used tools in parallel algorithm design: parallel
prefix, pointer jumping and parallel matrix multiplication. We discuss parallel prefix
computations on a PRAM, complete binary tree and two-dimensional mesh and
applications of such computations to designing parallel algorithms for the knapsack
problem and carry-lookahead addition. We then discuss pointer jumping and its
application to computing a minimum spanning tree on a CREW PRAM. Finally, we
discuss algorithms for matrix multiplication and matrix powers on a CREW PRAM, which
we apply to obtain an O(log2n) algorithm for the all-pairs shortest path problem in a
weighted digraph.
Chapter Objectives
After completing the chapter the student will know:
• The parallel prefix paradigm and its implementation on a PRAM, complete binary tree
and two-dimensional mesh
• The pointer jumping technique implemented on a CREW PRAM
• A parallel algorithm for computing a minimum spanning tree and how pointer jumping
is used to acheive polylogarithmic complexity of the algorithm on a CREW PRAM.
• Matrix multiplication on a CREW PRAM
• Application on parallel prefix to the knapsack problem and carry-lookahead addition
• Application of matrix powers to the all-pairs shortest path problem in a weighted
digraph.
Instructor Notes
The application of the parallel prefix method to solve the carry-lookahead addition problem in
O(logn) time is surprising, since at first glance this problem seems essential sequential. Indeed,
to compute the proper entry for the ith bit position definitely requires knowing the appropriate
carry digit resulting from the previous bit positions. The surprising thing is that all n carries
can be computed in O(logn) time. Apparently this surprising result was used in the early days
of parallel computing to convince the Federal Funding agencies to support parallel algorithms
and architectures research.
The parallel algorithm for the minimum spanning tree problem presented in this chapter is
actually a parallelization of the sequential algorithm for this problem given by the Polish