2013-09-07 8 views

ответ

0

Обозначение Big-O выражает асимптотическую верхнюю границу, в то время как запись Big-Theta дополнительно выражает асимптотическую нижнюю границу. Часто верхняя граница - это то, что интересует людей, поэтому они пишут O (что-то), даже когда Theta (что-то) также будет правдой. Например, если вы хотите подсчитать количество вещей, равных x в несортированном списке, вы можете сказать, что это можно сделать в линейном времени и есть O (n), потому что для вас важно, t возьмите больше, чем это. Однако также было бы верно, что это Omega (n) и, следовательно, Theta (n), так как вам нужно изучить все элементы в списке - это невозможно сделать в сублинейном времени.

+1

Есть ли разница между ними, когда речь идет о константе? также есть случай, что будет требование для Theta 1, а не O 1? – BarakA

+0

Нет разницы, говоря о постоянном времени, потому что подразумевается нижняя граница. Но см. Здесь интересную дискуссию: http://stackoverflow.com/questions/905551/are-there-any-o1-n-algorithms –

+0

Thank you buddy – BarakA

2

O (1) и Θ (1) не обязательно совпадают, если вы говорите о функциях над действительными числами. Например, рассмотрим функцию f (n) = 1/n. Эта функция является O (1), поскольку для любого n ≥ 1, f (n) ≤ 1. Однако это не Θ (1) по следующей причине: одно определение f (n) = Θ (g (n)) состоит в том, что предел | f (n)/g (n) | при n переходит в бесконечность, некоторое конечное значение L, удовлетворяющее 0 < L. Подключая f (n) = 1/n и g (n) = 1, мы берем предел | 1/n | так как n переходит в бесконечность и получается, что оно равно 0. Следовательно, f (n) ≠ Θ (1).

Надеюсь, это поможет!

Смежные вопросы