ماتریس sparse با توجه به محتویاتش شناسایی نمیشه.
ماتریس sparse ماتریسیه که سلولهاش sparse باشن.
ماتریسی رو به شکل sparse نگهداری میکنن که ارزشش رو داشته باشه.(منظور سوال از اینکه چه موقع نتیجه جمع اسپارسه همینه)
یعنی ارزش پردازش اضافه ای که صرف استخراج سلولها میشه بیشتر از مقدار حافظه ای باشه که صرفه جویی میشه.
ساختار ساده ماتریس اسپارس هم که سادست
struct SparseMatrix{
int Dimentions;
int* Lengths;
MatrixCell* Cells;
};
struct SparseMatrixCell{
int* Location;
void* Data;
};
اسن ساده ترین حالت ماتریس چند بعدیه.
دو بعدیش راحتتره
struct SparseMatrix{
int Length_1;
int Length_2;
MatrixCell* Cells;
};
struct SparseMatrixCell{
int Location_1;
int Location_2;
void* Data;
};
و یک مقدار پیشرفته تر:
struct SparseMatrix{
int Length_1;
int Length_2;
CellArray* Columns;
CellArray* Rows;
};
struct CellArray{
CellArray* Next;
CellArray* Previous;
int Index;
int Count;
SparseMatrixCell* Cells
};
struct SparseMatrixCell{
CellArray* Column;
CellArray* Row;
void* Data;
};