2121 words - 9 pages

%LJ 2 QRWDWLRQ

Big O notation (with a capital letter O, not a zero), also called Landau's symbol, is a

symbolism used in complexity theory, computer science, and mathematics to describe the

asymptotic behavior of functions. Basically, it tells you how fast a function grows or

declines.

Landau's symbol comes from the name of the German number theoretician Edmund

Landau who invented the notation. The letter O is used because the rate of growth of a

function is also called its order.

For example, when analyzing some algorithm, one might find that the time (or the

number of steps) it takes to complete a problem of size n is given by T(n) = 4 n2 - 2 n + 2.

If we ignore constants ...view middle of the document...

Here is a list of classes of functions that are commonly encountered when analyzing

algorithms. The slower growing functions are listed first. c is some arbitrary constant.

notation

name

O(1)

constant

O(log(n))

logarithmic

c

O((log(n)) ) polylogarithmic

O(n)

linear

O(n2)

quadratic

c

O(n )

polynomial

O(cn)

exponential

Note that O(nc) and O(cn) are very different. The latter grows much, much faster, no

matter how big the constant c is. A function that grows faster than any power of n is

called superpolynomial. One that grows slower than an exponential function of the form

cn is called subexponential. An algorithm can require time that is both superpolynomial

and subexponential; examples of this include the fastest algorithms known for integer

factorization.

Note, too, that O(log n) is exactly the same as O(log(nc)). The logarithms differ only by a

constant factor, and the big O notation ignores that. Similarly, logs with different constant

bases are equivalent.

The above list is useful because of the following fact: if a function f(n) is a sum of

functions, one of which grows faster than the others, then the faster growing one

determines the order of f(n).

Example: If f(n) = 10 log(n) + 5 (log(n))3 + 7 n + 3 n2 + 6 n3, then f(n) = O(n3).

One caveat here: the number of summands has to be constant and may not depend on n.

This notation can also be used with multiple variables and with other expressions on the

right side of the equal sign. The notation:

f(n,m) = n2 + m3 + O(n+m)

represents the statement:

∃C ∃ N ∀ n,m>N : f(n,m) n2+m3+C(n+m)

Obviously, this notation is abusing the equality symbol, since it violates the axiom of

equality: "things equal to the same thing are equal to each other". To be more formally

correct, some people (mostly mathematicians, as opposed to computer scientists) prefer

to define O(g(x)) as a set-valued function, whose value is all functions that do not grow

faster then g(x), and use set membership notation to indicate that a specific function is a

member of the set thus defined. Both forms are in common use, but the sloppier equality

notation is more common at present.

Another point of sloppiness is that the parameter whose asymptotic behaviour is being

examined is not clear. A statement such as f(x,y) = O(g(x,y)) requires some additional

explanation to make clear what is meant. Still, this problem is rare in practice.

5HODWHG QRWDWLRQV

In addition to the big O notations, another Landau symbol is used in mathematics: the

little o. Informally, f(x) = o(g(x)) means that f grows much slower than g and is

insignificant in comparison.

Formally, we write f(x) = o(g(x)) (for x -> ) if and only if for every C>0 there exists a

real number N such that for all x > N we have |f(x)| < C |g(x)|; if g(x) 0, this is

equivalent to limx f(x)/g(x) = 0.

Also, if a is some real number, we write f(x) = o(g(x)) for x -> a if and only if for every

C>0...

Find the perfect research document on any subject