El tiempo de ejecución del algoritmo de la mochila está limitado no solo al tamaño de la entrada (n - el número de artículos) sino también a la magnitud de la entrada (W - la capacidad de la mochila) O (nW) que es exponencial en su forma representado en computadora en binario (2 ^ n). La complejidad computacional (es decir, cómo se realiza el procesamiento dentro de una computadora a través de bits) solo se refiere al tamaño de las entradas, no a sus magnitudes / valores .
Ignore la lista de valor / peso por un momento. Digamos que tenemos una instancia con capacidad de mochila 2. W tomaría dos bits en los datos de entrada. Ahora aumentaremos la capacidad de la mochila a 4, manteniendo el resto de la entrada. Nuestra entrada solo ha crecido un poco, pero la complejidad computacional se ha duplicado. Si aumentamos la capacidad a 1024, tendríamos solo 10 bits de la entrada para W en lugar de 2, pero la complejidad se ha incrementado en un factor de 512. La complejidad del tiempo crece exponencialmente en el tamaño de W en representación binaria (o decimal) .
Otro ejemplo simple que me ayudó a comprender el concepto de pseudopolinomio es el algoritmo de prueba de primalidad ingenuo. Para un número dado n, estamos verificando si está dividido uniformemente por cada número entero en el rango 2..√n, por lo que el algoritmo toma √ (n − 1) pasos. Pero aquí, n es la magnitud de la entrada, no su tamaño.
Now The regular O(n) case
Por el contrario, la búsqueda de una matriz para un elemento dado se ejecuta en tiempo polinómico: O (n). Toma como máximo n pasos y aquí n es el tamaño de la entrada (la longitud de la matriz).
[ mira aquí ]
Calcular los bits necesarios para almacenar el número decimal