Sparse Matrices

An m by n matrix A contains nm elements in it. For tex2html_wrap_inline303 , tex2html_wrap_inline305 , 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_inline329 . 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_inline345 such that tex2html_wrap_inline347 . 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_inline367 . 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_inline375 space using three vectors: for tex2html_wrap_inline377 , tex2html_wrap_inline379 is the column of non-zero element i, tex2html_wrap_inline383 is its row, and tex2html_wrap_inline385 is its value. For ease of computation, we require that tex2html_wrap_inline387 if tex2html_wrap_inline389 . Further, if tex2html_wrap_inline391 , then tex2html_wrap_inline393 . 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_inline401 . (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_inline375 time. (Simply assign tex2html_wrap_inline409 for each tex2html_wrap_inline377 .)

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