স্পার্স ম্যাট্রিক্স কী?
এক ম্যাট্রিক্স যেখানে অধিকাংশ এলিমেন্ট শূন্য (০), তাকে স্পার্স ম্যাট্রিক্স বলা হয়। স্পার্স ম্যাট্রিক্সে নন-জিরো এলিমেন্টগুলো কম থাকে, তাই সেটিকে স্পেশাল ফরম্যাটে (যেমন COO, CSR) স্টোর করা হয় মেমরি বাঁচাতে।
স্পার্স ম্যাট্রিক্স চেক করার শর্ত
একটি m x n ম্যাট্রিক্স স্পার্স হলে:
Number of zeros > (m * n) / 2
অর্থাৎ শূন্যের সংখ্যা মোট এলিমেন্টের অর্ধেকের চেয়ে বেশি হলে।
উদাহরণ
Matrix (3x3): 1 0 0 0 2 0 0 0 0 Total elements = 9 Zeros = 7 7 > 9/2 (4.5) → Sparse Matrix ✓
সি প্রোগ্রাম
#include <stdio.h>
#include <stdlib.h>
int main() {
int row, col, i, j, count = 0;
int a[10][10];
printf("Enter rows: ");
scanf("%d", &row);
printf("Enter columns: ");
scanf("%d", &col);
printf("Enter matrix elements:\n");
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
scanf("%d", &a[i][j]);
printf("\nMatrix:\n");
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++)
printf("%d\t", a[i][j]);
printf("\n");
}
// শূন্য কাউন্ট
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
if (a[i][j] == 0)
count++;
printf("\nTotal elements: %d\n", row * col);
printf("Zero count: %d\n", count);
if (count > (row * col) / 2)
printf("✓ This is a SPARSE matrix\n");
else
printf("✗ This is NOT a sparse matrix\n");
return 0;
}
আউটপুট
Run 1: Enter rows: 3 Enter columns: 2 Enter matrix elements: 1 0 2 0 2 0 Matrix: 1 0 2 0 2 0 Total elements: 6 Zero count: 3 ✗ This is NOT a sparse matrix Run 2: Enter rows: 3 Enter columns: 2 Enter matrix elements: 1 0 0 0 0 0 Matrix: 1 0 0 0 0 0 Total elements: 6 Zero count: 5 ✓ This is a SPARSE matrix
স্পার্স ম্যাট্রিক্স রিপ্রেজেন্টেশন (এডভান্সড)
স্পার্স ম্যাট্রিক্স এফিশিয়েন্টলি স্টোর করার জনপ্রিয় ফরম্যাট:
- COO (Coordinate List): (row, col, value) ট্রিপল স্টোর।
- CSR (Compressed Sparse Row): রো-ভিত্তিক কমপ্রেশন।
- CSC (Compressed Sparse Column): কলাম-ভিত্তিক কমপ্রেশন।
এই ফরম্যাটগুলো বড় স্পার্স ম্যাট্রিক্সে মেমরি ও কম্পিউটেশন বাঁচায়।