Check whether a matrix is Markov matrix in C++
In this tutorial, we will learn how to check whether a matrix is a Markov matrix or not in C++ with Example, Algorithm, and a program.
Markov matrix is a matrix in which the sum of each row is exactly equal to one.
How to check whether a matrix is Markov matrix or not in C++
To check a Markov matrix we need to find the sum of each row and check whether the sum is equal to 1 or not.
Example 1:
Consider a matrix of 4*3
input matrix:
0.5 0.5 0
0.5 0.3 0.2
0 0.6 0.4
1 0 0
Sum of first row: 0.5 + 0.5 + 0 = 1
sum of second row: 0.5 + 0.3 + 0.2 = 1
sum of third row: 1 + 0 + 0 = 1
since, the sum of each rows is equal to 1,
Therefore, the matrix is Markov matrix.Example 2:
Consider a matrix of 3*3
input matrix:
1 0 0
0 1 0
1 1 1
sum of first row: 1 + 0 + 0 = 1
sum of second row: 0 + 1 +0 = 1
sum of third row: 1 + 1 + 1 = 3
since, the sum of each rows is not equal to 3,
Therefore, the matrix is not a Markov matrix.Algorithm to check whether a matrix is Markov matrix
- declare and initialize a matrix of size m*n. (where n and m are the lengths of row and column of matrix)
- Declare a variable “rowsum” and initialize it with zero.
- Find the sum of each ith row element and save to rowsum.
- check whether the rowsum is equal to one. if yes, then check for the remaining row. else print “Not markov matrix”
- if all the row sum is equal to one, then print “Markov matrix”.
C++ program to check whether a matrix is Markov matrix
#include <bits/stdc++.h>
using namespace std;
//function to check Markov matrix
int isMarkov(float matrix[50][50], int m, int n){
for(int i = 0; i < m; i++)
{
//variable to store sum of each row
float rowsum = 0;
for(int j = 0; j < n; j++)
rowsum += matrix[i][j];
if(rowsum != 1)
return 0;
}
return 1;
}
int main(){
float matrix[50][50];
int n, m;
//taking input in m and n for length of row and column
cout<<"Enter the length of row of the matrix: ";
cin >> m;
cout<<"Enter the length of column of the matrix: ";
cin >> n;
//taking input in the matrix
cout << "\nInput the element of matrix: \n";
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
cin>>matrix[i][j];
if (isMarkov(matrix, m, n))
cout << "The matrix is a markov matrix";
else
cout << "The matrix is Not a markov matrix";
return 0;
}
Output:
Enter the length of row of the matrix: 4 Enter the length of column of the matrix: 3 Input the element of matrix: 0.5 0.5 0 0.5 0.3 0.2 0 0.6 0.4 1 0 0 The matrix is a markov matrix.
Time Complexity: O(m*n), where m and n are lengths of row and column respectively
You may also read:
Leave a Reply