Combinatorial optimization: Knapsack problem