关于对数的Big-O表示法

时间:2012-09-12 03:49:18

标签: algorithm runtime big-o

我被问到一个面试问题,希望我能够辨别几个对数函数的Big-O表示法。功能如下:

f(x)= log 5 (x)

f(x)= log(x 5

f(x)= log(6 * log x)

f(x)= log(log x)

有人告诉我,第一个和第二个的Big-O不等同,第三个和第四个在错误地猜测相反之后是不相等的。任何人都可以解释为什么他们不相同,那么他们的Big-O是什么?

4 个答案:

答案 0 :(得分:4)

  1. log 5 x与编写日志日志日志日志x相同,后者是x的非常缓慢增长函数。
  2. 这相当于5 log x(在日志中重写取幂作为外部乘法),相当于log x。
  3. 这相当于log 6 + log log x,相当于log log x。
  4. 这只是log log x。
  5. 所以你有O(日志日志日志日志x),O(日志x),O(日志日志x)和O(日志日志x),三个不同的Big-O类。

    如果你的面试官说3和4不同,要么他弄错了,要么你错误地记住了这个问题(一直都是这样)。

答案 1 :(得分:2)

这是一个数学问题:

  1. f(x)= log 5 (x)
  2. f(x)= log(x 5 )= 5 * log x
  3. f(x)= log(6 * log x)= log 6 + log(log x)
  4. f(x)= log(log x)
  5. 所以Big O是

    1. 为O(log 5 (X))
    2. O(log x)
    3. O(log(log x))
    4. O(log(log x))
    5. 所以(1)和(2)不相等,但(3)和(4)是(尽管它们与(1)和(2)都不同)

答案 2 :(得分:1)

f(x) = log^5(n)
f(x) = log(n^5) -> 5 log(n)
O(5 log(n)) < O(log(n)^5)

f(x) = log(6*log n) -> log(6)+log(log(n))
f(x) = log(log n) 
log(log n) < log(6) + log(log(n)) 

,虽然log(6)是常数,因此它们具有相同的O

答案 3 :(得分:0)

我认为你的意思是f(n),而不是f(x)。对于1和2,log^5(n)相当于O(log log log log log(n)),而log(n^5) = 5 log(n) = O(log n)

对于3和4,我不同意。 log(6*log n) = log(6) + log(log n) = O(log log n),与4 - O(log log n)相同。