Advertisement

在矩阵中找寻最大正方形区域

阅读量:

在矩阵中寻找最大正方形连续区域


问题描叙

给定一个矩阵M以及一个数值k,要求确定一个最大的正方形连续子区域,使得该区域内所有元素的值均等于k。

p11

界的思考

针对矩阵M中的每个元素,其值要么与k相等,要么不相等。若要确定该数值的具体状态,必须进行一次比较操作。由于矩阵中共包含n个数值,因此至少需要执行n^2次比较操作。由此可知,比较次数的理论下限为\Omega(n^2)。那么是否存在一种时间复杂度为O(n^2)的算法能够有效解决此类问题呢?

算法

在矩阵M中,每个元素M_{ij}均对应一个数值max_{ij},该数值用于记录以该元素作为左上角顶点的最大正方形连续区域的尺寸(行数或列数)。
对于矩阵中的元素存在两种不同的状态:

  1. M_{ij}\ne k时,可推导出max_{ij}=0
  2. M_{ij} = k,则可通过计算max_{(i+1)j}max_{i(j+1)}以及max_{(i+1)(j+1)}三者的最小值,并在此基础上加1,从而得出$max

全部评论 (0)

还没有任何评论哟~