Поскольку O(f(n)) ~ k * f(n)
(почти по определению), вы хотите посмотреть, что произойдет, если вы введете 2n
для n
.В каждом случае:
N1 ≈ k*log 2n = k*(log 2 + log n) = k*log n + k*log 2 ≈ N0 + c where c = k*log 2
N1 ≈ k*(2n) = 2*k*n ≈ 2N0
N1 ≈ k*(2n)^2 = 4*k*n^2 ≈ 4N0
N1 ≈ k*2^(2n) = k*(2^n)^2 ≈ N0*2^n ≈ N0^2/k
Итак, последнийвсе равно не совсем верно.Имейте в виду, что эти отношения истинны только асимптотически, поэтому аппроксимации будут более точными по мере увеличения n
.Кроме того, f(n) = O(g(n))
означает только, что g(n)
является верхней границей для f(n)
для достаточно большого n
.Так что f(n) = O(g(n))
не обязательно означает f(n) ~ k*g(n)
.В идеале, вы хотите, чтобы это было правдой, поскольку в этом случае ваша граница big-O
будет жесткой.