কম্পিউটার

C++ এ মার্কভ ম্যাট্রিক্সের জন্য প্রোগ্রাম


সারিগুলির '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

  1. C++ এ ইনভোলুটরি ম্যাট্রিক্স চেক করার প্রোগ্রাম

  2. C++ এ পিরামিডের আয়তনের জন্য প্রোগ্রাম

  3. QuickSort-এর জন্য C++ প্রোগ্রাম?

  4. অ্যাডজাসেন্সি ম্যাট্রিক্স বাস্তবায়নের জন্য C++ প্রোগ্রাম