Understanding the Knapsack Problem