Computing Library › Complexity & Computation
Complexity & Computation

Big-Omega Notation

Big-Omega notation gives a lower bound on a function's growth, stating the cost is at least a certain rate.

The idea

Where big-O caps growth from above, big-Omega bounds it from below. We write f(n) = Omega(g(n)) to say f grows at least as fast as g, up to a constant factor, for large inputs. It is the tool for saying a problem or algorithm cannot be faster than some rate.

Formal definition

f(n) = Omega(g(n)) if there exist positive constants c and n0 such that f(n) >= c * g(n) for all n >= n0. It is the mirror image of the big-O inequality, with the direction of the comparison reversed.

Lower bounds on problems

Big-Omega is most powerful when applied to a problem, not just one algorithm. Any comparison-based sort must make Omega(n log n) comparisons in the worst case, because there are n! possible orderings and each comparison distinguishes at most a factor of two. No clever code beats this bound within the comparison model.

Best case versus lower bound

A common confusion: big-Omega is not the same as best case. Best case describes one favorable input. A big-Omega bound on the worst case describes a floor that holds no matter how the algorithm is written. Keep the two ideas separate.

Why it matters

Lower bounds tell you when to stop optimizing. If a task provably requires Omega(n) time because it must read all n inputs, no algorithm can be sublinear, and effort is better spent elsewhere. Matching an upper bound to a lower bound, as in big-Theta, proves an algorithm is asymptotically optimal.