Cho ma trận M [r] [c] với số hàng là ‘r’ và số cột là ‘c’, chúng ta phải kiểm tra xem ma trận đã cho có phải là ma trận Markov hay không. Nếu ma trận đầu vào là ma trận Markov thì in đầu ra "Đó là ma trận Markov" và "nó không phải là ma trận Markov" nếu nó không phải là ma trận Markov.
Ma trận Markov
Bây giờ, Ma trận Markov là gì? Ma trận M là ma trận Markov nếu và chỉ khi tổng mỗi hàng của nó chỉ bằng 1.
Giống như trong ví dụ cho sẵn bên dưới -
$$ \ begin {bmatrix} 0,2 &0,3 &0,5 \\ 0,1 &0,7 &0,2 \\ 0,4 &0,5 &0,1 \\\ end {bmatrix} \\ $$
Trong ví dụ trên nếu chúng ta tính tổng từng hàng -
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
Ở đây mỗi hàng có tổng là 1,0, vì vậy ma trận trên là ma trận Markov.
Ví dụ
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 Phương pháp tiếp cận
Chúng ta sẽ tạo một ma trận 1-d khác và lưu trữ tổng của mọi hàng trong ma trận đó. Sau đó, chúng ta sẽ lặp lại toàn bộ mảng và sau đó tìm xem tất cả các phần tử trong mảng có phải là 1 hay không, nếu 1 thì ma trận đã cho là ma trận Markov còn ma trận không phải là ma trận Markov
Thuật toán
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 Ví dụ
#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 ";
} Đầu ra
its a markov matrix