我被问到一个面试问题,希望我能够辨别几个对数函数的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是什么?
答案 0 :(得分:4)
所以你有O(日志日志日志日志x),O(日志x),O(日志日志x)和O(日志日志x),三个不同的Big-O类。
如果你的面试官说3和4不同,要么他弄错了,要么你错误地记住了这个问题(一直都是这样)。
答案 1 :(得分:2)
这是一个数学问题:
所以Big O是
所以(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)
相同。