What is the meaning of O( polylog(n) )? In particular, how is polylog(n) defined?

Managu picture Managu · Nov 26, 2009 · Viewed 21.2k times · Source

Brief:
When academic (computer science) papers say "O(polylog(n))", what do they mean? I'm not confused by the "Big-Oh" notation, which I'm very familiar with, but rather by the function polylog(n). They're not talking about the complex analysis function Lis(Z) I think. Or are they? Something totally different maybe?

More detail:
Mostly for personal interest, I've recently been looking over various papers on Compressed Suffix Arrays, e.g. Advantages of Backward Searching -- Efficient Secondary Memory and Distributed Implementation of Compressed Suffix Arrays. The computational complexity estimates stated sometimes involve polylog(n), which is a function I'm not familiar with.

Wikipedia gives a definition of polylogs(z) which appears to mainly be about complex analysis and analytic number theory. My suspicion is that it's not related to the polylog(n) in the compression papers, though I'd love to hear otherwise from someone more knowledgeable. If this is the case, why exactly is it thought reasonable to omit the subscript?

My only other guess is that maybe O(polylog(n)) is supposed to mean "Asymptotic to a polynomial function of log(n)." But that's only a guess: I have no evidence of this, and it would be an abuse of notation to boot.

In any case, a link to a reasonably authoritative definition would be greatly appreciated!

Answer

ShreevatsaR picture ShreevatsaR · Nov 26, 2009

Abuse of notation or not, polylog(n) does mean "some polynomial in log(n)", just as "poly(n)" can mean "some polynomial in n". So O(polylog(n)) means "O((log n)k) for some k". (See Wikipedia: Polylogarithmic, or, to see it in context, Prof. Scott Aaronson's blog: My Favorite Growth Rates.)

The point is that just as we often don't care about constant factors, it is often convenient to ignore powers of logarithms. Sometimes the "log factors" are ignored entirely and you might see "Õ(f(n))" — O with a tilde above it — which means "O(f(n) polylog(f(n)))", i.e., "O(f(n) (log f(n))k) for some k".