সারিগুলির 'r' সংখ্যা এবং 'c' নম্বর কলাম সহ একটি ম্যাট্রিক্স M[r][c] দেওয়া হলে, আমাদের পরীক্ষা করতে হবে যে প্রদত্ত ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স কি না। যদি ইনপুট ম্যাট্রিক্স মার্কভ ম্যাট্রিক্স হয় তাহলে আউটপুট প্রিন্ট করুন "এটি একটি মার্কভ ম্যাট্রিক্স" এবং "এটি একটি মার্কভ ম্যাট্রিক্স নয়" যদি এটি একটি মার্কভ ম্যাট্রিক্স না হয়।
মার্কভ ম্যাট্রিক্স
এখন, মার্কভ ম্যাট্রিক্স কি? একটি ম্যাট্রিক্স M একটি মার্কভ ম্যাট্রিক্স যদি এবং শুধুমাত্র যদি এর প্রতিটি সারির যোগফল মাত্র 1 এর সমান হয়।
নিচের উদাহরণের মত -
$$\begin{bmatrix}0.2 &0.3 &0.5 \\0.1 &0.7 &0.2 \\0.4 &0.5 &0.1 \\\end{bmatrix}\\$$
উপরের উদাহরণে যদি আমরা প্রতিটি সারি −
যোগ করি1st row sum = 0.2+0.3+0.5 = 1.0 2nd row sum = 0.1+0.7+0.2 = 1.0 3rd row sum = 0.4+0.5+0.1 = 1.0
এখানে প্রতিটি সারির যোগফল 1.0, তাই উপরের ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স।
উদাহরণ
Input: m[][] = { {0.2, 0.3, 0.5} , {0.1, 0.7, 0.2}, {0.4, 0.5, 0.1}} Output: It is a Markov matrix Input: m[][] = { {0, 0, 1} , {0, 0.7, 0.3}, {0.5, 0.5, 0}} Output: It is a Markov matrix
পন্থা
আমরা আরেকটি 1-d ম্যাট্রিক্স তৈরি করব এবং সেই ম্যাট্রিক্সে প্রতিটি সারির যোগফল সংরক্ষণ করব। তারপর আমরা পুরো অ্যারেটি পুনরাবৃত্তি করব এবং তারপর অ্যারের সমস্ত উপাদান 1 কিনা তা খুঁজে বের করব, যদি 1 তাহলে প্রদত্ত ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স ছিল অন্যথায় ম্যাট্রিক্সটি মার্কভ ম্যাট্রিক্স নয়
অ্যালগরিদম
Start Step 1 -> Define macro as #define n 3 Step 2 -> declare function to check for markov matrix bool check(double arr[][n]) Loop For int i = 0 and i <n and i++ Declare double sum = 0 Loop For int j = 0 and j < n and j++ Set sum = sum + arr[i][j] If (sum != 1) return false End End Return true Step 3 -> In main () Declare double arr[3][3] = { { 0, 0, 1 }, { 0.5, 0, 0.5 }, { 0.9, 0, 0.1 } } If (check(arr)) Print its a markov matrix Else Print its not a markov matrix Stop
উদাহরণ
#include <iostream> using namespace std; #define n 3 //check for markov matrix 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