Это не официальный сайт wikipedia.org 01.01.2023

«O» большое и «o» малое — Википедия

«O» большое и «o» малое

(перенаправлено с «O-большое»)

«O» большое и «o» малое ( O и o ) — математические обозначения для сравнения асимптотического поведения (асимптотики) функций. Используются в различных разделах математики, но активнее всего — в математическом анализе, теории чисел и комбинаторике, а также в информатике и теории алгоритмов. Под асимптотикой понимается характер изменения функции при стремлении её аргумента к определённой точке.

o ( f ) , «о малое от f » обозначает «бесконечно малое относительно f »[1], пренебрежимо малую величину при рассмотрении f . Смысл термина «О большое» зависит от его области применения, но всегда O ( f ) растёт не быстрее, чем f (точные определения приведены ниже).

В частности:

  • фраза «сложность алгоритма есть O ( f ( n ) ) » означает, что с увеличением параметра n , характеризующего количество входной информации алгоритма, время работы алгоритма будет возрастать не быстрее, чем f ( n ) , умноженная на некоторую константу;
  • фраза «функция f ( x ) является „о“ малым от функции g ( x ) в окрестности точки p » означает, что с приближением x к p f ( x ) уменьшается быстрее, чем g ( x ) (отношение | f ( x ) | / | g ( x ) | стремится к нулю).

ОпределенияПравить

Пусть f ( x )   и g ( x )   — две функции, определённые в некоторой проколотой окрестности точки x 0  , причём в этой окрестности g   не обращается в ноль. Говорят, что:

  • f   является «O» большим от g   при x x 0  , если существует такая константа C > 0  , что для всех x   из некоторой окрестности точки x 0   имеет место неравенство
    | f ( x ) | C | g ( x ) |  ;
  • f   является «о» малым от g   при x x 0  , если для любого ε > 0   найдется такая проколотая окрестность U x 0   точки x 0  , что для всех x U x 0   имеет место неравенство
    | f ( x ) | < ε | g ( x ) | .  

Иначе говоря, в первом случае отношение | f | | g | C   в окрестности точки x 0   (то есть ограничено сверху), а во втором оно стремится к нулю при x x 0  .

ОбозначениеПравить

Обычно выражение « f   является O   большим ( o   малым) от g  » записывается с помощью равенства f ( x ) = O ( g ( x ) )   (соответственно, f ( x ) = o ( g ( x ) )  ).

Это обозначение очень удобно, но требует некоторой осторожности при использовании (а потому в наиболее элементарных учебниках его могут избегать). Дело в том, что это не равенство в обычном смысле, а несимметричное отношение.

В частности, можно писать

f ( x ) = O ( g ( x ) )   (или f ( x ) = o ( g ( x ) )  ),

но выражения

O ( g ( x ) ) = f ( x )   (или o ( g ( x ) ) = f ( x )  )

бессмысленны.

Другой пример: при x 0   верно, что

O ( x 2 ) = o ( x )  

но

o ( x ) O ( x 2 )  .

При любом x верно

o ( x ) = O ( x )  ,

то есть бесконечно малая величина является ограниченной, но

O ( x ) o ( x ) .  

Вместо знака равенства методологически правильнее было бы употреблять знаки принадлежности и включения, понимая O ( )   и o ( )   как обозначения для множеств функций, то есть, используя запись в форме

x 3 + x 2 O ( x 3 )  

или

O ( x 2 ) o ( x )  

вместо, соответственно,

x 3 + x 2 = O ( x 3 )  

и

O ( x 2 ) = o ( x )  

Однако на практике такая запись встречается крайне редко, в основном, в простейших случаях.

При использовании данных обозначений должно быть явно оговорено (или очевидно из контекста), о каких окрестностях (одно- или двусторонних; содержащих целые, вещественные, комплексные или другие числа) и о каких допустимых множествах функций идет речь (поскольку такие же обозначения употребляются и применительно к функциям многих переменных, к функциям комплексной переменной, к матрицам и др.).

Другие подобные обозначенияПравить

Для функций f ( n )   и g ( n )   при n n 0   используются следующие обозначения:

