Sure!
The image you provided represents a 0/1 Knapsack problem using a recursion tree,
which is a top-down approach with recursion + memoization. Let's represent both Top-Down
(Memoization) and Bottom-Up (Tabulation) approaches in table format, step by step.
🧠 Problem Summary
Items: A, B, C
Values: A=1, B=7, C=11
Weights: A=1, B=2, C=3
Capacity: 5
🔼 Top-Down Approach (Memoization)
We define a recursive function:
knapsack(i, remaining_capacity) where i is the item index and remaining_capacity is
the current weight left.
Remaining Total Total
Step Item iIndex Decision Items Chosen
Capacity Value Weight
1 0 5 Try A (include) A 1 1
2 1 4 Try B (include) A, B 8 3
Try C (include) A, B, C
3 2 2 19 6 (exceeds)
❌ (invalid)
4 2 2 Skip C A, B 8 3
5 1 4 Skip B A 1 1
6 2 4 Try C (include) A, C 12 4
7 2 4 Skip C A 1 1
8 0 5 Skip A 0 0
9 1 5 Try B (include) B 7 2
Try C (include)
10 2 3 B, C 18 ✅ 5✅
✅
11 2 3 Skip C B 7 2
12 1 5 Skip B 0 0
13 2 5 Try C (include) C 11 3
14 2 5 Skip C 0 0
✅ Best: B and C with Value 18, Weight 5
🔽 Bottom-Up Approach (Tabulation)
Create a DP table dp[i][w] where i is the item index and w is the capacity from 0 to 5.
Step-by-step Table Build
Item Weight Value
A 1 1
B 2 7
C 3 11
Initialize:
dp[0][w] = 0 for all w (no items, zero value)
Build Table
i (Item Index) Capacity (w) = 0 1 2 3 4 5
0 (no item) 0 000 0 0
1 (A) 0 111 1 1
2 (B) 0 178 8 8
3 (C) 0 1 7 11 12 18 ✅
Explanation
At i=1 (Item A), you can only put it in if w >= 1
At i=2 (Item B), you can combine it with A or just take B if it has more value
At i=3 (Item C), the max value at capacity 5 is 18, which is from choosing B and C
✅ Best: Value 18 at dp[3][5] — Items B and C
✅ Final Answer
Optimal Selection: Items B and C
Total Value: 18
Total Weight: 5