In many applications, we need to manipulate sparse matrices. These are matrices that consist of many zeros and very few non-zero elements.
For example, the word-document matrix for an encyclopedia is extremely sparse. Most words do not appear in most articles.
Instead of taking m n space to represent a matrix A with l non-zero elements, we can represent it using space using three vectors: for , Ac[i] is the column of non-zero element i, Ar[i] is its row, and Av[i] is its value. For ease of computation, we require that if .Further, if Ac[i]= Ac[j], then . 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 . (Simply read across the rows in order, 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 time. (Simply assign A[Ar[i], Ac[i]] = Av[i] for each .)