是 2^(log n) = O(log(n)) 吗?

Is 2^(log n) = O(log(n))?

这两个相等吗?我在某处读到 O(2lg n) = O(n)。根据这一观察,我猜答案是否定的,但我不完全确定。如果有任何帮助,我将不胜感激。

首先,O(2log(n)) 不等于 O(n)

要使用大 O 表示法,您会找到一个表示算法复杂度的函数,然后您会在该函数中找到具有最大增长率的项。最后,您将尽可能消除任何常数因子。

例如假设您的算法迭代 4n^2 + 5n + 1 次,其中 n 是输入的大小。首先,您将采用增长率最高的项,在本例中为 4n^2,然后删除任何常数因子,留下 O(n^2) 复杂度。

在你的例子中,O(2log(n))可以简化为O(log(n))

现在回答你的问题。

在计算机科学中,除非另有说明,否则您通常可以假设 log(n) 实际上表示 n 的对数,以 2 为底。

这意味着,使用对数定律,2^log(n) 可以简化为 O(n)

证明:

y = 2^log(n)
log(y) = log(2^log(n))
log(y) = log(n) * log(2) [Log(2) = 1 since we are talking about base 2 here]
log(y) = log(n)
y = n