Как правило, вы не можете вычислить числовой коэффициент масштабирования только из сложности Big O, поскольку сложность Big O не включает коэффициенты и константы, которые имеют решающее значение для вычисления коэффициента масштабирования.
Если алгоритм A имеет фактическую сложность (1/1000) * n + 100
, а алгоритм B имеет фактическую сложность 100*log(n) + 1
, алгоритм A равен O (n), а алгоритм B - O (log (n)). Однако, когда вы переходите от n от 100 к n от 1000, A переходит от стоимости от 100,1 до 101, а B - от 201 до 301. Фактическое время работы алгоритма A увеличивается только на 1%, в то время как фактическое время работы алгоритма B увеличился на 50%.
Система обозначений Big O предназначена для того, чтобы рассказать вам, как что-то масштабируется, когда n стремится к бесконечности. Когда вы смотрите на фактический бесконечный диапазон, вполне возможно, что алгоритм с лучшей нотацией Big O медленнее и масштабируется менее эффективно, чем алгоритм с худшей нотацией Big O. При достаточно большом n алгоритм с лучшим обозначением Big O в конечном итоге победит. Но нет никакой гарантии, что точка пересечения действительно находится в пределах того, что ожидается для любой данной цели.