English 中文(简体)
What is the meaning of O( polylog(n) )? In particular, how is polylog(n) defined?
原标题:

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!

最佳回答

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

问题回答

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

O(log^p n)

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

Different polylog article. You re guess is pretty close.

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





相关问题
How to add/merge several Big O s into one

If I have an algorithm which is comprised of (let s say) three sub-algorithms, all with different O() characteristics, e.g.: algorithm A: O(n) algorithm B: O(log(n)) algorithm C: O(n log(n)) How do ...

Grokking Timsort

There s a (relatively) new sort on the block called Timsort. It s been used as Python s list.sort, and is now going to be the new Array.sort in Java 7. There s some documentation and a tiny Wikipedia ...

Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Enumerating All Minimal Directed Cycles Of A Directed Graph

I have a directed graph and my problem is to enumerate all the minimal (cycles that cannot be constructed as the union of other cycles) directed cycles of this graph. This is different from what the ...

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签