Вы не определяете асимптотический рост, наблюдая за ним. Для каждого типа асимптотического отношения роста существуют формальные определения, которые точно и точно объясняют, что они означают. Вы определяете, соответствуют ли две функции заданному отношению, математически определяя, удовлетворяют ли они формальному определению отношения.
Например, одно из нескольких эквивалентных формальных определений для Big-O выглядит следующим образом:
f = O (g) тогда и только тогда, когда lim [n -> inf] (f (n) / g (n))
Так, например, если f (n) = n и g (n) = n ^ 2, вы можете заметить, что предел как n -> бесконечность n / n ^ 2 = 0, и поэтому f = О (г).
Или, если f (n) = n и g (n) = 2n, вы можете наблюдать это как n-> inf, n / 2n -> 1/2
Однако, если f (n) = n и g (n) = sqrt (n), вы можете заметить, что предел при n -> бесконечность n / sqrt (n) = бесконечность, поэтому f! = O ( г).
Ваш пример f и g сложен, потому что синус колеблется между -1 и 1 при увеличении n. Но Wolfram Alpha говорит мне, что рассматриваемый предел равен бесконечности, поэтому sqrt (n)! = O (n ^ (sin (n)).
У каждого другого асимптотического отношения роста есть похожее формальное определение, которое вы можете проверить, чтобы убедиться, что две функции удовлетворяют его друг другу.
Edit:
Кажется, вы ищете эмпирические правила. Вот быстрый и простой способ определить асимптотический порядок для относительно простых функций f и g. Рассмотрим наибольшую степень n в каждой функции:
- Если наивысшая мощность одинакова, то f = O (g), g = O (f), f = Омега (g), g = Омега (f), f = Тета (g), g = Тета (е)
- Если самая высокая мощность в f меньше, чем самая высокая мощность в g, то f = O (g), f = o (g), g = Омега (f), g = Омега (f)
- Если самая высокая мощность в f больше, чем самая высокая мощность в g, то f = Омега (g), f = Омега (g), g = O (f), g = o (f)
Конечно, если функции не являются многочленами от n или более сложны, и определить, каковы максимальные степени (например, ваш пример с использованием синуса), непросто, вам все равно придется вернуться к формальному определению.
Некоторые вещи, которые всегда верны:
- Тета по определению является соединением О и Омеги. f = O (g) ^ f = Омега (g) <=> f = Theta (g) [где ^ представляет логические "и"]
- "Маленькие" отношения на 1040 * сильнее , чем "большие" отношения. Это означает, что f = o (g) => f = O (g) и f = omega (g) => f = Omega (g), но обратные направления неверны.