In: Advanced Math
2. Suppose you have a collection of n items i1, i2, ..., in with weights w1, w2, ..., wn and a bag with capacity W
(a) Describe a simple, efficient algorithm to select as many items as possible to fit inside the bag e.g. the maximum cardinality set of items that have weights that sum to at most W.
(b) Prove your answer.
a) Algorithm:
i) sort 
 in increasing order: 
;
ii) set 
;
while 
 and 
,
if 
 then 
 and 
iii) return 
.
Analsysis: Step i) requires (via Quicksort) 
 steps, and step ii) requires 
 steps. Thus, the time complexity of our algorithm is 
 which shows it is effective (polynomial time).
Note: The design of the algorithm mandates that
b) We need to prove that if 
 is any algorithm and 
 returns 
, then 
.
Proof: Suppose, if possible, that 
. Because of step i), we have

Thus, we have

which is a contradiction. Thus, 
, completing the proof.