Data Structure Multiple Choice Questions on “0/1 Knapsack Problem”.
1. The Knapsack problem is an example of ____________
a) Greedy algorithm
b) 2D dynamic programming
c) 1D dynamic programming
d) Divide and conquer
Answer: b
Clarification: Knapsack problem is an example of 2D dynamic programming.
2. Which of the following methods can be used to solve the Knapsack problem?
a) Brute force algorithm
b) Recursion
c) Dynamic programming
d) Brute force, Recursion and Dynamic Programming
Answer: d
Clarification: Brute force, Recursion and Dynamic Programming can be used to solve the knapsack problem.
3. You are given a knapsack that can carry a maximum weight of 60. There are 4 items with weights {20, 30, 40, 70} and values {70, 80, 90, 200}. What is the maximum value of the items you can carry using the knapsack? Answer: a 4. Which of the following problems is equivalent to the 0-1 Knapsack problem? Answer: b 5. What is the time complexity of the brute force algorithm used to solve the Knapsack problem? Answer: c 6. The 0-1 Knapsack problem can be solved using Greedy algorithm. Answer: b 7. Consider the following dynamic programming implementation of the Knapsack problem: Which of the following lines completes the above code? Answer: a 8. What is the time complexity of the following dynamic programming implementation of the Knapsack problem with n items and a maximum weight of W? a) O(n) Answer: c 9. What is the space complexity of the following dynamic programming implementation of the Knapsack problem? a) O(n) Answer: c 10. What is the output of the following code? a) 120 Answer: d
a) 160
b) 200
c) 170
d) 90
Clarification: The maximum value you can get is 160. This can be achieved by choosing the items 1 and 3 that have a total weight of 60.
a) You are given a bag that can carry a maximum weight of W. You are given N items which have a weight of {w1, w2, w3,…., wn} and a value of {v1, v2, v3,…., vn}. You can break the items into smaller pieces. Choose the items in such a way that you get the maximum value
b) You are studying for an exam and you have to study N questions. The questions take {t1, t2, t3,…., tn} time(in hours) and carry {m1, m2, m3,…., mn} marks. You can study for a maximum of T hours. You can either study a question or leave it. Choose the questions in such a way that your score is maximized
c) You are given infinite coins of denominations {v1, v2, v3,….., vn} and a sum S. You have to find the minimum number of coins required to get the sum S
d) You are given a suitcase that can carry a maximum weight of 15kg. You are given 4 items which have a weight of {10, 20, 15,40} and a value of {1, 2, 3,4}. You can break the items into smaller pieces. Choose the items in such a way that you get the maximum value
Clarification: In this case, questions are used instead of items. Each question has a score which is same as each item having a value. Also, each question takes a time t which is same as each item having a weight w. You have to maximize the score in time T which is same as maximizing the value using a bag of weight W.
a) O(n)
b) O(n!)
c) O(2n)
d) O(n3)
View Answer
Clarification: In the brute force algorithm all the subsets of the items are found and the value of each subset is calculated. The subset of items with the maximum value and a weight less than equal to the maximum allowed weight gives the answer. The time taken to calculate all the subsets is O(2n).
a) True
b) False
Clarification: The Knapsack problem cannot be solved using the greedy algorithm.#include
a) find_max(ans[itm – 1][w – wt[itm – 1]] + val[itm – 1], ans[itm – 1][w])
b) find_max(ans[itm – 1][w – wt[itm – 1]], ans[itm – 1][w])
c) ans[itm][w] = ans[itm – 1][w];
d) ans[itm+1][w] = ans[itm – 1][w];
Clarification: find_max(ans[itm – 1][w – wt[itm – 1]] + val[itm – 1], ans[itm – 1][w]) completes the above code.#include
b) O(n + w)
c) O(nW)
d) O(n2)
Clarification: The time complexity of the above dynamic programming implementation of the Knapsack problem is O(nW).#include
b) O(n + w)
c) O(nW)
d) O(n2)
Clarification: The space complexity of the above dynamic programming implementation of the Knapsack problem is O(nW).#include
b) 100
c) 180
d) 220
Clarification: The output of the above code is 220.