Это явление называется псевдополиномиальность : сложность, которая кажется полиномиальной, но на самом деле это не так.Если вы спросите, является ли определенная сложность (здесь n ) полиномиальной или нет, вы должны посмотреть, как сложность соотносится с размером ввода .В большинстве случаев, таких как сортировка (которая, например, сортировка слиянием может решить в O (n lg n) ), n описывает размер ввода (количество элементов).В этом случае, однако, n не описывает размер ввода;это является входным значением.Каков же размер n ?Естественным выбором будет число бит в n , которое приблизительно равно lg n .Итак, пусть w = lg n будет размером n .Теперь мы видим, что O (n) = O (2 ^ (lg n)) = O (2 ^ w) - другими словами, экспоненциальный размер ввода w .
(Обратите внимание, что O (n) = O (2 ^ (lg n)) = O (2 ^ w) всегда верно; вопрос заключается в том, является ли размер ввода размером описывается как n или w = lg n . Также, если n описывает количество элементов в списке, следует строго говоря подсчитатьбиты каждого элемента в списке, чтобы получить общий размер ввода, однако обычно предполагается, что в списках все числа ограничены по размеру (например, до 32 бит)).