Обозначение Интуитивное объяснение Определение
f ( n ) O ( g ( n ) )   f   ограничена сверху функцией g   (с точностью до постоянного множителя) асимптотически ( C > 0 ) , U : ( n U ) | f ( n ) | C | g ( n ) |  
f ( n ) Ω ( g ( n ) )   f   ограничена снизу функцией g   (с точностью до постоянного множителя) асимптотически ( C > 0 ) , U : ( n U ) C | g ( n ) | | f ( n ) |  
f ( n ) Θ ( g ( n ) )   f   ограничена снизу и сверху функцией g   асимптотически ( C > 0 ) , ( C > 0 ) , U : ( n U ) C | g ( n ) | | f ( n ) | C | g ( n ) |  
f ( n ) o ( g ( n ) )   g   доминирует над f   асимптотически ( C > 0 ) , U : ( n U ) | f ( n ) | < C | g ( n ) |  
f ( n ) ω ( g ( n ) )   f   доминирует над g   асимптотически ( C > 0 ) , U : ( n U ) C | g ( n ) | < | f ( n ) |  
f ( n )     g ( n )   f   эквивалентна g   асимптотически lim n n 0 f ( n ) g ( n ) = 1  

где U   — проколотая окрестность точки 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 ) )  

РефлексивностьПравить

f ( n ) = Θ ( f ( n ) )  ; f ( n ) = O ( f ( n ) )  ; f ( n ) = Ω ( f ( n ) )  

СимметричностьПравить

f ( n ) = Θ ( g ( n ) ) g ( n ) = Θ ( f ( n ) )  

Перестановочная симметрияПравить

f ( n ) = O ( g ( n ) ) g ( n ) = Ω ( f ( n ) ) f ( n ) = o ( g ( n ) ) g ( n ) = ω ( f ( n ) )  

ДругиеПравить

  • C o ( f ) = o ( f )  
C O ( f ) = O ( f )  
  • o ( C f ) = o ( f )  
O ( C f ) = O ( f )  
и, как следствия,
o ( f ) = o ( f )  
O ( f ) = O ( f )  
  • o ( f ) + o ( f ) = o ( f )  
o ( f ) + O ( f ) = O ( f ) + O ( f ) = O ( f )  
  • O ( f ) O ( g ) = O ( f g )  
o ( f ) O ( g ) = o ( f ) o ( g ) = o ( f g )  
  • O ( O ( f ) ) = O ( f )  
o ( o ( f ) ) = o ( O ( f ) ) = O ( o ( f ) ) = o ( f )  

Асимптотические обозначения в уравненияхПравить

  • Если в правой части уравнения находится только асимптотическое обозначение (например n = O ( n 2 )  ), то знак равенства обозначает принадлежность множеству ( n O ( n 2 )  ).
  • Если в уравнении асимптотические обозначения встречаются в другой ситуации, они рассматриваются как подставляемые взамен их некоторые функции. Например, при x → 0 формула e x 1 = x + o ( x )   обозначает, что e x 1 = x + f ( x )  , где f ( x )   — функция, о которой известно только то, что она принадлежит множеству o ( x )  . Предполагается, что таких функций в выражении столько, сколько раз встречаются в нём асимптотические обозначения. Например,   i = 0 n O ( n i 2 )     — содержит только одну функцию из класса O ( n 2 )  .
  • Если асимптотические обозначения встречаются в левой части уравнения, используют следующее правило:
    какие бы мы функции ни выбрали (в соответствии с предыдущим правилом) взамен асимптотических обозначений в левой части уравнения, можно выбрать функции вместо асимптотических обозначений (в соответствии с предыдущим правилом) в правой части так, что уравнение будет правильным.
    Например, запись x + o ( x ) = O ( x )   обозначает, что для любой функции f ( x ) o ( x )  , существует некоторая функция g ( x ) O ( x )   такая, что выражение x + f ( x ) = g ( x )   — верно для всех x  .
  • Несколько таких уравнений могут быть объединены в цепочки. Каждое из уравнений в таком случае следует интерпретировать в соответствии с предыдущим правилом.
    Например: 4 n 4 + 4 n 2 + 1 = 4 n 4 + Θ ( n 2 ) = Θ ( n 4 )  . Отметим, что такая интерпретация подразумевает выполнение соотношения 4 n 4 + 4 n 2 + 1 = Θ ( n 4 )  .

