具有两个变量的大 O 表示法

Big-O notation with two variables

这源于写一个程序到find the median of two sorted arrays,大小分别为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 notation 在维基百科上也提到了这一点:

"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))."

是的,您在所有方面都是正确的。对数增长足够慢,渐近 class 对内部函数不是很敏感。