Sparse Matrices

An m by n matrix A contains nm elements in it. For tex2html_wrap_inline542 , tex2html_wrap_inline544 , A[i,j] is the (i,j)th element of matrix A.

Let b be a 1 by m matrix (a row vector). The product of b and A is a 1 by n row vector c such that tex2html_wrap_inline568 . It is the dot product between b and the columns of A.

The transpose of a m by n matrix A is a n by m matrix tex2html_wrap_inline584 such that tex2html_wrap_inline586 . We've exchanged rows and columns.

The product of two matrices A (m by n) and B (n by p) is a matrix C (m by p) where tex2html_wrap_inline606 . Note that this is most often computed using a simple triply nested loop.

In many applications, we need to manipulate sparse matrices. These are matrices that consist of many zeros and very few non-zero elements. Instead of taking m n space to represent a matrix A with l non-zero elements, we can represent it using tex2html_wrap_inline614 space using three vectors: for tex2html_wrap_inline616 , tex2html_wrap_inline618 is the column of non-zero element i, tex2html_wrap_inline622 is its row, and tex2html_wrap_inline624 is its value. For ease of computation, we require that tex2html_wrap_inline626 if tex2html_wrap_inline628 . Further, if tex2html_wrap_inline630 , then tex2html_wrap_inline632 . This means that the non-zero elements are sorted by column, then by row within column.

Given an m by n matrix A, we can convert it to the sparse representation in time tex2html_wrap_inline640 . (Simply read across the rows one at a time, creating an entry in the sparse matrix format for each non-zero encountered.) Given a sparse matrix A with l non-zero elements, we can convert it to a standard (dense) matrix starting from a matrix of all zeros in tex2html_wrap_inline614 time. (Simply assign tex2html_wrap_inline648 for each tex2html_wrap_inline616 .)

Describe an algorithm for each of these problems. Provide an analysis for the number of primitive operations they take. Make your analyses as tight as possible.


next up previous
Next: Homework 3 Up: HOMEWORK Previous: Homework 2