Проблема ранец является NP-complete , когда числа приведены в качестве двоичных чисел. В этом случае динамическое программирование будет завершаться экспоненциально за много шагов (по размеру входа, то есть по количеству битов на входе) до завершения † .
С другой стороны, если числа на входе даны в унарном порядке, динамическое программирование будет работать за полиномиальное время (по размеру входа).
Такого рода проблемы, называется слабо NP-complete .
†2n−−√nnnlgnO(n−−√)=O(2lgn/2)
Этот вид алгоритма, то есть полином по наибольшему числу, являющемуся частью входных данных, но экспоненциальный по длине входных данных, называется псевдополиномиальным .