Я не уверен, где вы нашли эти определения, но я бы посчитал их неправильными.
В лучшем, среднем и худшем случаях все функции, как правило, превышают размер ввода.
Big-O, Theta и Omega указывают, соответственно, верхнюю, жесткую и нижнюю границы любой заданной функции.
То есть в лучшем случае имеет предел big-O, Theta и Omega.То же самое касается среднего и наихудшего случая.
См. Также: Как соотносятся O и Ω с наихудшим и лучшим случаем?
Примечание: обычно используется big-O(возможно, неправильно) используется для обозначения жесткой границы (вместо тета).
Давайте рассмотрим пример сортировки вставкой.
Наилучший случай - это когда сортировка уже выполнена, в которойЕсли это займет линейное время, то есть f(n) = k<sub>1</sub>n
время для некоторой постоянной k<sub>1</sub>
.
k<sub>1</sub>n
- это O (n),, (n), Ω (n).Согласно определениям, мы также можем сказать, что это O (n 2 ), O (n 3 ), ... или Ω (1), Ω (log n), Ω(log log n), ..., но обычно ожидается, что он представит самую жесткую границу.
Наихудшим и средним значениями являются g(n) = k<sub>2</sub>n<sup>2</sup>
и h(n) = k<sub>3</sub>n<sup>2</sup>
, которые оба равны O (n 2), Θ (n 2 ), Ω (n 2 ).
Теперь вы можете сказать: это не очень полезнозачем нам три границы, если они всегда одинаковы?Почему бы нам не использовать тэту везде?
В общем, вы были бы абсолютно правы - алгоритмы часто описываются в терминах только одной из границ (обычно это жесткая граница).
Однако для некоторых алгоритмов сложно точно определить, что такое жесткая граница, в то время как легко получить верхнюю и / или нижнюю границу.Неоптимизированный алгоритм вычисления чисел Фибоначчи является одним из таких примеров - нетрудно найти верхнюю границу O (2 n ) и aнижняя граница Ω (1,5 n ) , но жесткую границу ~ θ (1,6 n ) вычислить гораздо сложнее.