如果f(n)=O(g(n))
,那么f(n)∗log2(f(n)^c)=O(g(n)∗log2(g(n)))
是否应该依赖于C的值?
这里C是正常数。根据我的说法,如果C很大,那么声明就会变错,如果c很小,那么它就是真的。因此结果取决于c。
我正在上课算法,这是我被问到的问题之一。据我说,这应该依赖于常数c,但答案是错误的。
答案 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 给出的证明为真。