Introduction to Knapsack Problem, its Types and How to solve them
Last Updated :
23 Jul, 2025
The Knapsack problem is an example of the combinational optimization problem. This problem is also commonly known as the "Rucksack Problem". The name of the problem is defined from the maximization problem as mentioned below:
Given a bag with maximum weight capacity of W and a set of items, each having a weight and a value associated with it. Decide the number of each item to take in a collection such that the total weight is less than the capacity and the total value is maximized.
Types of Knapsack Problem:
The knapsack problem can be classified into the following types:
- Fractional Knapsack Problem
- 0/1 Knapsack Problem
- Bounded Knapsack Problem
- Unbounded Knapsack Problem
The Fractional Knapsack problem can be defined as follows:
Given the weights and values of N items, put these items in a knapsack of capacity W to get the maximum total value in the knapsack. In Fractional Knapsack, we can break items for maximizing the total value of the knapsack.
Some practice problems on Fractional Knapsack:
The 0/1 Knapsack problem can be defined as follows:
We are given N items where each item has some weight (wi) and value (vi) associated with it. We are also given a bag with capacity W. The target is to put the items into the bag such that the sum of values associated with them is the maximum possible.
Note that here we can either put an item completely into the bag or cannot put it at all.
Mathematically the problem can be expressed as:
Maximize \sum_{i = 1}^{N}v_{i}x_{i} subject to \sum_{i = 1}^{N}w_{i}x_{i} \leq W and xi ∈ {0, 1}
Some practice problems on 0/1 Knapsack:
Sr. No | 0/1 knapsack problem | Fractional knapsack problem |
---|
1. | The 0/1 knapsack problem is solved using dynamic programming approach. | Fractional knapsack problem is solved using a greedy approach. |
---|
2. | In the 0/1 knapsack problem, we are not allowed to break items. | Fractional knapsack problem, we can break items for maximizing the total value of the knapsack. |
---|
3. | 0/1 knapsack problem, finds a most valuable subset item with a total value less than equal to weight. | In the fractional knapsack problem, finds a most valuable subset item with a total value equal to the weight if the total weight of items is more than or equal to the knapsack capacity. |
---|
4. | In the 0/1 knapsack problem we can take objects in an integer value. | In the fractional knapsack problem, we can take objects in fractions in floating points. |
---|
The Bounded Knapsack problem can be defined as follows:
Given N items, each item having a given weight wi and a value vi, the task is to maximize the value by selecting a maximum of K items adding up to a maximum weight W.
Mathematically the problem can be expressed as:
Maximize \sum_{i = 1}^{N}v_{i}x_{i} subject to \sum_{i = 1}^{N}w_{i}x_{i} \leq W and xi ∈ {0, 1, . . . , K}
Some practice problems on Bounded Knapsack:
4. Unbounded Knapsack Problem
The Unbounded Knapsack problem can be defined as follows:
Given a knapsack weight W and a set of N items with certain value vi and weight wi, we need to calculate the maximum amount that could make up this quantity exactly. This is different from 0/1 Knapsack problem, here we are allowed to use an unlimited number of instances of an item.
Mathematically the problem can be expressed as:
Maximize \sum_{i = 1}^{N}v_{i}x_{i} subject to \sum_{i = 1}^{N}w_{i}x_{i} \leq W and x_{i} \epsilon \mathbb{Z} and xi ≥ 0.
Some practice problems on Unbounded Knapsack:
Variations of Knapsack Problem:
There are several variations possible for the Knapsack Problem. Some of the well-known variations are provided below:
1. Multi-objective Knapsack problem:
In this variation, the goal of filling the knapsack changes. Instead of maximizing only the value, there can be several other objectives.
For example: Consider you are organizing a music show in a hall that has a capacity of 10,000. You are organizing a show and the size of the audience depends on the popularity of the singers. Also, the more popular the singer is, the more the fee. You want to maximize the profit and minimize the amount spend on the singer simultaneously and also want to bring as many singers as possible.
2. Multi-dimensional Knapsack problem:
In this variation of the problem, the weight of any item i is given by an M dimensional vector {wi1, wi2, . . . wiM} and similarly, the capacity of the knapsack is also an M dimensional vector {W1, W2, . . . , WM}.
3. Multiple Knapsack problem:
This variation of the knapsack problem is similar to the Bin Packing algorithm. The difference in both the problem is here we can pick a subset of the items whereas, in the Bin Packing problem, we have to pack all the items in any of the bins. The idea is that there are multiple knapsacks which may seem like adding capacity to the initial knapsack, but it is not similar to that at all.
4. Quadratic Knapsack problem:
This variation has the goal of achieving the maximum value of a quadratic objective function that is subjected to binary and linear capacity constraints.
5. Geometric Knapsack problem:
In this variation, there is a set of rectangles with different values and a rectangular knapsack. The goal is to pack the largest possible value into the knapsack.
Applications of the Knapsack Problem:
The Knapsack problem has several real-life applications. Some of them are mentioned here:
- One of the early applications of the Knapsack problem was in construction and scoring of exams in which the test takers have a choice as to which questions they answer.
- The subset sum problem is solved using the concept of the Knapsack problem.
- The multiple objective variations of the Knapsack problem is frequently used for transportation logistics optimization problems.
- The multiple knapsack problem is often used in many loading and scheduling algorithms in Operational Research.
Similar Reads
Basics & Prerequisites
Data Structures
Array Data StructureIn this article, we introduce array, implementation in different popular languages, its basic operations and commonly seen problems / interview questions. An array stores items (in case of C/C++ and Java Primitive Arrays) or their references (in case of Python, JS, Java Non-Primitive) at contiguous
3 min read
String in Data StructureA string is a sequence of characters. The following facts make string an interesting data structure.Small set of elements. Unlike normal array, strings typically have smaller set of items. For example, lowercase English alphabet has only 26 characters. ASCII has only 256 characters.Strings are immut
2 min read
Hashing in Data StructureHashing is a technique used in data structures that efficiently stores and retrieves data in a way that allows for quick access. Hashing involves mapping data to a specific index in a hash table (an array of items) using a hash function. It enables fast retrieval of information based on its key. The
2 min read
Linked List Data StructureA linked list is a fundamental data structure in computer science. It mainly allows efficient insertion and deletion operations compared to arrays. Like arrays, it is also used to implement other data structures like stack, queue and deque. Hereâs the comparison of Linked List vs Arrays Linked List:
2 min read
Stack Data StructureA Stack is a linear data structure that follows a particular order in which the operations are performed. The order may be LIFO(Last In First Out) or FILO(First In Last Out). LIFO implies that the element that is inserted last, comes out first and FILO implies that the element that is inserted first
2 min read
Queue Data StructureA Queue Data Structure is a fundamental concept in computer science used for storing and managing data in a specific order. It follows the principle of "First in, First out" (FIFO), where the first element added to the queue is the first one to be removed. It is used as a buffer in computer systems
2 min read
Tree Data StructureTree Data Structure is a non-linear data structure in which a collection of elements known as nodes are connected to each other via edges such that there exists exactly one path between any two nodes. Types of TreeBinary Tree : Every node has at most two childrenTernary Tree : Every node has at most
4 min read
Graph Data StructureGraph Data Structure is a collection of nodes connected by edges. It's used to represent relationships between different entities. If you are looking for topic-wise list of problems on different topics like DFS, BFS, Topological Sort, Shortest Path, etc., please refer to Graph Algorithms. Basics of
3 min read
Trie Data StructureThe Trie data structure is a tree-like structure used for storing a dynamic set of strings. It allows for efficient retrieval and storage of keys, making it highly effective in handling large datasets. Trie supports operations such as insertion, search, deletion of keys, and prefix searches. In this
15+ min read
Algorithms
Searching AlgorithmsSearching algorithms are essential tools in computer science used to locate specific items within a collection of data. In this tutorial, we are mainly going to focus upon searching in an array. When we search an item in an array, there are two most common algorithms used based on the type of input
2 min read
Sorting AlgorithmsA Sorting Algorithm is used to rearrange a given array or list of elements in an order. For example, a given array [10, 20, 5, 2] becomes [2, 5, 10, 20] after sorting in increasing order and becomes [20, 10, 5, 2] after sorting in decreasing order. There exist different sorting algorithms for differ
3 min read
Introduction to RecursionThe process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called a recursive function. A recursive algorithm takes one step toward solution and then recursively call itself to further move. The algorithm stops once we reach the solution
14 min read
Greedy AlgorithmsGreedy algorithms are a class of algorithms that make locally optimal choices at each step with the hope of finding a global optimum solution. At every step of the algorithm, we make a choice that looks the best at the moment. To make the choice, we sometimes sort the array so that we can always get
3 min read
Graph AlgorithmsGraph is a non-linear data structure like tree data structure. The limitation of tree is, it can only represent hierarchical data. For situations where nodes or vertices are randomly connected with each other other, we use Graph. Example situations where we use graph data structure are, a social net
3 min read
Dynamic Programming or DPDynamic Programming is an algorithmic technique with the following properties.It is mainly an optimization over plain recursion. Wherever we see a recursive solution that has repeated calls for the same inputs, we can optimize it using Dynamic Programming. The idea is to simply store the results of
3 min read
Bitwise AlgorithmsBitwise algorithms in Data Structures and Algorithms (DSA) involve manipulating individual bits of binary representations of numbers to perform operations efficiently. These algorithms utilize bitwise operators like AND, OR, XOR, NOT, Left Shift, and Right Shift.BasicsIntroduction to Bitwise Algorit
4 min read
Advanced
Segment TreeSegment Tree is a data structure that allows efficient querying and updating of intervals or segments of an array. It is particularly useful for problems involving range queries, such as finding the sum, minimum, maximum, or any other operation over a specific range of elements in an array. The tree
3 min read
Pattern SearchingPattern searching algorithms are essential tools in computer science and data processing. These algorithms are designed to efficiently find a particular pattern within a larger set of data. Patten SearchingImportant Pattern Searching Algorithms:Naive String Matching : A Simple Algorithm that works i
2 min read
GeometryGeometry is a branch of mathematics that studies the properties, measurements, and relationships of points, lines, angles, surfaces, and solids. From basic lines and angles to complex structures, it helps us understand the world around us.Geometry for Students and BeginnersThis section covers key br
2 min read
Interview Preparation
Practice Problem