The document discusses sparse matrices, which are matrices with mostly zero elements. It provides examples of structured sparse matrices where the nonzero elements follow patterns, as well as unstructured sparse matrices like those representing airline routes or web links. To save space, sparse matrices can be stored in a single linear list by only storing the nonzero elements and their indices. This allows efficient operations like matrix transpose and addition using just the nonzero elements.
The document discusses sparse matrices, which are matrices with mostly zero elements. It provides examples of structured sparse matrices where the nonzero elements follow patterns, as well as unstructured sparse matrices like those representing airline routes or web links. To save space, sparse matrices can be stored in a single linear list by only storing the nonzero elements and their indices. This allows efficient operations like matrix transpose and addition using just the nonzero elements.
The document discusses sparse matrices, which are matrices with mostly zero elements. It provides examples of structured sparse matrices where the nonzero elements follow patterns, as well as unstructured sparse matrices like those representing airline routes or web links. To save space, sparse matrices can be stored in a single linear list by only storing the nonzero elements and their indices. This allows efficient operations like matrix transpose and addition using just the nonzero elements.
The document discusses sparse matrices, which are matrices with mostly zero elements. It provides examples of structured sparse matrices where the nonzero elements follow patterns, as well as unstructured sparse matrices like those representing airline routes or web links. To save space, sparse matrices can be stored in a single linear list by only storing the nonzero elements and their indices. This allows efficient operations like matrix transpose and addition using just the nonzero elements.
Download as PPT, PDF, TXT or read online from Scribd
Download as ppt, pdf, or txt
You are on page 1of 19
Sparse Matrices
Matrix table of values
Sparse Matrices Matrix table of values
0 0 3 0 4 0 0 5 7 0 0 0 0 0 0 0 2 6 0 0 Row 2 Column 4 4 x 5 matrix 4 rows 5 columns 20 elements 6 nonzero elements Sparse Matrices Sparse matrix #nonzero elements/#elements is small. Examples: Diagonal Only elements along diagonal may be nonzero n x n matrix ratio is n/n 2 = 1/n Tridiagonal Only elements on 3 central diagonals may be nonzero Ratio is (3n-2)/n 2 = 3/n 2/n 2 Sparse Matrices Lower triangular (?) Only elements on or below diagonal may be nonzero Ratio is n(n+1)(2n 2 ) ~ 0.5
These are structured sparse matrices. Nonzero elements are in a well-defined portion of the matrix. Sparse Matrices An n x n matrix may be stored as an n x n array. This takes O(n 2 ) space. The example structured sparse matrices may be mapped into a 1D array so that a mapping function can be used to locate an element quickly; the space required by the 1D array is less than that required by an n x n array (next lecture). Unstructured Sparse Matrices Airline flight matrix. airports are numbered 1 through n flight(i,j) = list of nonstop flights from airport i to airport j n = 1000 (say) n x n array of list pointers => 4 million bytes total number of nonempty flight lists = 20,000 (say) need at most 20,000 list pointers => at most 80,000 bytes Unstructured Sparse Matrices Web page matrix. web pages are numbered 1 through n web(i,j) = number of links from page i to page j
Web analysis. authority page page that has many links to it hub page links to many authority pages Web Page Matrix n = 2 billion (and growing by 1 million a day) n x n array of ints => 16 * 10 18 bytes (16 * 10 9
GB) each page links to 10 (say) other pages on average on average there are 10 nonzero entries per row space needed for nonzero elements is approximately 20 billion x 4 bytes = 80 billion bytes (80 GB) Representation Of Unstructured Sparse Matrices Single linear list in row-major order. scan the nonzero elements of the sparse matrix in row- major order (i.e., scan the rows left to right beginning with row 1 and picking up the nonzero elements) each nonzero element is represented by a triple (row, column, value) the list of triples is stored in a 1D array Single Linear List Example
0 0 3 0 4 0 0 5 7 0 0 0 0 0 0 0 2 6 0 0 list = row 1 1 2 2 4 4 column 3 5 3 4 2 3 value 3 4 5 7 2 6 One Linear List Per Row
0 0 3 0 4 0 0 5 7 0 0 0 0 0 0 0 2 6 0 0
row1 = [(3, 3), (5,4)] row2 = [(3,5), (4,7)] row3 = [] row4 = [(2,2), (3,6)] Single Linear List Array representation 1D Array of triples of type term int row, col, value Size of 1D array generally not predictable at time of initialization. Start with some default capacity/size (say 10) Increase capacity as needed Use REALLOC Approximate Memory Requirements
500 x 500 matrix with 1994 nonzero elements, 4 bytes per element
2D array 500 x 500 x 4 = 1million bytes 1D array of triples 3 x 1994 x 4 = 23,928 bytes
0 0 0 0 0 0 0 2 3 5 0 6 0 7 0 0 4 0 0 0 Step 1: #nonzero in each row of transpose. = #nonzero in each column of original matrix = [0, 1, 3, 1, 1] Step2: Start of each row of transpose = sum of size of preceding rows of transpose = [0, 0, 1, 4, 5] Step 3: Move elements, left to right, from original list to transpose list.
Matrix Transpose Step 1: #nonzero in each row of transpose. = #nonzero in each column of original matrix = [0, 1, 3, 1, 1] Step2: Start of each row of transpose = sum of size of preceding rows of transpose = [0, 0, 1, 4, 5] Step 3: Move elements, left to right, from original list to transpose list.
Complexity m x n original matrix t nonzero elements Step 1: O(n+t) Step 2: O(n) Step 3: O(t) Overall O(n+t)
Runtime Performance Matrix Transpose 500 x 500 matrix with 1994 nonzero elements Run time measured on a 300MHz Pentium II PC
2D array 210 ms SparseMatrix 6 ms
Performance Matrix Addition. 500 x 500 matrices with 1994 and 999 nonzero elements