# List of knapsack problems

The knapsack problem is one of the most studied problems in combinatorial optimization, with many real-life applications. For this reason, many special cases and generalizations have been examined.

Common to all versions are a set of n items, with each item ${\displaystyle 1\leq j\leq n}$ having an associated profit pj ,weight wj. The binary decision variable xj is used to select the item. The objective is to pick some of the items, with maximal total profit, while obeying that the maximum total weight of the chosen items must not exceed W. Generally, these coefficients are scaled to become integers, and they are almost always assumed to be positive.

The knapsack problem in its most basic form:

 maximize ${\displaystyle \sum _{j=1}^{n}p_{j}x_{j}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{j}\leq W,}$ ${\displaystyle x_{j}\in \{0,1\}}$ ${\displaystyle \forall j\in \{1,\ldots ,n\}}$

## Direct generalizations

One common variant is that each item can be chosen multiple times. The bounded knapsack problem specifies, for each item j, an upper bound uj (which may be a positive integer, or infinity) on the number of times item j can be selected:

 maximize ${\displaystyle \sum _{j=1}^{n}p_{j}x_{j}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{j}\leq W,}$ ${\displaystyle u_{j}\geq x_{j}\geq 0,x_{j}}$ integral for all j

The unbounded knapsack problem (sometimes called the integer knapsack problem) does not put any upper bounds on the number of times an item may be selected:

 maximize ${\displaystyle \sum _{j=1}^{n}p_{j}x_{j}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{j}\leq W,}$ ${\displaystyle x_{j}\geq 0,x_{j}}$ integral for all j

The unbounded variant was shown to be NP-complete in 1975 by Lueker.[1] Both the bounded and unbounded variants admit an FPTAS (essentially the same as the one used in the 0-1 knapsack problem).

If the items are subdivided into k classes denoted ${\displaystyle N_{i}}$ , and exactly one item must be taken from each class, we get the multiple-choice knapsack problem:

 maximize ${\displaystyle \sum _{i=1}^{k}\sum _{j\in N_{i}}p_{ij}x_{ij}}$ subject to ${\displaystyle \sum _{i=1}^{k}\sum _{j\in N_{i}}w_{ij}x_{ij}\leq W,}$ ${\displaystyle \sum _{j\in N_{i}}x_{ij}=1,}$ for all ${\displaystyle 1\leq i\leq k}$ ${\displaystyle x_{ij}\in \{0,1\}}$ for all ${\displaystyle 1\leq i\leq k}$ and all ${\displaystyle j\in N_{i}}$

If for each item the profit and weight are equal, we get the subset sum problem (often the corresponding decision problem is given instead):

 maximize ${\displaystyle \sum _{j=1}^{n}p_{j}x_{j}}$ subject to ${\displaystyle \sum _{j=1}^{n}p_{j}x_{j}\leq W,}$ ${\displaystyle x_{j}\in \{0,1\}}$

If we have n items and m knapsacks with capacities ${\displaystyle W_{i}}$ , we get the multiple knapsack problem:

 maximize ${\displaystyle \sum _{i=1}^{m}\sum _{j=1}^{n}p_{j}x_{ij}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{ij}\leq W_{i},}$ for all ${\displaystyle 1\leq i\leq m}$ ${\displaystyle \sum _{i=1}^{m}x_{ij}\leq 1,}$ for all ${\displaystyle 1\leq j\leq n}$ ${\displaystyle x_{ij}\in \{0,1\}}$ for all ${\displaystyle 1\leq j\leq n}$ and all ${\displaystyle 1\leq i\leq m}$

As a special case of the multiple knapsack problem, when the profits are equal to weights and all bins have the same capacity, we can have multiple subset sum problem.

 maximize ${\displaystyle \sum _{j=1}^{n}p_{j}x_{j}+\sum _{i=1}^{n-1}\sum _{j=i+1}^{n}p_{ij}x_{i}x_{j}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{j}\leq W,}$ ${\displaystyle x_{j}\in \{0,1\}}$ for all ${\displaystyle 1\leq j\leq n}$

Set-Union Knapsack Problem:

SUKP is defined by Kellerer et al[2] (on page 423) as follows:

Given a set of ${\displaystyle n}$ items ${\displaystyle N=\{1,\ldots ,n\}}$ and a set of ${\displaystyle m}$ so-called elements ${\displaystyle P=\{1,\ldots ,m\}}$ , each item ${\displaystyle j}$ corresponds to a subset ${\displaystyle P_{j}}$ of the element set ${\displaystyle P}$ . The items ${\displaystyle j}$ have non-negative profits ${\displaystyle p_{j}}$ , ${\displaystyle j=1,\ldots ,n}$ , and the elements ${\displaystyle i}$ have non-negative weights ${\displaystyle w_{i}}$ , ${\displaystyle i=1,\ldots ,m}$ . The total weight of a set of items is given by the total weight of the elements of the union of the corresponding element sets. The objective is to find a subset of the items with total weight not exceeding the knapsack capacity and maximal profit.

## Multiple constraints

If there is more than one constraint (for example, both a volume limit and a weight limit, where the volume and weight of each item are not related), we get the multiply-constrained knapsack problem, multidimensional knapsack problem, or m-dimensional knapsack problem. (Note, "dimension" here does not refer to the shape of any items.) This has 0-1, bounded, and unbounded variants; the unbounded one is shown below.

 maximize ${\displaystyle \sum _{j=1}^{n}p_{j}x_{j}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{ij}x_{j}\leq W_{i},}$ for all ${\displaystyle 1\leq i\leq m}$ ${\displaystyle x_{j}\geq 0}$ , ${\displaystyle x_{j}}$ integer for all ${\displaystyle 1\leq j\leq n}$

