Обратитесь к определению big-O.
Проще говоря [*], давайте определим, что функция g есть O (f), если существуют такие константы C и M, что для n> M 0 <= g (n) <Cf (n). </p>
Наличие положительного постоянного множителя в f не влияет на это, просто выберите C соответственно. Ваш пример T - это O (n ^ 2), выбрав значение C больше 5, а значение M достаточно большое, чтобы значение +2n
не имело значения. Например, для n> 2 это факт, что 5n ^ 2 + 2n <6n ^ 2 (потому что n ^ 2> 2n), поэтому при C = 6 и M = 2 мы видим, что T (n) есть O (n ^ 2).
Так что верно, что T (n) - это O (n ^ 2), а также верно, что это O (5n ^ 2) и O (5n ^ 2 + 2n). Наиболее интересным из этих фактов является то, что это O (n ^ 2), поскольку это простейшее выражение, а два других логически эквивалентны. Если мы хотим сравнить сложности различных функций, то мы хотим использовать простые выражения.
Для большой тэты просто обратите внимание, что мы можем сыграть ту же самую хитрость, когда f и g - наоборот. Отношение "g is Theta (f)" является отношением эквивалентности, так что мы будем выбирать в качестве репрезентативного члена класса эквивалентности T? Самый простой.
[*] Чтобы сделать вещи менее простыми, мы справляемся с отрицательными числами, используя limsup, а не простой предел. Мое определение выше на самом деле достаточно, но не обязательно.