You are given a knapsack (a kind of shoulder bag) with a limited weight capacity and few items each having some weight and value.
The problem states-
“Which items should be placed in the knapsack so that the value or profit that is obtained by putting the items in the knapsack is maximum and the weight limit of the knapsack also does not exceed?”
Knapsack Problem Variants-
Knapsack problem has the following two variants-
- Fractional Knapsack Problem
- 0/1 Knapsack Problem
In this article, we will discuss about Fractional Knapsack Problem.
Also read- 0/1 Knapsack Problem
Fractional Knapsack Problem-
In Fractional Knapsack Problem,
- As the name suggests, items are divisible here.
- We can even put the fraction of any item in the knapsack if taking the complete item is not possible.
- It is solved using Greedy Approach.
Steps for solving Fractional Knapsack Problem using Greedy Approach-
For each item, compute its value / weight ratio.
Arrange all the items in the decreasing order of their value / weight ratios.
Start putting the items in the Knapsack beginning from the item with the highest ratio. Put as many items as you can in the Knapsack.
While solving the problem,
- The main time taking step is the sorting of all items in the decreasing order of their value / weight ratios.
- If the items are already arranged in the required order, the while loop takes O(n) time.
- Quick sort’s average time complexity is O(nlogn), therefore total time taken including the sort is O(nlogn).
PRACTICE PROBLEM BASED ON FRACTIONAL KNAPSACK PROBLEM USING GREEDY APPROACH-
For the given set of items and knapsack capacity = 60 kg, find the optimal solution for the fractional knapsack problem making use of greedy approach.
Find the optimal solution for the fractional knapsack problem making use of greedy approach. Consider-
n = 5
w = 60 kg
(w1, w2, w3, w4, w5) = (5, 10, 15, 22, 25)
(b1, b2, b3, b4, b5) = (30, 40, 45, 77, 90)
A thief enters a house for robbing it. He can carry a maximal weight of 60 kg into his bag. There are 5 items in the house with the following weights and values. What items should thief take if he can even take the fraction of any item with him?
Compute the value / weight ratio for each item-
Sort all the items in the decreasing order of their value / weight ratios-
I1 I2 I5 I4 I3
(6) (4) (3.6) (3.5) (3)
Start filling the knapsack by putting the items in it one by one.
|Knapsack Weight||Items in the Knapsack||Cost|
|20||I1, I2, I5||160|
- Knapsack weight left to be filled is 20 kg but item-4 has a weight of 22 kg.
- Had the problem been a 0/1 knapsack problem, we would have stopped and reported that the knapsack has items < I1 , I2 , I5 > and the knapsack’s total cost is 160.
- But because in fractional knapsack problem we can even take the fraction of any item.
- So, our knapsack will contain the items-
< I1 , I2 , I5 , (20/22) I4 >
Total cost of the knapsack
= 160 + (20/27) x 77
= 160 + 70
= 230 units
To gain better understanding about Fractional Knapsack Problem,
Download the handwritten notes of “Fractional Knapsack Problem Using Greedy Approach” here-
Get more notes and other study material of Design and Analysis of Algorithms (DAA).
Watch video lectures by visiting our YouTube channel LearnVidFun.