У більшості наших проблем ми маємо справу з великими списками чисел, які зручно вписуються в стандартні типи даних int / float. Через те, що більшість процесорів побудовані для обробки 4-8 байтових чисел одночасно без додаткових витрат (відносно чисел, ніж вміщується, скажімо, 1 байт), ми рідко стикаємось із зміною часу роботи від збільшення чисел до в межах діапазонів, з якими ми стикаємось у реальних проблемах - тому домінуючим фактором залишається просто велика кількість точок даних, n або m фактори, до яких ми звикли.
(Ви можете собі уявити, що позначення Big-O приховує постійний коефіцієнт, який розділяє 32 або 64 біти на дату, залишаючи лише кількість точок даних, коли кожне наше число вміщує стільки бітів або менше )
Але спробуйте переробити інші алгоритми, щоб діяти на наборах даних, що включають великі ints - числа, що вимагають більше 8 байт для представлення, - і подивіться, що це впливає на час виконання. Величина залучених чисел завжди має різницю, навіть в інших алгоритмах, таких як двійкове сортування, коли ви розширюєтеся за межі буфера безпеки, звичайні процесори дають нам "безкоштовно", обробляючи партії 4-8 байт.
Фокус з алгоритмом Knapsack, який ми обговорювали, полягає в тому, що він надзвичайно чутливий (щодо інших алгоритмів) до величини певного параметра W. Додайте один біт до W, і ви подвоюєте час роботи алгоритму. Ми не бачили такої різкої реакції на зміну вартості в інших алгоритмах до цього, ось чому може здатися, що ми поводимось із Knapsack по-іншому - але це справжній аналіз того, як він реагує неполіноміальним способом до змін у розмірі вводу.