Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Big-O Notation regarding logarithms

I got asked an interview question that wanted me to discern the Big-O notation of several logarithmic functions. The functions were as follows:

f(x) = log5(x)

f(x) = log(x5)

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

f(x) = log(log x)

I was told that the Big-O for the first and second are not equivalent and the third and fourth are not equivalent after mistakenly guessing the opposite. Can anyone explain why they are not equivalent and what their Big-O are then?

like image 530
user1246462 Avatar asked Feb 19 '23 04:02

user1246462


2 Answers

  1. log5 x is the same as writing log log log log log x, which is a very slow-growing function of x.
  2. This is equivalent to 5 log x (rewriting exponentiation inside the log as multiplication outside), which is equivalent to log x.
  3. This is equivalent to log 6 + log log x, which is equivalent to log log x.
  4. This is just log log x.

So you have O(log log log log log x), O(log x), O(log log x) and O(log log x), three distinct Big-O classes.

If your interviewer said 3 and 4 were different, either he was mistaken or you've misremembered the question (happens all the time).

like image 108
nneonneo Avatar answered Feb 28 '23 11:02

nneonneo


This is a matter of math:

  1. f(x) = log5(x)
  2. f(x) = log(x5) = 5 * log x
  3. f(x) = log(6*log x) = log 6 + log(log x)
  4. f(x) = log(log x)

So the Big O is

  1. O(log5(x))
  2. O(log x)
  3. O(log (log x))
  4. O(log (log x))

So (1) and (2) aren't equivalent, but (3) and (4) are (though they're different from both (1) and (2))

like image 33
Ken Wayne VanderLinde Avatar answered Feb 28 '23 11:02

Ken Wayne VanderLinde