O tempo de execução do algoritmo da mochila está limitado não apenas ao tamanho da entrada (n - o número de itens), mas também à magnitude da entrada (W - a capacidade da mochila) O (nW) que é exponencial em como é representado em computador em binário (2 ^ n). A complexidade computacional (ou seja, como o processamento é feito dentro de um computador por meio de bits) está preocupada apenas com o tamanho das entradas, não com suas magnitudes / valores .
Desconsidere a lista de valor / peso por um momento. Digamos que temos uma instância com capacidade de mochila 2. W levaria dois bits nos dados de entrada. Agora vamos aumentar a capacidade da mochila para 4, mantendo o resto da entrada. Nossa entrada cresceu apenas um bit, mas a complexidade computacional dobrou. Se aumentarmos a capacidade para 1024, teríamos apenas 10 bits de entrada para W em vez de 2, mas a complexidade aumentou por um fator de 512. A complexidade do tempo cresce exponencialmente no tamanho de W na representação binária (ou decimal) .
Outro exemplo simples que me ajudou a entender o conceito de pseudo-polinômio é o algoritmo de teste de primalidade ingênuo. Para um determinado número n, estamos verificando se ele é dividido igualmente por cada número inteiro no intervalo 2..√n, então o algoritmo executa √ (n − 1) etapas. Mas aqui, n é a magnitude da entrada, não seu tamanho.
Now The regular O(n) case
Por outro lado, a pesquisa de um determinado elemento em uma matriz é executada em tempo polinomial: O (n). Leva no máximo n passos e aqui n é o tamanho da entrada (o comprimento da matriz).
[ Veja aqui ]
Calculando os bits necessários para armazenar o número decimal