The 0-1 variant (for any fixed ${\displaystyle m\geq 2}$ ) was shown to be NP-complete around 1980 and more strongly, has no FPTAS unless P=NP.[3][4]

The bounded and unbounded variants (for any fixed ${\displaystyle m\geq 2}$ ) also exhibit the same hardness.[5]

For any fixed ${\displaystyle m\geq 2}$ , these problems do admit a pseudo-polynomial time algorithm (similar to the one for basic knapsack) and a PTAS.[2]

## Knapsack-like problems

If all the profits are 1, we will try to maximize the number of items which would not exceed the knapsack capacity:

 maximize ${\displaystyle \sum _{j=1}^{n}x_{j}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{j}\leq W,}$ ${\displaystyle x_{j}\in \{0,1\},}$ ${\displaystyle \forall j\in \{1,\ldots ,n\}}$

If we have a number of containers (of the same size), and we wish to pack all n items in as few containers as possible, we get the bin packing problem, which is modelled by having indicator variables ${\displaystyle y_{i}=1\Leftrightarrow }$ container i is being used:

 minimize ${\displaystyle \sum _{i=1}^{n}y_{i}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{ij}\leq Wy_{i},}$ ${\displaystyle \forall i\in \{1,\ldots ,n\}}$ ${\displaystyle \sum _{i=1}^{n}x_{ij}=1}$ ${\displaystyle \forall j\in \{1,\ldots ,n\}}$ ${\displaystyle y_{i}\in \{0,1\}}$ ${\displaystyle \forall i\in \{1,\ldots ,n\}}$ ${\displaystyle x_{ij}\in \{0,1\}}$ ${\displaystyle \forall i\in \{1,\ldots ,n\}\wedge \forall j\in \{1,\ldots ,n\}}$

The cutting stock problem is identical to the bin packing problem, but since practical instances usually have far fewer types of items, another formulation is often used. Item j is needed Bj times, each "pattern" of items which fit into a single knapsack have a variable, xi (there are m patterns), and pattern i uses item j bij times:

 minimize ${\displaystyle \sum _{i=1}^{m}x_{i}}$ subject to ${\displaystyle \sum _{i=1}^{m}b_{ij}x_{i}\leq B_{j},}$ for all ${\displaystyle 1\leq j\leq n}$ ${\displaystyle x_{i}\in \{0,1,\ldots ,n\}}$ for all ${\displaystyle 1\leq i\leq m}$

If, to the multiple choice knapsack problem, we add the constraint that each subset is of size n and remove the restriction on total weight, we get the assignment problem, which is also the problem of finding a maximal bipartite matching:

 maximize ${\displaystyle \sum _{i=1}^{k}\sum _{j=1}^{n}p_{ij}x_{ij}}$ subject to ${\displaystyle \sum _{i=1}^{n}x_{ij}=1,}$ for all ${\displaystyle 1\leq j\leq n}$ ${\displaystyle \sum _{j=1}^{n}x_{ij}=1,}$ for all ${\displaystyle 1\leq i\leq n}$ ${\displaystyle x_{ij}\in \{0,1\}}$ for all ${\displaystyle 1\leq i\leq k}$ and all ${\displaystyle j\in N_{i}}$

In the Maximum Density Knapsack variant there is an initial weight ${\displaystyle w_{0}}$ , and we maximize the density of selected of items which do not violate the capacity constraint: [6]

 maximize ${\displaystyle {\frac {\sum _{j=1}^{n}x_{j}p_{j}}{w_{0}+\sum _{j=1}^{n}x_{j}w_{j}}}}$ subject to ${\displaystyle \sum _{j=1}^{n}w_{j}x_{j}\leq W,}$ ${\displaystyle x_{j}\in \{0,1\},}$ ${\displaystyle \forall j\in \{1,\ldots ,n\}}$

Although less common than those above, several other knapsack-like problems exist, including:

• Nested knapsack problem
• Collapsing knapsack problem
• Nonlinear knapsack problem
• Inverse-parametric knapsack problem

The last three of these are discussed in Kellerer et al's reference work, Knapsack Problems.[2]

## References

1. Lueker, G.S. (1975). "Two NP-complete problems in nonnegative integer programming". Report No. 178, Computer Science Laboratory, Princeton. Cite journal requires |journal= (help)
2. Kellerer, Hans and Pferschy, Ulrich and Pisinger, David (2004). Knapsack Problems. Springer Verlag. ISBN 978-3-540-40286-2.CS1 maint: multiple names: authors list (link)
3. Gens, G. V. and Levner, E. V. (1979). "Complexity and Approximation Algorithms for Combinatorial Problems: A Survey". Central Economic and Mathematical Institute, Academy of Sciences of the USSR, Moscow.CS1 maint: uses authors parameter (link)
4. "On the Existence of Fast Approximation Schemes". Nonlinear Programming. 4: 415–437. 1980.
5. Magazine, M. J.; Chern, M.-S. (1984). "A Note on Approximation Schemes for Multidimensional Knapsack Problems". Mathematics of Operations Research. 9 (2): 244–247. doi:10.1287/moor.9.2.244.
6. Cohen, Reuven; Katzir, Liran (2008). "The Generalized Maximum Coverage Problem". Information Processing Letters. 108: 15–22. CiteSeerX 10.1.1.156.2073. doi:10.1016/j.ipl.2008.03.017.