views:

415

answers:

6

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!

A: 

I'm sure they mean only the positive integer real axis: Re(n) = n

o_O Tync
+1  A: 

Polylog(n) is just "polynomial in the log of n". Wikipedia

Donnie
+1  A: 

Different polylog article. You're guess is pretty close.

Kevin Montrose
+6  A: 

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".

ShreevatsaR
Fair enough. Thanks for the links!
Managu
`it is often convenient to ignore powers of logarithms` Strange. How can ignoring powers of logarithms be convenient, when it changes meaning altogether?
Lazer
@eSKay: The same way it is often convenient to ignore constant factors even though it changes meaning altogether — it just depends on what you want to focus on. Any polylogarithmic function grows slower than O(n^ε) for *every* ε. So when what you care about is the exponent in n — e.g. trying to distinguish between n^2.1 and n^2 — these polylog factors don't matter. O(n^2 polylog(n)) is O(n^(2+ε)) for all ε, so we write Õ(n^2).
ShreevatsaR
+1  A: 

The way it is used in this paper seems to be describing something as:

O(log^p n)

Hamish Smith
A: 

Wolfram gives you a selection, of which the polylogarithm page looks most promising.

Ewan Todd