Sie sind auf Seite 1von 23

DATA STRUCTURES AND

ALGORITHMS
Module 2

SPARSE MATRIX

SPARSE ARRAY
A special array that contains more number of zero

values than the non-zero values for their elements.


1

No. of non zero elements = 30

Eg:
No of zero elements =6

Therefore, its a sparse matrix

SPARSE MATRIX
A sparse matrix =2D sparse array
A matrix is said to be a sparse matrix if most of its

elements are zero.


dense matrix =A matrix that is not sparse
The density of a matrix is the percentage of entries that

are non-zero

Alternative Representations

If most of the elements are zero then the occurrence of


zero elements in a large array is both a computational
and storage inconvenience
Alternative Representations
Array representation
Dynamic representation

Array Representation (Tuple matrix)

All non-zero elements are stored in another array of


triplet
No of rows in the new array = No. of non zero
elements + 1

No. of columns in the new array = 3

Triplet contains
row number of the non-zero element
column number of the non-zero element
Value of non-zero element

Triplet can be represented by


<Row, Col, Element>

Array Representation (Tuple matrix)


Tuple matrix
(0,0) No of rows in sparse matrix
(0,1) No of columns in sparse matrix
(0,2) No of non-zero elements in
sparse matrix

1 0 0 0
0 0 5 0
0 0 0 0
3

Question
Convert sparse matrix to tuple matrix
0000
7090
0005

Sparse matrix to tuple matrix


i=0, j=0, k=1,count=0
While(i<r)
While(j<c)
I/p: sparse matrix A[][]
If ( A[i][j]!=0 )
O/p: tuple matrix TUPLE[][3]
TUPLE[k][0]=i
TUPLE[k][1]=j
TUPLE[k][2]=A[i][j]
k=k+1, count = count +1
EndIf
j=j+1
EndWhile
i=i+1
EndWhile
TUPLE[0][0]=r
TUPLE[0][1]=c
TUPLE[0][2]=count

Sparse Matrix addition


0

Convert
sparse matrix
to
tuple matrix

Sparse Matrix addition

Sparse Matrix addition case 1


If ((TUPLE1 [i][0] < TUPLE2 [j][0] ))
SUM [ptr][0] =TUPLE1 [i][0]
SUM [ptr][1] =TUPLE1 [ i][1]
SUM [ptr][2] =TUPLE1 [ i][2]
i=i+1,
ptr=ptr+1,
elem=elem+1

Sparse Matrix addition case 2


If ((TUPLE1 [i][0] > TUPLE2 [j][0] ))
SUM [ptr][0] =TUPLE2 [j][0]
SUM [ptr][1] =TUPLE2 [ j][1]
SUM [ptr][2] =TUPLE2 [ j][2]
j=j+1,
ptr=ptr+1,
elem=elem+1

Sparse Matrix addition case 3


If((TUPLE1 [i][0] = TUPLE2 [j][0] ) AND (TUPLE1 [i][1]
=TUPLE2 [j][1] ))
SUM [ptr][0] =TUPLE1 [i][0]
SUM [ptr][1] =TUPLE1 [i][1]
SUM [ptr][2] =TUPLE1 [i][2] +TUPLE2 [j][2]
Ptr=ptr+1,
i=i+1,
j=j+1,
elem=elem+1

Sparse Matrix addition case 4


If ((TUPLE1 [i][0] = TUPLE2 [j][0] ) && (TUPLE1 [i][1]
<TUPLE2 [j][1] ) )
SUM [ptr][0] =TUPLE1 [i][0]
SUM [ptr][1] =TUPLE1 [ i][1]
SUM [ptr][2] =TUPLE1 [ i][2]
i=i+1,
ptr=ptr+1,
elem=elem+1

Sparse Matrix addition case 5


If ((TUPLE1 [i][0] = TUPLE2 [j][0] ) && (TUPLE1 [i][1]
>TUPLE2 [j][1] ) )
SUM [ptr][0] =TUPLE2 [j][0]
SUM [ptr][1] =TUPLE2[ j][1]
SUM [ptr][2] =TUPLE2[ j][2]
j=j+1,
ptr=ptr+1,
elem=elem+1

Sparse Matrix addition case 6a


While(i<n1)
SUM[ptr][0]=TUPLE1[i][0]
SUM[ptr][1]=TUPLE1[i][1]
SUM[ptr][2]=TUPLE1[i][2]
i=i+1,
ptr=ptr+1,
elem=elem+1
EndWhile

Sparse Matrix addition case 6b


While(j<n2)
SUM[ptr][0]=TUPLE2[j][0]
SUM[ptr][1]=TUPLE2[j][1]
SUM[ptr][2]=TUPLE2[j][2]
j=j+1,
ptr=ptr+1,
elem=elem+1
EndWhile

Algorithm SPARSE MATRIX ADDITION


Input: two sparse Matrices MAT1 and MAT2
Output: Resultant Matrix SUM is the sum of two matrices
Data Structure: Sparse Matrix implemented by using array.
Steps:
I=1,j=1,SUM[100][3],ptr=1,elem=0
TUPLE1=SPARSE_TO_TUPLE(MAT1)
TUPLE2=SPARSE_TO_TUPLE(MAT2)
r1=row size,c1=column size of MAT1
r2=row size, c2=column size of MAT2
n1=ROWSIZE(TUPLE1)
n2=ROWSIZE(TUPLE2)
If(COMPARE(r1,r2) =FALSE) OR(COMPARE(c1,c2)=FALSE)
Print Addition is not possible
Exit
Else

SUM[0][0]=r1
SUM[0][1]=c1
SUM[0][2]=elem
Stop

Limitations of array representation

We do not know the number of non-zero elements in


advance
Insertion and deletion is not an easy task in an array

Solution:

Use dynamic representation


i.e Use linked lists

Special types of matrices


Square matrix
A matrix in which no. of rows = no. of columns

Diagonal matrix
A matrix in which only diagonal elements are non-zero
1

Special types of matrices


Upper triangular matrix
A matrix in which all the non-zero elements occur only on or above
the diagonal

Lower Triangular matrix

A matrix in which all the non-zero elements occur only on or below


the diagonal
1

Special types of matrices


Scalar matrix
A diagonal matrix in which all diagonal elements are same

Identity or Unit matrix

A diagonal matrix in which all diagonal elements are 1


1

Das könnte Ihnen auch gefallen