Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình kiểm tra ma trận Markov trong C++

Cho ma trận M[r][c]. Kiểm tra xem có phải ma trận Markov hay không. Ma trận Markov: tổng mỗi hàng bằng 1.

Ví dụ:

[0.2 0.3 0.5]   Hàng 1: 0.2+0.3+0.5 = 1.0
[0.1 0.7 0.2]   Hàng 2: 0.1+0.7+0.2 = 1.0
[0.4 0.5 0.1]   Hàng 3: 0.4+0.5+0.1 = 1.0 → Là Markov

Ví dụ

Input: {{0.2,0.3,0.5},{0.1,0.7,0.2},{0.4,0.5,0.1}} → Markov
Input: {{0,0,1},{0,0.7,0.3},{0.5,0.5,0}} → Markov

Cách làm

Tính tổng mỗi hàng, kiểm tra xem tất cả có bằng 1 không.

Thuật toán

BẮT ĐẦU
    #define n 3
    Hàm kiemTra(double a[][n])
        Với i=0..n-1
            sum = 0
            Với j=0..n-1: sum += a[i][j]
            Nếu sum != 1 → trả về false
        Trả về true
    main()
        a = {{0,0,1},{0.5,0,0.5},{0.9,0,0.1}}
        Nếu kiemTra(a) in "Markov" ngược lại "không Markov"
KẾT THÚC

Ví dụ mã C++

#include <iostream>
using namespace std;
#define n 3

bool kiemTra(double a[][n]){
    for (int i = 0; i < n; i++){
        double sum = 0;
        for (int j = 0; j < n; j++)
            sum += a[i][j];
        if (sum != 1)
            return false;
    }
    return true;
}

int main(){
    double a[3][3] = {{0,0,1},{0.5,0,0.5},{0.9,0,0.1}};
    if (kiemTra(a))
        cout << "là ma trận Markov";
    else
        cout << "không phải ma trận Markov";
}

Kết quả đầu ra

là ma trận Markov