Some research literature[2] considers discrete optimization to consist of integer programming together with combinatorial optimization (which in turn is composed of optimization problems dealing with graph structures) although all of these topics have closely intertwined research literature. It often involves determining the way to efficiently allocate resources used to find solutions to mathematical problems.

Applications

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

Developing the best airline network of spokes and destinations

Deciding which taxis in a fleet to route to pick up fares

Determining the optimal way to deliver packages

Working out the best allocation of jobs to people

Determining the right attributes of concept elements prior to concept testing

solving real-world instances that arise in practice and do not necessarily exhibit the worst-case behavior inherent in NP-complete problems (e.g. TSP instances with tens of thousands of nodes[3]).

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. However, generic search algorithms are not guaranteed to find an optimal solution, nor are they guaranteed to run quickly (in polynomial time). Since some discrete optimization problems are NP-complete, such as the traveling salesman problem, this is expected unless P=NP.

Specific problems

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