C++ 中的馬爾可夫矩陣程式
給定一個具有 'r' 行和 'c' 列的矩陣 M[r][c],我們必須檢查給定矩陣是否為馬爾可夫矩陣。如果輸入矩陣是馬爾可夫矩陣,則輸出“它是一個馬爾可夫矩陣”,如果不是馬爾可夫矩陣,則輸出“它不是一個馬爾可夫矩陣”。
馬爾可夫矩陣
那麼,什麼是**馬爾可夫矩陣**?當且僅當矩陣 M 的每一行的和都等於 1 時,矩陣 M 才是一個馬爾可夫矩陣。
例如,如下所示:
$$\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,如果是 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP