Если 01Knapsack является экспоненциальным, почему цикл от 1 до n линейный?
Я прочитал много вопросов здесь на Stackru об этом, и все они делают хорошую мысль: сложность подхода DP к проблеме ранца состоит в O(nW), который экспоненциально по количеству бит в W., если я добавлю еще один бит в W, мне нужно в два раза больше циклов.
Алгоритм в значительной степени:
For i = 0 to n
For w = 0 to W
//Stuff
Но если я посмотрю на алгоритм типа суммирования от 1 до n (= n(n+1)/2), у меня будет только цикл for. И если я увеличу количество бит, необходимое для представления n на 1, мне нужно сделать в два раза больше циклов. Так это же экспоненциально?
Мое единственное возможное понимание состоит в том, что в этом случае размер ввода равен "n", тогда как в рюкзаке размер ввода равен числу битов, необходимых для представления W. Но,... почему? Почему эти два размера разные? Петли выглядят одинаково.
Благодарю.