«O» большое и «o» малое ( O {\displaystyle O} и o {\displaystyle o} ) — математические обозначения для сравнения асимптотического поведения (асимптотики) функций. Используются в различных разделах математики, но активнее всего — в математическом анализе, теории чисел и комбинаторике, а также в информатике и теории алгоритмов. Под асимптотикой понимается характер изменения функции при стремлении её аргумента к определённой точке.
o ( f ) {\displaystyle o(f)} , «о малое от f {\displaystyle f} » обозначает «бесконечно малое относительно f {\displaystyle f} »[1], пренебрежимо малую величину при рассмотрении f {\displaystyle f} . Смысл термина «О большое» зависит от его области применения, но всегда O ( f ) {\displaystyle O(f)} растёт не быстрее, чем f {\displaystyle f} (точные определения приведены ниже).
В частности:
Пусть f ( x ) {\displaystyle f(x)} и g ( x ) {\displaystyle g(x)} — две функции, определённые в некоторой проколотой окрестности точки x 0 {\displaystyle x_{0}} , причём в этой окрестности g {\displaystyle g} не обращается в ноль. Говорят, что:
Иначе говоря, в первом случае отношение | f | | g | ⩽ C {\displaystyle {\frac {|f|}{|g|}}\leqslant C} в окрестности точки x 0 {\displaystyle x_{0}} (то есть ограничено сверху), а во втором оно стремится к нулю при x → x 0 {\displaystyle x\to x_{0}} .
Обычно выражение « f {\displaystyle f} является O {\displaystyle O} большим ( o {\displaystyle o} малым) от g {\displaystyle g} » записывается с помощью равенства f ( x ) = O ( g ( x ) ) {\displaystyle f(x)=O(g(x))} (соответственно, f ( x ) = o ( g ( x ) ) {\displaystyle f(x)=o(g(x))} ).
Это обозначение очень удобно, но требует некоторой осторожности при использовании (а потому в наиболее элементарных учебниках его могут избегать). Дело в том, что это не равенство в обычном смысле, а несимметричное отношение.
В частности, можно писать
но выражения
бессмысленны.
Другой пример: при x → 0 {\displaystyle x\rightarrow 0} верно, что
но
При любом x верно
то есть бесконечно малая величина является ограниченной, но
Вместо знака равенства методологически правильнее было бы употреблять знаки принадлежности и включения, понимая O ( ) {\displaystyle O({\,})} и o ( ) {\displaystyle o({\,})} как обозначения для множеств функций, то есть используя запись в форме
или
вместо, соответственно,
и
Однако на практике такая запись встречается крайне редко, в основном, в простейших случаях.
При использовании данных обозначений должно быть явно оговорено (или очевидно из контекста), о каких окрестностях (одно- или двусторонних; содержащих целые, вещественные, комплексные или другие числа) и о каких допустимых множествах функций идет речь (поскольку такие же обозначения употребляются и применительно к функциям многих переменных, к функциям комплексной переменной, к матрицам и др.).
Для функций f ( n ) {\displaystyle f(n)} и g ( n ) {\displaystyle g(n)} при n → n 0 {\displaystyle n\to n_{0}} используются следующие обозначения:
где U {\displaystyle U} — проколотая окрестность точки n 0 {\displaystyle n_{0}} .
f ( n ) = Θ ( g ( n ) ) ∧ g ( n ) = Θ ( h ( n ) ) ⟹ f ( n ) = Θ ( h ( n ) ) f ( n ) = O ( g ( n ) ) ∧ g ( n ) = O ( h ( n ) ) ⟹ f ( n ) = O ( h ( n ) ) f ( n ) = Ω ( g ( n ) ) ∧ g ( n ) = Ω ( h ( n ) ) ⟹ f ( n ) = Ω ( h ( n ) ) f ( n ) = o ( g ( n ) ) ∧ g ( n ) = o ( h ( n ) ) ⟹ f ( n ) = o ( h ( n ) ) f ( n ) = ω ( g ( n ) ) ∧ g ( n ) = ω ( h ( n ) ) ⟹ f ( n ) = ω ( h ( n ) ) {\displaystyle {\begin{matrix}f(n)=\Theta (g(n))\land g(n)=\Theta (h(n))&\implies &f(n)=\Theta (h(n))\\f(n)=O(g(n))\land g(n)=O(h(n))&\implies &f(n)=O(h(n))\\f(n)=\Omega (g(n))\land g(n)=\Omega (h(n))&\implies &f(n)=\Omega (h(n))\\f(n)=o(g(n))\land g(n)=o(h(n))&\implies &f(n)=o(h(n))\\f(n)=\omega (g(n))\land g(n)=\omega (h(n))&\implies &f(n)=\omega (h(n))\end{matrix}}}
f ( n ) = Θ ( f ( n ) ) {\displaystyle f(n)=\Theta (f(n))} ; f ( n ) = O ( f ( n ) ) {\displaystyle f(n)=O(f(n))} ; f ( n ) = Ω ( f ( n ) ) {\displaystyle f(n)=\Omega (f(n))}
f ( n ) = Θ ( g ( n ) ) ⇔ g ( n ) = Θ ( f ( n ) ) {\displaystyle f(n)=\Theta (g(n))\Leftrightarrow g(n)=\Theta (f(n))}
f ( n ) = O ( g ( n ) ) ⇔ g ( n ) = Ω ( f ( n ) ) f ( n ) = o ( g ( n ) ) ⇔ g ( n ) = ω ( f ( n ) ) {\displaystyle {\begin{matrix}f(n)=O(g(n))&\Leftrightarrow &g(n)=\Omega (f(n))\\f(n)=o(g(n))&\Leftrightarrow &g(n)=\omega (f(n))\end{matrix}}}
Приведенная интерпретация подразумевает выполнение соотношения:
Обозначение «„O“ большое» введено немецким математиком Паулем Бахманом во втором томе его книги «Analytische Zahlentheorie» (Аналитическая теория чисел), вышедшем в 1894 году. Обозначение «„о“ малое» впервые использовано другим немецким математиком, Эдмундом Ландау в 1909 году; с работами последнего связана и популяризация обоих обозначений, в связи с чем их также называют символами Ландау. Обозначение пошло от немецкого слова «Ordnung» (порядок)[2].