Какова сложность C ++ bitset конструктора, который конвертирует из long? - PullRequest
0 голосов
/ 27 августа 2018

Я думаю, что O (n), где n - это нет. бит. Или это константа w.r.t. п? Я имею в виду, что он не должен просто копировать биты из памяти?

1 Ответ

0 голосов
/ 27 августа 2018

Говоря математически, long имеет фиксированную длину, поэтому копирование его содержимого выполняется в режиме постоянного времени. С другой стороны, вам нужно обнулить остальные биты в наборе битов, и это вы не сможете сделать за время, меньшее линейного, относительно длины набора битов. Итак, теоретически вы не можете сделать лучше, чем O (n), где n - длина набора битов.

Я предполагаю, что с точки зрения асимптотической сложности вы можете смело предположить, что сложность конструктора такая же, как обнуление выделенной памяти.

Этот анализ, однако, имеет некоторое значение только для огромных значений n, и для меня не имеет большого смысла использовать длинный конструктор для инициализации набора битов в миллион битов. Таким образом, если размер набора битов находится в том же масштабе, что и размер long, это практически постоянное время.

...