0

I'm trying to figure out the regression equation for the 0-1 Knapsack problem recursive algorithm:

// Returns the maximum value that can be put in a knapsack of capacity W
int knapSack(int W, int wt[], int val[], int n)
{
   // Base Case
   if (n == 0 || W == 0)
       return 0;

   // If weight of the nth item is more than Knapsack capacity W, then
   // this item cannot be included in the optimal solution
   if (wt[n-1] > W)
       return knapSack(W, wt, val, n-1);

   // Return the maximum of two cases: 
   // (1) nth item included 
   // (2) not included
   else return max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1),
                    knapSack(W, wt, val, n-1)
                  );
}

What I have is only the answer but I don't really know how to get to it:

T(n) = 2T(n) + O(1) = O(2^n)

Any ideas?

  • You haven't given us enough information to answer the question: we need to know the algorithm you are analyzing, to be able to analyze its running time. Just telling us it's the 0-1 knapsack problem doesn't specify the algorithm; there can be many algorithms for one problem. In any case, we get asked this kind of question a lot, so we've written some reference material on the topic; the answer can likely be derived using the techniques there. If that isn't sufficient, please edit the question to show how far you got & where you got stuck. – D.W. Apr 21 '17 at 15:28
  • @D.W., you're right. I edited the question. I will go over the reference material and hope to get to an answer. – Shlomi Kriheli Apr 21 '17 at 16:20

0 Answers0