Java 检查矩阵是否为马尔可夫矩阵

Java 检查矩阵是否为马尔可夫矩阵

矩阵就只是一个按矩形布局排列的二维数据元素的集合。在Java中,具有两个维度的数组可以被视为矩阵。

如果所有的条目都是非负的,并且每个列向量的总和等于1,则称为方阵为马尔可夫矩阵。马尔可夫矩阵表示马尔可夫链中的步骤。马尔可夫矩阵的每个输入表示一个结果的概率。

让我们深入探讨一下这篇文章,了解如何使用Java编程语言来实现。

为了给你展示一些实例

实例-1

Suppose we have a matrix
   | 0.10.50.4 |
A= | 00.50.5   |
   | 0.90.10   |

所有行的和等于1。因此,它是一个马尔可夫矩阵

实例-2

Suppose we have a matrix
   | 0.40.30.3 |
A =| 0.50.30.2 |
   | 0.50.10.4 |

所有行的和等于1。因此,它是一个马尔科夫矩阵

实例-3

Suppose we have a matrix
  | 1 0 0 0|
A=| 0 1 0 0|
  | 0 0 1 0|
  | 0 0 0 1|

所有行的总和等于1。因此这是一个马尔可夫矩阵

步骤

第一步 - 取出矩阵。

第二步 - 现在调用检查函数遍历矩阵并检查每一行的和是否等于1。如果任何一行的元素加起来不等于1,则矩阵不是一个马尔可夫矩阵。

第三步 - 打印结果。

多种方法

我们已经提供了不同的解决方法。

  • 通过使用静态初始化矩阵。

  • 通过使用动态初始化矩阵。

让我们逐一查看程序及其输出。

方法1:通过使用静态初始化矩阵

在这种方法中,矩阵在程序中初始化,我们使用for循环来计算每一行的和,并检查是否等于1。

示例

import java.util.Scanner;
public class Main {
   static boolean markovMatCheck(double mat[][]) {
      double sum = 0;

      // Traverses the matrix
      for (int i = 0; i < mat.length; i++) {
         sum = 0;
         // Adds the row elements
         for (int j = 0; j < mat.length; j++) {
            sum += mat[i][j];
         }

         // Checks if row elements add upto 1, else returns false
         if (sum != 1.0)
         return false;
      }
      return true;
   }
   public static void main(String[] args) {

      // Matrix to be checked
      double mat[][] = {
         { 0.1, 0.5, 0.4 },
         { 0, 0.5, 0.5 },
         { 0.9, 0, 0.1 },
      };

      // Print results
      if (markovMatCheck(mat))
         System.out.println("The matrix is a Markov matrix.");
      else
         System.out.println("The matrix is not a Markov matrix.");
   }
}

输出

The matrix is a Markov matrix.

方法2:通过矩阵的动态初始化

在这种方法中,我们要求用户输入他们想要的矩阵大小,然后使用for循环来计算每一行的和,并检查是否加起来等于1。

示例

import java.util.Scanner;
public class Main {
   public static void main(String[] args) {
      System.out.println("Enter number of matrix rows-");
      Scanner sc = new Scanner(System.in);
      int size = sc.nextInt();
      int mat[][] = new int[size][size];

      // Enter Matrix Elements
      System.out.println("Enter the matrix elements");
      for (int i = 0; i < mat.length; i++) {
         for (int j = 0; j < mat.length; j++) {
            mat[i][j] = sc.nextInt();
         }
      }

      // Print results
      if (markovMatCheck(mat))
         System.out.println("The matrix is a Markov matrix.");
      else
         System.out.println("The matrix is not a Markov matrix.");

   }

   //user defined method
   static boolean markovMatCheck(int mat[][]) {
      int sum = 0;

      // Traverses the matrix
      for (int i = 0; i < mat.length; i++) {
         sum = 0;

         // Adds the row elements
         for (int j = 0; j < mat.length; j++) {
            sum += mat[i][j];
         }

         // Checks if row elements add upto 1, else returns false
         if (sum != 1)
            return false;
      }
      return true;
   }
}

输出

Enter number of matrix rows-
3
Enter the matrix elements
1 0 0 
0 1 0
0 0 1
The matrix is a Markov matrix.

在本文中,我们使用Java编程语言探讨了不同的方法来检查矩阵是否为马尔可夫矩阵。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程