Can not understand knapsack solutions

后端 未结 2 1462
Happy的楠姐
Happy的楠姐 2021-01-23 07:25

In wikipedia the algorithm for Knapsack is as follows:

for i from 1 to n do  
  for j from 0 to W do  
    if j >= w[i] then  
      T[i, j] := max(T[i-1, j         


        
2条回答
  •  清酒与你
    2021-01-23 08:08

    As I see, you have misunderstood the concept of knapsack. which I will describe here in details till we reach the code part.

    First, there are two versions of the problem:

    1. 0-1 knapsack problem: here, the Items are indivisible, you either take an item or not. and can be solved with dynamic programming. //and this one is the one yo are facing problems with
    2. Fractional knapsack problem: don't care about this one now.

    For the first problem you can understand it as the following:

    Given a knapsack with maximum capacity W, and a set S consisting of n items Each item i has some weight wi and benefit value bi (all wi and W are integer values).

    SO, How to pack the knapsack to achieve maximum total value of packed items?

    and in mathematical mouth:

    enter image description here

    and to solve this problem using Dynamic Programming We set up a table V[0..k, 0..W] with one row for each available item, and one column for each weight from 0 to W. We need to carefully identify the sub-problems,

    The sub-problem then will be to compute V[k,w], i.e., to find an optimal solution for Sk= {items labeled 1, 2, .. k} in a knapsack of size w (maximum value achievable given capacity w and items 1,…, k)

    So, we found this formula to solve our problem: enter image description here

    This algorithm only finds the max possible value that can be carried in the knapsack i.e., the value in V[n,W] To know the items that make this maximum value, this will be another topic.

    I really hope that this answer will help you. I have an pp presentation that walks with you to fill the table and to show you the algorithm step by step. But I don't know how can I upload it to stackoverflow. let me know if any help needed.

提交回复
热议问题