La principal confusión radica en la diferencia entre " tamaño " y " valor ".
" Tiempo polinomial " implica polinomio wrt el tamaño de la entrada.
" Tiempo pseudopolinomial " implica polinomio wrt el valor de la entrada. Se puede mostrar (a continuación) que esto es equivalente a ser exponencial wrt el tamaño de la entrada.
En otras palabras: deje que represente el tamaño de la entrada y represente el valor de la entrada. N v a lNsizeNval
Tiempo polinómico: parax ∈ NO(Nxsize)x∈N
Pseudopolía. Tiempo: parax ∈ NO(Nxval)x∈N
Ahora, el problema de la mochila tiene una solución pseudopolinómica, no polinómica , porque la solución de programación dinámica proporciona un tiempo de ejecución dependiente de un valor , es decir, , donde es un valor que representa la capacidad máxima.WO(nW)W
Ahora, un valor se puede convertir a un tamaño representándolo en términos de # de dígitos que se necesitan para representarlo. te dice cuántos dígitos son necesarios para representar usando la base . Esto se puede resolver para para dar:N v a l b N v a lNsize=Logb(Nval)NvalbNval
Nval=bNsize
Conectar esto a la definición de tiempo pseudopolinomial muestra que es exponencial wrt :Nsize
O(bxNsize)b,x∈N