# Program for Markov matrix in C++

C++Server Side ProgrammingProgramming

#### C in Depth: The Complete C Programming Guide for Beginners

45 Lectures 4.5 hours

#### Practical C++: Learn C++ Basics Step by Step

Most Popular

50 Lectures 4.5 hours

#### Master C and Embedded C Programming- Learn as you go

66 Lectures 5.5 hours

Given a matrix M[r][c] with ‘r’ number of rows and ‘c’ number of columns, we have to check that the given matrix is Markov matrix or not. If the input matrix is Markov matrix then print the output “It is a Markov matrix” and “it’s not an Markov matrix” if it is not a Markov matrix.

## Markov Matrix

Now, what is Markov Matrix? A matrix M is a Markov matrix if and only if its sum of each row is equal to only 1.

Like in the given example below −

$$\begin{bmatrix}0.2 & 0.3 & 0.5 \0.1 & 0.7 & 0.2 \0.4 & 0.5 & 0.1 \\end{bmatrix}\$$

In the above example if we sum each row −

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

Here every row has a sum of 1.0, so the above matrix is Markov matrix.

## Example

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

## Approach

We will make another 1-d matrix and store the sum of every row in that matrix. Then we will iterate the whole array and then find whether all the elements in the array is 1 or not, if 1 then the given matrix was Markov matrix else the matrix is not Markov matrix

## Algorithm

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

## Example

#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 ";
}

## Output

its a markov matrix
Updated on 23-Sep-2019 08:18:42