Если 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. Но,... почему? Почему эти два размера разные? Петли выглядят одинаково.

Благодарю.

0 ответов

Другие вопросы по тегам