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

问题描述 投票:-3回答:1

这两个是平等的吗?我在某处读到O(2lg n)= O(n)。按照这个观察,我猜测答案是否定的,但我并不完全确定。我很感激任何帮助。

big-o asymptotic-complexity logarithm
1个回答
1
投票

首先,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
© www.soinside.com 2019 - 2024. All rights reserved.