Description
In this project, you will implement a branch and bound solution to the knapsack problem.
1. Implement the function knapsack::bound that returns an upper bound on the value of objects
in an optimal subset. Your bound should be based on the solution to the fractional knapsack
problem.
2. Implement a the branch and bound solver branchAndBound. Your solution should maintain
a list, possibly implemented as a deque, of partial solutions to a knapsack instance. Each
partial solution should be stored as a separate knapsack object. The solver should run for
up to 10 minutes per instance.
Turn in your source and output files, and an analysis of your algorithm’s performance.