带有两个变量的Big-O表示法

Eri*_*c Z 8 algorithm big-o

这源于编写程序以找到具有大小mn分别具有时间复杂度的两个排序数组的中值O(log(m + n)).

我可以找出解决方案O(log(m) + log(n)).它符合上述时间要求吗?

我认为这是积极的,因为:

log(m) + log(n) = log(m*n) <= log((m+n)^2) = 2*log(m+n) = O(log(m+n))

换句话说,存在k = 2m0 = n0 = 1.对于任何m > m0 and n > n0,有log(m*n) <= k*log(m + n).

是否存在缺陷,或者我是否正确?

更一般地说,给定常数a,我们可以log(n^a) = O(log(n))用相同的推理说出来吗?


感谢大卫的回答.维基百科上的Big-O表示法也提到了这一点:

"We may ignore any powers of n inside of the logarithms. The set O(log n) is exactly the same as O(log(n^c))."

Dav*_*tat 6

是的,你在所有方面都是正确的.日志增长得足够慢,渐近类对内部函数不是很敏感.