0% found this document useful (0 votes)
71 views

Sparse Array

Large sparse matrices often appear in scientific applications when solving partial differential equations. They contain mostly zero values. Storing and manipulating sparse matrices efficiently requires specialized algorithms and data structures that take advantage of the sparse structure, rather than treating them as dense matrices, since processing and memory are wasted on the zero values. Sparse matrices can be compressed to require significantly less storage than dense formats by only storing the non-zero values and additional indexing information.

Uploaded by

zulko
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views

Sparse Array

Large sparse matrices often appear in scientific applications when solving partial differential equations. They contain mostly zero values. Storing and manipulating sparse matrices efficiently requires specialized algorithms and data structures that take advantage of the sparse structure, rather than treating them as dense matrices, since processing and memory are wasted on the zero values. Sparse matrices can be compressed to require significantly less storage than dense formats by only storing the non-zero values and additional indexing information.

Uploaded by

zulko
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

In numerical analysis and computer science, a sparse matrix or sparse array is a matrix in which most of

the elements are zero. By contrast, if most of the elements are nonzero, then the matrix is considered
dense. The number of zero-valued elements divided by the total number of elements (e.g., m × n for an
m × n matrix) is called the sparsity of the matrix (which is equal to 1 minus the density of the matrix).

Conceptually, sparsity corresponds to systems that are loosely coupled. Consider a line of balls connected
by springs from one to the next: this is a sparse system as only adjacent balls are coupled. By contrast, if
the same line of balls had springs connecting each ball to all other balls, the system would correspond to
a dense matrix. The concept of sparsity is useful in combinatorics and application areas such as network
theory, which have a low density of significant data or connections.

Large sparse matrices often appear in scientific or engineering applications when solving partial
differential equations.

When storing and manipulating sparse matrices on a computer, it is beneficial and often necessary to use
specialized algorithms and data structures that take advantage of the sparse structure of the matrix.
Operations using standard dense-matrix structures and algorithms are slow and inefficient when applied
to large sparse matrices as processing and memory are wasted on the zeroes. Sparse data is by nature
more easily compressed and thus requires significantly less storage. Some very large sparse matrices are
infeasible to manipulate using standard dense-matrix algorithms

Storing a sparse matrix

A matrix is typically stored as a two-dimensional array. Each entry in the array represents an element ai,j
of the matrix and is accessed by the two indices i and j. Conventionally, i is the row index, numbered from
top to bottom, and j is the column index, numbered from left to right. For an m × n matrix, the amount of
memory required to store the matrix in this format is proportional to m × n (disregarding the fact that the
dimensions of the matrix also need to be stored).

In the case of a sparse matrix, substantial memory requirement reductions can be realized by storing only
the non-zero entries. Depending on the number and distribution of the non-zero entries, different data
structures can be used and yield huge savings in memory when compared to the basic approach. The
trade-off is that accessing the individual elements becomes more complex and additional structures are
needed to be able to recover the original matrix unambiguously.

Formats can be divided into two groups:

Those that support efficient modification, such as DOK (Dictionary of keys), LIL (List of lists), or COO
(Coordinate list). These are typically used to construct the matrices.
Those that support efficient access and matrix operations, such as CSR (Compressed Sparse Row) or CSC
(Compressed Sparse Column).

You might also like