কম্পিউটার টিউটোরিয়াল

সি প্রোগ্রাম দিয়ে স্পার্স ম্যাট্রিক্স (Sparse Matrix) চেক করা

স্পার্স ম্যাট্রিক্স কী?

এক ম্যাট্রিক্স যেখানে অধিকাংশ এলিমেন্ট শূন্য (০), তাকে স্পার্স ম্যাট্রিক্স বলা হয়। স্পার্স ম্যাট্রিক্সে নন-জিরো এলিমেন্টগুলো কম থাকে, তাই সেটিকে স্পেশাল ফরম্যাটে (যেমন 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): কলাম-ভিত্তিক কমপ্রেশন।

এই ফরম্যাটগুলো বড় স্পার্স ম্যাট্রিক্সে মেমরি ও কম্পিউটেশন বাঁচায়।

  1. C প্রোগ্রামিং-এ রেডিক্স সর্ট (Radix Sort)

  2. C প্রোগ্রাম: হেক্সাগোনাল (ষট্কোণাকার) প্যাটার্ন প্রিন্ট করা

  3. C প্রোগ্রাম: সমান্তরাল চতুর্ভুজের পরিধি (Circumference) বের করা

  4. C-এ ক্রিসমাস ট্রি প্রিন্ট করার প্রোগ্রাম (এনিমেশন সহ)