我正在解决一个家庭作业问题,以简化重复操作并尝试找到上限。
我已经将方程式简化为O(log(n + 2))
,并且想知道总体上是否:
O(log(n)) = O(log(n + a))
是否代表任何a
?
答案 0 :(得分:2)
是的,可以说a
完全独立于输入大小。目的是显示复杂度如何相对于输入数据的大小增加/减少。
答案 1 :(得分:0)
是的,如果已知函数f
是O(log n)
,那么对于任何常量O(log(n + a))
,它也是a
。
看到我们计算出极限
lim log(n + a) / log(n) =
= lim log(n (1 + a/n)) / log(n) =
= lim (log(n) + log(1 + a/n)) / log(n) =
= lim 1 + (log(1 + a/n)/log(n)) =
= 1
随着n达到无穷大。接下来,由于f
是O(log n)
,使用lim sup
definition of the Big O notation,我们得到:
C = lim sup f(n) / log(n) =
= lim sup f(n) / log(n + a) * log(n + a) / log(n) =
= (lim sup f(n) / log(n + a)) * 1
因此,lim sup f(n) / log(n + a)
也受C
的限制,因此,f
是O(log(n + a))
。