Приведенная интерпретация подразумевает выполнение соотношения:

A = B B = C } A = C  , где A, B, C — выражения, которые могут содержать асимптотические обозначения.

Примеры использованияПравить

  • e x = 1 + x + x 2 2 ! + x 3 3 ! + + x n n ! + = 1 + x + x 2 2 + O ( x 3 )   при x 0  .
  • T ( n ) = ( n + 1 ) 2 = O ( n 2 )   при n  .
При n > 1   выполнено неравенство ( n + 1 ) 2 < 4 n 2  . Поэтому положим n 0 = 1 , c = 4  .
Отметим, что нельзя положить n 0 = 0  , так как T ( 0 ) = 1   и, следовательно, это значение при любой константе c   больше c 0 2 = 0  .
  • Функция T ( n ) = 3 n 3 + 2 n 2   при n   имеет степень роста O ( n 3 )  .
Чтобы это показать, надо положить n 0 = 0   и c = 5  . Можно, конечно, сказать, что T ( n )   имеет порядок O ( n 4 )  , но это более слабое утверждение, чем то, что T ( n ) = O ( n 3 )  .
  • Докажем, что функция 3 n   при n   не может иметь порядок O ( 2 n )  .
Предположим, что существуют константы c   и n 0   такие, что для всех n n 0   выполняется неравенство 3 n c 2 n  .
Тогда c ( 3 2 ) n   для всех n n 0  . Но ( 3 2 ) n   принимает любое, как угодно большое, значение при достаточно большом n  , поэтому не существует такой константы c  , которая могла бы мажорировать ( 3 2 ) n   для всех n   больших некоторого n 0  .
  • T ( n ) = n 3 + 2 n 2 = Ω ( n 3 ) , n  .
Для проверки достаточно положить c = 1  . Тогда T ( n ) c n 3   для n = 0 , 1 , . . .  .

ИсторияПравить

Обозначение «„O“ большое» введено немецким математиком Паулем Бахманом во втором томе его книги «Analytische Zahlentheorie» (Аналитическая теория чисел), вышедшем в 1894 году. Обозначение «„о“ малое» впервые использовано другим немецким математиком, Эдмундом Ландау в 1909 году; с работами последнего связана и популяризация обоих обозначений, в связи с чем их также называют символами Ландау. Обозначение пошло от немецкого слова «Ordnung» (порядок)[2].

См. такжеПравить

ПримечанияПравить

  1. Шведов И. А. Компактный курс математического анализа. Часть 1. Функции одной переменной. — Новосибирск, 2003. — С. 43.
  2. D.E. Knuth. Big Omicron and big Omega and big Theta (англ.) : Article. — ACM Sigact News, 1976. — Т. 8, № 2. — С. 18—24. Архивировано 15 августа 2016 года.

ЛитератураПравить

  • Д. Грин, Д. Кнут. Математические методы анализа алгоритмов. — Пер. с англ. — М.: Мир, 1987. — 120 с.
  • Дж. Макконелл. Основы современных алгоритмов. — Изд. 2 доп. — М.: Техносфера, 2004. — 368 с. — ISBN 5-94836-005-9.
  • Джон Э. Сэвидж. Сложность вычислений. — М.: Факториал, 1998. — 368 с. — ISBN 5-88688-039-9.
  • В. Н. Крупский. Введение в сложность вычислений. — М.: Факториал Пресс, 2006. — 128 с. — ISBN 5-88688-083-6.
  • Herbert S. Wilf. Algorithms and Complexity.
  • Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 3. Рост функций // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 2-е изд. — М.: Вильямс, 2005. — С. 87—108. — ISBN 5-8459-0857-4.
  • Бугров, Никольский. Высшая математика, том 2.
  • Dionysis Zindros. Введение в анализ сложности алгоритмов  (рус.) (2012). Дата обращения: 11 октября 2013. Архивировано 10 октября 2013 года.