gpt4 book ai didi

algorithm - 在二维数组中寻找局部最大值

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:31:42 24 4
gpt4 key购买 nike

二维数组中的局部最大值可以定义为一个值,它的所有 4 个邻居都小于或等于它,即 a[i][j] 是局部最大值,

a[i+1][j] <= a[i][j] 
&& a[i-1][j] <= a[i][j]
&& a[i][j+1] <= a[i][j]
&& a[i+1][j-1] <= a[i][j]

我被要求找到给定二维数组中的所有局部最大值。

最简单的做法是遍历所有元素,并检查每个元素是否为局部最大值。这将是 O( n^2 )。我觉得你不能做得比这更好,尽管我的 friend 坚持认为应该存在渐近更好的算法。有什么提示吗?

我是按照分而治之的思路思考的,但我觉得如果不遍历所有数字就不可能检测到所有局部最大值,这必然是 O( n^2 )。我是对的还是错过了什么?

最佳答案

请注意,二维网格的局部最大值或最小值可以使用分而治之策略在 O(nlgn) 时间内计算出来。这比 O(n^2) 时间复杂度类中包含的蛮力算法稍微好一点。此外,可以对分而治之算法进行改进,得到一个复杂度为O(n)的二维网格极值查找算法。

查看这些关于峰值选择算法背后的理论的注释(我相信它们有更多的 Material ):

http://courses.csail.mit.edu/6.006/spring11/lectures/lec02.pdf

关于algorithm - 在二维数组中寻找局部最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9781328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com