Вообще говоря, используйте определение асимптотической записи, затем предоставьте доказательство того, что f (n) = O (g (n)), где f (n) - ваша функция, а g (n) - граница, которой вы являетесьпытаясь доказать.
Для вашего первого примера:
2n =? O(3n)
f(n) = 2n, g(n) = 3n
need c such that for n > n0, f(n) <= c*g(n); guess c = 1
We have f(n) = 2n <= 3n = c*g(n) for n >= 0, so
2n = f(n) = O(g(n)) = O(3n)
Для вашего второго примера:
2^4 =? O(1)?
f(n) = 2^4, g(n) = 1
need c such that for n > n0, f(n) <= c*g(n); guess c = 2^4 + 1
We have f(n) = 2^4 <= 2^4 + 1 = c*g(n), so
2^4 = f(n) = O(g(n)) = O(1)
Ваш третий пример практически эквивалентен первому.
Ваш четвертый пример неверен;неверно, что
n log^2(n) = O(n log n)
Это правда, что
n log(n^2) = O(n log n)
Но это другое выражение.Чтобы увидеть, что n log ^ 2 (n) не является O (n log n), мы можем поспорить так: пусть c - произвольная фиксированная постоянная.Мы можем найти такое n, что c * n * log (n)
c*n*log(n) < n*log^2(n)
c < log(n)
Так что выберите n = 2 ^ (c + 1).Следовательно, не существует такого n0, чтобы при n> n0 f (n) <= c * g (n). </p>
РЕДАКТИРОВАТЬ: в четвертом примере, если вы имеете в виду «log2 (n)»log-base-two из n, тогда да, nlog2 (n) = O (nlogn).Обычно при выполнении алгоритмических сложностей логарифм понимается как основание два, если не указано иное.Извините за путаницу.