在 nxn 的二维数组中查找局部最大值
Posted
技术标签:
【中文标题】在 nxn 的二维数组中查找局部最大值【英文标题】:Finding the local maxima in a 2d array of nxn 【发布时间】:2017-07-17 10:55:22 【问题描述】:在一个 n×n 的二维数组中,我试图找到一个比它的邻居大的数字。 我使用分而治之的算法来解决这个问题。
接下来,我试图通过展示一个合适的不变量来证明我的算法的正确性,即我通过用随机数填充 4x4 网格、对其进行划分并找到每个选定列的全局最大值来解决这个问题(不确定这是不是这样证明算法的正确性)
我最困惑的一点是如何分析我的算法的运行时间,即在最坏的情况下需要访问 n×n 数组中的多少元素,最后是否有办法显示算法是否是渐近最优的。
【问题讨论】:
【参考方案1】:你不可能有比 O(n^2) 更好的复杂性,因为你需要访问数组的每个元素。如果您没有访问某个元素,则可能会发现您的数组没有任何局部最大值,除了您未访问的元素中的全局最大值。蛮力算法(仅检查每个元素是否为局部最大值)为 O(n^2),因此没有太多空间可以做得更好或更差。
重新分而治之算法——对于给定的问题,这似乎是过度设计的。你没有得到任何好处,而且你引入了额外的复杂性(你如何处理部分之间的边界?)
【讨论】:
以上是关于在 nxn 的二维数组中查找局部最大值的主要内容,如果未能解决你的问题,请参考以下文章