A minimum spanning tree of a weighted planar graph. Finding a minimum spanning tree is a common problem involving combinatorial optimization.

Combinatorial optimization is a subfield of mathematical optimization that consists of finding an optimal object from a finite set of objects,[1] where the set of feasible solutions is discrete or can be reduced to a discrete set. Typical combinatorial optimization problems are the travelling salesman problem ("TSP"), the minimum spanning tree problem ("MST"), and the knapsack problem. In many such problems, such as the ones previously mentioned, exhaustive search is not tractable, and so specialized algorithms that quickly rule out large parts of the search space or approximation algorithms must be resorted to instead.

Combinatorial optimization is related to operations research, algorithm theory, and computational complexity theory. It has important applications in several fields, including artificial intelligence, machine learning, auction theory, software engineering, VLSI, applied mathematics and theoretical computer science.

Some research literature[2] considers discrete optimization to consist of integer programming together with combinatorial optimization (which in a turn is composed of optimization problems dealing with graph structures), although all of these topics have closely intertwined research literature.[clarification needed]


Applications of combinatorial optimization include, but are not limited to:


There is a large amount of literature on polynomial-time algorithms for certain special classes of discrete optimization. A considerable amount of it is unified by the theory of linear programming. Some examples of combinatorial optimization problems that are covered by this framework are shortest paths and shortest-path trees, flows and circulations, spanning trees, matching, and matroid problems.

For NP-complete discrete optimization problems, current research literature includes the following topics:

Combinatorial optimization problems can be viewed as searching for the best element of some set of discrete items; therefore, in principle, any sort of search algorithm or metaheuristic can be used to solve them. Perhaps the most universally applicable[weasel words] approaches are branch-and-bound (an exact algorithm which can be stopped at any point in time to serve as heuristic), branch-and-cut (uses linear optimisation to generate bounds), dynamic programming (a recursive solution construction with limited search window) and tabu search (a greedy-type swapping algorithm). However, generic search algorithms are not guaranteed to find an optimal solution first, nor are they guaranteed to run quickly (in polynomial time). Since some discrete optimization problems are NP-complete, such as the traveling salesman (decision) problem,[7] this is expected unless P=NP.

For each combinatorial optimization problem, there is a corresponding decision problem that asks whether there is a feasible solution for some particular measure . For example, if there is a graph which contains vertices and , an optimization problem might be "find a path from to that uses the fewest edges". This problem might have an answer of, say, 4. A corresponding decision problem would be "is there a path from to that uses 10 or fewer edges?" This problem can be answered with a simple 'yes' or 'no'.

The field of approximation algorithms deals with algorithms to find near-optimal solutions to hard problems. The usual decision version is then an inadequate definition of the problem since it only specifies acceptable solutions. Even though we could introduce suitable decision problems, the problem is then more naturally characterized as an optimization problem.[8]

NP optimization problem

This section may be confusing or unclear to readers. In particular, the notation introduced in this section is not explained well and may not be standard. Please help clarify the section. There might be a discussion about this on the talk page. (December 2021) (Learn how and when to remove this template message)

An NP-optimization problem (NPO) is a combinatorial optimization problem with the following additional conditions.[9] Note that the below referred polynomials are functions of the size of the respective functions' inputs, not the size of some implicit set of input instances.

This implies that the corresponding decision problem is in NP. In computer science, interesting optimization problems usually have the above properties and are therefore NPO problems. A problem is additionally called a P-optimization (PO) problem, if there exists an algorithm which finds optimal solutions in polynomial time. Often, when dealing with the class NPO, one is interested in optimization problems for which the decision versions are NP-complete. Note that hardness relations are always with respect to some reduction. Due to the connection between approximation algorithms and computational optimization problems, reductions which preserve approximation in some respect are for this subject preferred than the usual Turing and Karp reductions. An example of such a reduction would be L-reduction. For this reason, optimization problems with NP-complete decision versions are not necessarily called NPO-complete.[10]

NPO is divided into the following subclasses according to their approximability:[9]

An NPO problem is called polynomially bounded (PB) if, for every instance and for every solution , the measure is bounded by a polynomial function of the size of . The class NPOPB is the class of NPO problems that are polynomially-bounded.

Specific problems

Further information: Category:Combinatorial optimization

This is a dynamic list and may never be able to satisfy particular standards for completeness. You can help by adding missing items with reliable sources.

An optimal traveling salesperson tour through Germany’s 15 largest cities. It is the shortest among the 43,589,145,600[11] possible tours that visit each city exactly once.

See also


  1. ^ Schrijver 2003, p. 1.
  2. ^ Discrete Optimization. Elsevier. Archived from the original on 2013-07-05. Retrieved 2009-06-08.
  3. ^ Sbihi, Abdelkader; Eglese, Richard W. (2007). "Combinatorial optimization and Green Logistics" (PDF). 4OR. 5 (2): 99–116. doi:10.1007/s10288-007-0047-3. S2CID 207070217. Archived (PDF) from the original on 2019-12-26. Retrieved 2019-12-26.
  4. ^ Eskandarpour, Majid; Dejax, Pierre; Miemczyk, Joe; Péton, Olivier (2015). "Sustainable supply chain network design: An optimization-oriented review" (PDF). Omega. 54: 11–32. doi:10.1016/j.omega.2015.01.006. Archived (PDF) from the original on 2019-12-26. Retrieved 2019-12-26.
  5. ^ Hobé, Alex; Vogler, Daniel; Seybold, Martin P.; Ebigbo, Anozie; Settgast, Randolph R.; Saar, Martin O. (2018). "Estimating fluid flow rates through fracture networks using combinatorial optimization". Advances in Water Resources. 122: 85–97. arXiv:1801.08321. Bibcode:2018AdWR..122...85H. doi:10.1016/j.advwatres.2018.10.002. S2CID 119476042. Archived from the original on 2020-08-21. Retrieved 2020-09-16.
  6. ^ Cook 2016.
  7. ^ "Approximation-TSP" (PDF). Archived (PDF) from the original on 2022-03-01. Retrieved 2022-02-17.
  8. ^ Ausiello, Giorgio; et al. (2003), Complexity and Approximation (Corrected ed.), Springer, ISBN 978-3-540-65431-5
  9. ^ a b Hromkovic, Juraj (2002), Algorithmics for Hard Problems, Texts in Theoretical Computer Science (2nd ed.), Springer, ISBN 978-3-540-44134-2
  10. ^ Kann, Viggo (1992), On the Approximability of NP-complete Optimization Problems, Royal Institute of Technology, Sweden, ISBN 91-7170-082-X
  11. ^ Take one city, and take all possible orders of the other 14 cities. Then divide by two because it does not matter in which direction in time they come after each other: 14!/2 = 43,589,145,600.