একটি ম্যাট্রিক্স M[r][c] দেওয়া আছে, 'r' নির্দেশ করে রো সংখ্যা এবং 'c' নির্দেশ করে কলাম সংখ্যা যাতে r = c একটি স্কোয়ার ম্যাট্রিক্স বানাচ্ছে। আমাদের যাচাই করতে হবে দেওয়া স্কোয়ার ম্যাট্রিক্সটি একটি আইডেমপটেন্ট ম্যাট্রিক্স কিনা।
আইডেমপটেন্ট ম্যাট্রিক্স (Idempotent Matrix)
একটি ম্যাট্রিক্স 'M' কে আইডেমপটেন্ট ম্যাট্রিক্স বলা হয় যদি এবং কেবল যদি ম্যাট্রিক্স 'M' নিজের সাথে গুণ করলে একই ম্যাট্রিক্স 'M' ফিরে আসে অর্থাৎ M * M = M.
নিচের উদাহরণে দেখানো আছে -

আমরা বলতে পারি যে উপরের ম্যাট্রিক্সটি নিজের সাথে গুণ করলে একই ম্যাট্রিক্স ফিরিয়ে দিচ্ছে; অতএব ম্যাট্রিক্সটি আইডেমপটেন্ট ম্যাট্রিক্স।
উদাহরণ
ইনপুট: m[3][3] = { {2, -2, -4}, {-1, 3, 4}, {1, -2, -3} }
আউটপুট: Idempotent
ইনপুট: m[3][3] == { {3, 0, 0}, {0, 2, 0}, {0, 0, 3} }
আউটপুট: Not Idempotent
অ্যালগরিদম
শুরু
স্টেপ ১ -> #define size 3 ম্যাক্রো ডিফাইন করো
স্টেপ ২ -> ম্যাট্রিক্স মাল্টিপ্লিকেশনের ফাংশন ডিক্লেয়ার করো
void multiply(int arr[][size], int res[][size])
লুপ i = 0 থেকে i < size এবং i++ পর্যন্ত
লুপ j = 0 থেকে j < size এবং j++ পর্যন্ত
res[i][j] = 0 সেট করো
লুপ k = 0 থেকে k < size এবং k++ পর্যন্ত
res[i][j] += arr[i][k] * arr[k][j] সেট করো
এন্ড
এন্ড
এন্ড
স্টেপ ৩ -> আইডেমপটেন্ট কিনা চেক করার ফাংশন ডিক্লেয়ার করো
bool check(int arr[][size])
int res[size][size] ডিক্লেয়ার করো
multiply(arr, res) কল করো
লুপ i = 0 থেকে i < size এবং i++ পর্যন্ত
লুপ j = 0 থেকে j < size এবং j++ পর্যন্ত
IF (arr[i][j] != res[i][j])
return false
এন্ড
এন্ড
এন্ড
return true
স্টেপ ৪ -> main()-এ
int arr[size][size] = {{1, -1, -1}, {-1, 1, 1}, {1, -1, -1}} ডিক্লেয়ার করো
IF (check(arr))
প্রিন্ট its an idempotent matrix
এলস
প্রিন্ট its not an idempotent matrix
স্টপ
উদাহরণ (C++ কোড)
#include <bits/stdc++.h>
#define size 3
using namespace std;
// ম্যাট্রিক্স মাল্টিপ্লিকেশন
void multiply(int arr[][size], int res[][size]) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
res[i][j] = 0;
for (int k = 0; k < size; k++)
res[i][j] += arr[i][k] * arr[k][j];
}
}
}
// আইডেমপটেন্ট কিনা চেক করো
bool check(int arr[][size]) {
int res[size][size];
multiply(arr, res);
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
if (arr[i][j] != res[i][j])
return false;
return true;
}
int main() {
int arr[size][size] = {{1, -1, -1},
{-1, 1, 1},
{1, -1, -1}};
if (check(arr))
cout << "its an idempotent matrix";
else
cout << "its not an idempotent matrix";
return 0;
}
আউটপুট
its an idempotent matrix