একটি ম্যাট্রিক্স M[r][c] দেওয়া আছে 'r' সংখ্যক রো এবং 'c' সংখ্যক কলাম সহ। আমাদের যাচাই করতে হবে যে দিয়ে गये ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স কিনা। যদি ইনপুট ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স হয় তবে আউটপুট প্রিন্ট করো "It is a Markov matrix" এবং "it's not a Markov matrix" যদি এটি মার্কভ ম্যাট্রিক্স না হয়।
মার্কভ ম্যাট্রিক্স (Markov Matrix)
এখন, মার্কভ ম্যাট্রিক্স কী? একটি ম্যাট্রিক্স M মার্কভ ম্যাট্রিক্স যদি এবং কেবল যদি এর প্রতিটি রোর সমষ্টি শুধু ১ কে সমান হয়।
নিচের উদাহরণে দেখানো আছে -
$$\begin{bmatrix}0.2 & 0.3 & 0.5 \\0.1 & 0.7 & 0.2 \\0.4 & 0.5 & 0.1 \\\end{bmatrix}$$
উপরের উদাহরণে যদি আমরা প্রতিটি রোর সমষ্টি করি -
১ম রোর সমষ্টি = 0.2+0.3+0.5 = 1.0 ২য় রোর সমষ্টি = 0.1+0.7+0.2 = 1.0 ৩য় রোর সমষ্টি = 0.4+0.5+0.1 = 1.0
এখানে প্রতিটি রোর সমষ্টি ১.০, তাই উপরের ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স।
উদাহরণ
ইনপুট: m[][] = { {0.2, 0.3, 0.5} , {0.1, 0.7, 0.2}, {0.4, 0.5, 0.1} }
আউটপুট: It is a Markov matrix
ইনপুট: m[][] = { {0, 0, 1} , {0, 0.7, 0.3}, {0.5, 0.5, 0} }
আউটপুট: It is a Markov matrix
অ্যাপ্রোচ
আমরা আরেকটি ১-ডি ম্যাট্রিক্স বানাব এবং সেখানে প্রতিটি রোর সমষ্টি স্টোর করব। তারপর পুরো অ্যারে ইটারেট করব এবং খুঁজে বের করব অ্যারেতে সব এলিমেন্ট ১ কিনা, যদি ১ হয় তবে দিয়ে गये ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স ছিল অন্যথায় ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স নয়।
অ্যালগরিদম
শুরু
স্টেপ ১ -> #define n 3 ম্যাক্রো ডিফাইন করো
স্টেপ ২ -> মার্কভ ম্যাট্রিক্স চেক করার ফাংশন ডিক্লেয়ার করো
bool check(double arr[][n])
লুপ i = 0 থেকে i <n এবং i++ পর্যন্ত
double sum = 0 ডিক্লেয়ার করো
লুপ j = 0 থেকে j < n এবং j++ পর্যন্ত
sum = sum + arr[i][j] সেট করো
এন্ড
If (sum != 1)
return false
এন্ড
এন্ড
Return true
স্টেপ ৩ -> main()-এ
double arr[3][3] = { { 0, 0, 1 }, { 0.5, 0, 0.5 }, { 0.9, 0, 0.1 } } ডিক্লেয়ার করো
IF (check(arr))
প্রিন্ট its a markov matrix
এলস
প্রিন্ট its not a markov matrix
স্টপ
উদাহরণ (C++ কোড)
#include <iostream>
using namespace std;
#define n 3
// মার্কভ ম্যাট্রিক্স চেক করো
bool check(double arr[][n]) {
for (int i = 0; i <n; i++) {
double sum = 0;
for (int j = 0; j < n; j++)
sum = sum + arr[i][j];
if (sum != 1)
return false;
}
return true;
}
int main() {
double arr[3][3] = { { 0, 0, 1 },
{ 0.5, 0, 0.5 },
{ 0.9, 0, 0.1 } };
if (check(arr))
cout << "its a markov matrix ";
else
cout << "its not a markov matrix ";
}
আউটপুট
its a markov matrix