Run-time algoritma Knapsack tidak hanya terikat pada ukuran input (n - jumlah item) tetapi juga pada besarnya input (W - kapasitas knapsack) O (nW) yang eksponensial dalam bagaimana itu direpresentasikan dalam komputer dalam biner (2 ^ n). Kompleksitas komputasi (yaitu bagaimana pemrosesan dilakukan di dalam komputer melalui bit) hanya berkaitan dengan ukuran input, bukan besaran / nilainya .
Abaikan sejenak daftar nilai / bobot. Misalkan kita memiliki sebuah instance dengan kapasitas knapsack 2. W akan mengambil dua bit sebagai input data. Sekarang kita akan meningkatkan kapasitas knapsack menjadi 4, dengan mempertahankan sisa input. Masukan kami hanya bertambah satu bit, tetapi kompleksitas komputasi telah meningkat dua kali lipat. Jika kita meningkatkan kapasitas menjadi 1024, kita hanya akan memiliki 10 bit input untuk W, bukan 2, tetapi kompleksitas telah meningkat dengan faktor 512. Kompleksitas waktu tumbuh secara eksponensial dalam ukuran W dalam representasi biner (atau desimal) .
Contoh sederhana lainnya yang membantu saya memahami konsep pseudo-polinomial adalah algoritme pengujian primality naif. Untuk bilangan tertentu n kita memeriksa apakah itu dibagi rata dengan setiap bilangan bulat dalam rentang 2..√n, sehingga algoritma mengambil langkah √ (n − 1). Tapi di sini, n adalah besarnya input, bukan ukurannya.
Now The regular O(n) case
Sebaliknya, mencari larik untuk elemen tertentu berjalan dalam waktu polinomial: O (n). Diperlukan paling banyak n langkah dan di sini n adalah ukuran input (panjang array).
[ Lihat disini ]
Menghitung bit yang diperlukan untuk menyimpan bilangan desimal