如果f(n)= O(g(n)),则不应该f(n)* log2(f(n)^ c)= O(g(n)* log2(g(n)))取决于C的价值?

时间:2013-01-30 06:34:56

标签: asymptotic-complexity

如果f(n)=O(g(n)),那么f(n)∗log2(f(n)^c)=O(g(n)∗log2(g(n)))是否应该依赖于C的值?

这里C是正常数。根据我的说法,如果C很大,那么声明就会变错,如果c很小,那么它就是真的。因此结果取决于c。

我正在上课算法,这是我被问到的问题之一。据我说,这应该依赖于常数c,但答案是错误的。

2 个答案:

答案 0 :(得分:20)

log(x^c)  = c * log(x)

所以,

log2(f(n)^c) == c * log2(f(n))

因此,

f(n)∗log2(f(n)^c) = c * f(n) * log2(f(n))

                   = O(g(n)∗log2(g(n)))

答案 1 :(得分:2)

@Undefitied,根据 Big-Oh 符号 f(n) = O(g(n)) 的定义,当且仅当存在常数 "c" 和 N 使得 f(n) <= c* f(n) 对于所有 n > N。当我们断言 f(n) 与 O(g(n)) “相等”时,我们并不是说它们在代数方面一定“相等”。我们说 f(n) 在 g(n) 之上。如果 f 和 g 不减且始终大于 1,并且 c 是正常数,则上述 Mitch Wheat 给出的证明为真。