我得到了一个维度为n x n的矩阵M。
我必须编写一个返回一对x,y的算法,使得Mx,y < min(Mx+1,y, Mx,y+1, Mx−1y, Mx,y−1).
您可以想到的第一个想法当然是获取每个元素,然后逐个检查邻居,以了解这种关系是否正确。但是,从时间复杂度的角度来看,该算法必须是最佳的。这里我不确定如何优化。
有人知道我可以搜索的算法的名称吗?或者可以提供一些指向如何优化该算法的指针?
我已经考虑了一下,我认为也许可以分解该算法以找到矩阵中的最小值?一定能满足上面的关系吗?
答案 0 :(得分:1)
您正在寻找局部最小值。从矩阵中的某个条目开始,然后转到值较小的相邻条目,很容易找到它。
例如,如果您从(x, y)
和M[x+1, y] < M[x, y]
开始,则从(x+1, y)
开始。然后,如果为M[x+1, y-1] < M[x+1, y]
,则继续进行(x+1, y-1)
。重复该操作,直到当前值达到局部最小值,这意味着您将无法再移至相邻的较小值。