स्पार्स मैट्रिक्स क्या है?
एक मैट्रिक्स जिसमें अधिकांश एलिमेंट्स शून्य हों, स्पार्स मैट्रिक्स कहलाता है।
उदाहरण (3x3)
1 0 0 0 2 0 0 0 0
कुल 9 एलिमेंट्स में 6 शून्य हैं (> 9/2 = 4.5), इसलिए स्पार्स है।
एल्गोरिदम
- रोज और कॉलम इनपुट लें।
- मैट्रिक्स एलिमेंट्स पढ़ें।
- शून्य एलिमेंट्स गिनें।
- यदि count > (rows * cols) / 2 तो स्पार्स, अन्यथा नहीं।
C प्रोग्राम
#include <stdio.h>
#include <stdlib.h>
int main() {
int row, col, i, j, a[10][10], count = 0;
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("Matrix:\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++;
if(count > (row * col) / 2)
printf("Matrix is a sparse matrix\n");
else
printf("Matrix is not a sparse matrix\n");
return 0;
}
आउटपुट
Run 1: Enter rows: 3, Columns: 2 Elements: 1 0 2 0 2 0 Matrix: 1 0 2 0 2 0 Zeros: 3, Total: 6, Threshold: 3 Matrix is not a sparse matrix (3 > 3 is false) Run 2: Enter rows: 3, Columns: 2 Elements: 1 0 0 0 0 0 Zeros: 5, Total: 6, Threshold: 3 Matrix is a sparse matrix
स्पार्स मैट्रिक्स प्रतिनिधित्व
मेमोरी बचाने के लिए केवल नॉन-जीरो एलिमेंट्स स्टोर करें:
- ट्रिपलेट फॉर्मेट: (row, col, value) की सूची
- कम्प्रेस्ड रो (CSR): वैल्यूज, कॉलम इंडेक्स, रो पॉइंटर्स ऐरे
- कम्प्रेस्ड कॉलम (CSC)
ट्रिपलेट उदाहरण
Matrix: Triplet (row, col, val): 1 0 0 (0,0,1) 0 2 0 → (1,1,2) 0 0 3 (2,2,3)