Die Hauptverwirrung liegt in der Differenz zwischen " Größe " und " Wert ".
" Polynomial Time " impliziert ein Polynom bezüglich der Größe der Eingabe.
" Pseudopolynomial Time " impliziert ein Polynom bezogen auf den Wert der Eingabe. Es kann gezeigt werden (siehe unten), dass dies äquivalent zu einer Exponentialfunktion für die Größe der Eingabe ist.
Mit anderen Worten: Es sei die Größe der Eingabe und Wert der Wert der Eingabe.NsizeNval
Polynomialzeit: fürO(Nxsize)x∈N
Pseudopol. Zeit: fürO(Nxval)x∈N
Das Rucksackproblem hat nun eine pseudopolynomielle und keine polynomielle Lösung, da die dynamische Programmierlösung eine Laufzeit , die von einem Wert abhängt - dh , wobei ein Wert ist, der die maximale Kapazität darstellt.O(nW)W
Jetzt kann ein Wert in eine Größe umgewandelt werden, indem er in der Anzahl der Stellen dargestellt wird, die für die Darstellung erforderlich sind. gibt an, wie viele Stellen erforderlich sind, um mit Basis darzustellen . Dies kann gelöst werden, ergibt:Nsize=Logb(Nval)NvalbNval
Nval=bNsize
Das Einfügen in die pseudopolynomiale Zeitdefinition zeigt, dass es exponentiell in :Nsize
Pseudopol. Zeit: fürb , x ∈ NO(bxNsize)b,x∈N