algorithm - 检查矩阵中元素邻居的最佳方法

标签 algorithm matrix

我有一个矩阵 M,其维度为 n x n。

我必须编写一个算法来返回一对 x,y 使得 Mx,y < min(Mx+1,y, Mx,y+1, Mx−1y, Mx,y−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) .重复直到当前值是局部最小值,这意味着您不能再移动到相邻的较小值。

关于algorithm - 检查矩阵中元素邻居的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53167360/

相关文章:

javascript - 根据 parent 的旋转状态围绕其 parent 运行的动画行星

java - 从 Java 中的二维数组矩阵获取行和列

python - 归零问题 - 获取时间超出错误

java - 我们如何优化 ArrayList 上的插入?

r - 将具有三列(日期、参数、结果)的矩阵解析为在指定日期 R 的每个参数都有一列的矩阵

c - 创建单位矩阵时出现性能异常

c++ - 声明为 void 的变量或字段(函数)

algorithm - 周期性二进制字符串

ruby - 从 key 小于特定值的哈希中获取所有值的有效方法

algorithm - 仅进行一项更改即可迭代所有可能的状态