2
寻找位移最大值的线性时间算法
假设给定一个数组其中包含非负整数(不一定是唯一的)。A[1..n]A[1..n]A[1..n] 令为升序排列。我们要计算 BBBAAAm=maxi∈[n]B[i]+i.m=maxi∈[n]B[i]+i.m = \max_{i\in [n]} B[i]+i. 显而易见的解决方案是对A进行排序AAA,然后计算mmm。这给出了在最坏情况下在时间O(n \ lg n)上运行的算法O(nlgn)O(nlgn)O(n \lg n)。 有可能做得更好吗?我们可以计算mmm的线性时间? 我的主要问题是上述问题。但是,了解该问题的以下概括将很有趣。 令BBB为AAA根据oracle \ leq的比较排序≤≤\leq ,fff为oracle提供的函数。给定\ leq和f的AAA和oracles,对于计算m = \ max_ {i \ in [n]} f(B [i],i)所需的时间,我们能说什么?≤≤\leqfffm=maxi∈[n]f(B[i],i)m=maxi∈[n]f(B[i],i)m = \max_{i \in [n]} f(B[i],i) 我们仍然可以在O(n \ lg n)时间中计算m。但是我们可以证明这种广义情况下的超线性下界吗?mmmO(nlgn)O(nlgn)O(n \lg n) 如果答案是肯定的,那么如果我们假设≤≤\leq是整数的通常顺序并且fff是“ nice”函数(单调,多项式,线性等),那么下界是否成立?