Java 中查找矩阵的马鞍点

2025年5月13日 | 阅读 4 分钟

在本节中,我们将理解矩阵中的鞍点是什么,以及如何通过 Java 程序找到矩阵的鞍点。

矩阵中的鞍点是什么?

在矩阵中,一个元素被称为鞍点,如果它是行中的最小值(或最小)元素,同时又是列中的最大值(或最大)元素。“鞍点”这个术语在博弈论中被广泛使用。

Find Saddle Point of a Matrix in Java

请注意,一个矩阵可能有一个或多个鞍点,也可能没有鞍点。例如,考虑以下矩阵。

Find Saddle Point of a Matrix in Java

在上面的矩阵中,10 和 8 分别是各自列中的最小值,也是各自行中的最大值。因此,上面的矩阵有两个鞍点

在下面的矩阵中,不存在鞍点。

Find Saddle Point of a Matrix in Java

算法

  • 逐行遍历矩阵,并找出每一行的最小值。
  • 在找到最小值所在的同一列中,遍历以找出其中的最大值。
  • 如果行中的最小值和列中的最大值相同,则该元素就是矩阵的鞍点
  • 如果行中的最小值和列中的最大值不相同,则不存在鞍点
  • 重复上述步骤,直到找到鞍点为止。

如何找到鞍点?

考虑以下矩阵并找出鞍点。

Find Saddle Point of a Matrix in Java

让我们找出鞍点。

第 0 行:第 0 行的最小值为 4(索引为 0),同一列 0 的最大值为 7。这两个元素不同,因此第 0 行不包含任何鞍点。

第 1 行:第 1 行的最小值为 7(索引为 0),同一列 0 的最大值为 7。这两个元素相同,因此7是矩阵的鞍点。

第 2 行:第 2 行的最小值为 1(索引为 1),同一列 1 的最大值为 8。这两个元素不同,因此第 2 行不包含任何鞍点。

Java 程序查找矩阵中的鞍点

FindSaddlePoint.java

输出

Find Saddle Point of a Matrix in Java

让我们看另一种逻辑。

MatrixSaddlePoint.java

输出

The saddle point of the matrix is: 7