Дайте оценку big-O на количество бит, необходимое для представления числа N - PullRequest
0 голосов
/ 17 декабря 2018

N - это случайное число,

Я запутался с границей.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 17 декабря 2018

Ну, для случайного числа n существует a, b такой, что 2^a <= n <= 2^b или просто k такой, что 2^(k-1) <= n <= 2^k - 1 (1).Мы знаем, что для любого числа, меньшего 2^n, нам нужно log(2^n) = n * log(2) = n бит для его представления (2).Например:

  • 5: 4 <5 <8;нам нужно 3 бита для 4, 5 битов для 8 => нам нужно 4 бита для 5
  • 23: 16 = 2 ^ 4 <23 <32 = 2 ^ 5;поэтому нам нужно 5 бит для представления 23 </li>

В заключение, для точного числа бит b для случайного числа n, мы можем использовать формулу:

b = floor(log(n)) + 1

Итак, обозначение big-O, которое мы будем использовать: O(floor(log(n)) + 1) = O(logn).


Дополнительная информация:


1) Я предположил, что это случайное, целое, положительное число(хотя это также легко обобщить для отрицательных чисел), что, я полагаю, является вашей проблемной ситуацией;для дробных чисел немного сложнее обобщить эту формулу

2) Запись логарифма относится к логарифму в базе 2

...