O(n!)
не эквивалентно O(n^n)
. Это асимптотически меньше O(n^n)
.
O(log(n!))
равно O(n log(n))
. Вот один из способов доказать это:
Обратите внимание, что с помощью правила ведения журнала log(mn) = log(m) + log(n)
мы можем видеть, что:
log(n!) = log(n*(n-1)*...2*1) = log(n) + log(n-1) + ... log(2) + log(1)
Доказательство того, что O(log(n!)) ⊆ O(n log(n))
:
log(n!) = log(n) + log(n-1) + ... log(2) + log(1)
Что меньше чем:
log(n) + log(n) + log(n) + log(n) + ... + log(n) = n*log(n)
Итак, O(log(n!))
является подмножеством O(n log(n))
Доказательство этого O(n log(n)) ⊆ O(log(n!))
:
log(n!) = log(n) + log(n-1) + ... log(2) + log(1)
Что больше чем (левая половина этого выражения со всеми (n-x)
, замененными на n/2
:
log(n/2) + log(n/2) + ... + log(n/2) = floor(n/2)*log(floor(n/2)) ∈ O(n log(n))
Итак, O(n log(n))
является подмножеством O(log(n!))
.
Начиная с O(n log(n)) ⊆ O(log(n!)) ⊆ O(n log(n))
, они являются эквивалентными классами большого класса.