MCS 312: NP Completeness and Approximation algorithms Instructor Neelima Gupta ngupta@cs.du.ac.in Table of Contents • Generalizations of Subset Sum • 0-1 Knapsack • Bin Packing The Knapsack Problem The classic Knapsack problem is: A thief breaks into a store and wants to fill his knapsack of capacity K with goods of as much value as possible. Decision version: Does there exist a collection of items that fits into his knapsack and whose total value is >= W? The Knapsack Problem • Input – Capacity K – n items with weights wi and values vi • Output: a set of items S such that • the sum of weights of items in S is at most K • and the sum of values of items in S is maximized Some Simplest Versions… Fractional Knapsack Problem: Can items be picked up partially? The thief’s knapsack can hold 100 gms and has to choose from: 30 gms of gold dust at Rs 1000 /gm 60 gms of silver dust at Rs 500/gm 30 gms of platinum dust at Rs 1500/gm Note: Optimal fills the Knapsack upto full capacity. Proof: Else the remaining capacity can be filled with some item, picking it partially if the need be. Greedy Algorithm for fractional Knapsack 1. Sort the items in the increasing order of value/weight ratio (cost effectiveness). 2. If the next item cannot fit into the knapsack, break it and pick it partially just to fill the knapsack. Fractional Knapsack has greedy choice property That is, if v1/w1 is maximum, then there exists an optimal solution that contains item x1 upto the extent of min{w1, W}. Proof: Suppose not. Let O be an optimal solution that does not contain x1. Let xt be the item with maximum weight wt in O. If wt > w1, replacing w1 amount of xt by w1 amount of x1, value of the solution will improve (since v1/w1 > vt/wt). Let S’ be a subset of items in O whose is > w1. Replacing w1 of this total weight by w1 of x1 will improve the value of the solution. If no such set S’ exists then (sum of all the sets in O =) W < = w1. Replace all the sets in O by W amount of x1 and the value of the solution will improve. Other Simple versions Are all of the weights or total values identical? The thief breaks into a ring shop where all of the rings weight 10 gms. He can hold 25 gms; which should he take? 0-1 Knapsack An item can either be picked or left. It cannot be picked partially. For example gold coins, diamond rings, TV etc. Greedy doesn’t work for 0-1 Knapsack Capacity 200 Items : X1 : v1/w1 = 12, weight : 50 X2 : v2/w2 = 10, weight : 55 X3 : v3/w3 = 8, weight : 10 X4 : v4/w4 = 6, weight : 100 Value of Greedy : 50 * 12 + 55 *10 + 8* 10= 1230 Optimal : 8 * 100 + 55*10 + 8*10= 1430 Dynamic Programming Solution • Let V(i,w) is the value of the set of items from the first i items that maximizes the value subject to the constraint that the sum of the values of the items in the set is <= w • Value of the original problem corresponds to V(n, K) Recurrence Relation • V(i,w) = max (V(i-1,w-wi) + vi, V(i-1, w)) – Fisrt term corresponds to the case when xi is included in the solution and – The second term corresponds to the case when xi is not included • V(0,w) = 0 (no items to choose from) • V(i,0) = 0 (no weight allowed) Time Analysis • O(nK) It is exponential in the input size. Generalizations of Subset Sum • The Subset Sum problem we have studied and shown that it is NPC is the following: Given a finite set S of natural numbers and a target t є N, does there exist a subset S’ of S whose elements sum up to t. • Its generalization is: Gen1_SS: Given a finite set S ={x1 … xn} of n numbers, does there exist a subset S’ of S that whose sum is = K • By Generalization it is NPC Further generalization of Subset Sum • Gen1_SS: Given a finite set S ={x1 … xn} of n numbers, does there exist a subset S’ of S that whose sum is = K. • Gen2_SS: Given a finite set S ={x1 … xn} of n numbers, find a subset S’ of S that maximizes the sum with the constraint that the sum is <= K. • Its decision version is: Given a finite set S ={x1 … xn} of n numbers, does there exist a subset S’ of S whose sum >= W with the constraint that the sum is <= K. 0-1 Knapsack is NP-Complete • Gen2_SS: Given a finite set S ={x1 … xn} of n numbers, find a subset S’ of S that maximizes the sum with the constraint that the sum is <= K. • The above subset sum problem is a particular case of 0-1 Knapsack by putting wi = vi = xi. i.e. 0-1 Knapsack is a generalization of the above subset sum problem. Bin Packing Problem • Given a set of items S = {x1…xn} each with some weight wi, pack maximum number of items into a collection of finite number of bins each with some capacity Bi using minimum number of bins. • Knapsack problem is a particular case of Bin-packing when the number of bins is 1 and its capacity is K Bin Packing is NPC • By Generalization of Knapsack.