# "NP-complete" optimization problems

I am slightly confused by some terminology I have encountered regarding the complexity of optimization problems. In an algorithms class, I had the large parsimony problem described as NP-complete. However, I am not exactly sure what the term NP-complete means in the context of an optimization problem. Does this just mean that the corresponding decision problem is NP-complete? And does that mean that the optimization problem may in fact be harder (perhaps outside of NP)?

In particular, I am concerned about the fact that while an NP-complete decision problem is polynomial time verifiable, a solution to a corresponding optimization problem does not appear to be polynomial time verifiable. Does that mean that the problem is not really in NP, or is polynomial time verifiability only a characteristic of NP decision problems?

• check this question Apr 2 '12 at 4:47
• Also this question: Optimization version of decision problems. Apr 2 '12 at 5:10
• @RanG., I am not sure if this is an exact duplicate. Apr 2 '12 at 5:11
• @Kaveh you're right, but the great answer of uli fully answers this question. Apr 2 '12 at 5:16
• @RanG., there can be more than one great answers. :) Apr 2 '12 at 5:17

An attempt on a partial answer:

Decision problems were already investigated for some time before optimization problems came into view, in the sense as they are treated from the approximation algorithms perspective.

You have to be careful when carrying over the concepts from decision problems. It can be done and a precise notion of NP-completeness for optimization problems can be given. Look at this answer. It is of course different from the NP-completeness for decision problems, but it is based on the sames ideas (reductions).

If you are faced with an optimization problem that doesn’t allow a verification with a feasible solution, then there is not much you can do. That is why one usually assumes that:

• We can verify efficiently if the input is actually a valid instance of our optimization problem.
• The size of the feasible solutions is bounded polynomially by the size of the inputs.
• We can verify efficiently if a solution is a feasible solution of the input.
• The value of a solution can be determined efficiently.

Otherwise, there is not much we can hope to achieve.

The complexity class $$\mathrm{NP}$$ only contains decisions problems per definition. So there aren’t any optimizations problems in it. And the Verifier-based definition of $$\mathrm{NP}$$ you mention is specific to $$\mathrm{NP}$$. I haven’t encountered it with optimization problems.

If you want to verify that a solution is not just feasible, but also optimal, I would say that this is as hard as solving the original optimization problem because, in order to refute a given feasible and possibly optimal solution as non-optimal, you have to give a better solution, which might require you to find the true optimal solution.

But that doesn’t mean that the optimization problem is harder. See this answer, which depends of course on the precise definitions.

• Can you please give an article or a book reference, where I can find more information about a precise definition, reduction, etc, for NP hardness for optimization problems ? So far, I could not figure out one. That would be very interesting to me. Thank you. Jul 31 '12 at 0:30
• – uli
Aug 3 '12 at 10:11

For the relation between decision and optimization (search) problems, take a peek at Bellare and Goldwasser's The Complexity of Decision versus Search, SIAM Journal of Computing 23(1), feb 1994. In a nutshell: If the decision problem is NP-complete, the search problem is hard too, and can be solved calling the decision problem's solver a polynomial number of times.

You need to look at every individual optimisation problem. Typically you want a “solution” which maximises the value v, while a decision problem would be “is there a solution with a value >= k”

The question is: if you can solve the decision problem, repeatedly, does that allow you to solve the optimisation problem? Usually it lets you solve “what is the maximum value of any solution” using binary search. The difficult part is finding a solution when all you know is that there is a solution.

You can easily define NP-hard optimisation problems: We call a decision problem D NP-hard if any decision problem in NP can be reduced to D in polynomial time. And we can use the same definition for any problem P: P is NP-hard if any decision problem in NP can be reduced to P in polynomial time.

The problem is defining something analogous to NP. If we have a problem “What is the smallest possible value of v”. This is equivalent to asking “is there a solution with a value v” and “is there no solution with a value v-1”. So we can see many optimisation problems as a combination of a problem in NP, and a problem in co-NP.

The reason most optimization problems can be classed as P, NP, NP-complete, etc., is the Kuhn-Tucker conditions. I'll talk in terms of linear-programming problems, but the KTC apply in many other optimization problems. For each optimization problem there is a dual. If the goal in the original problem is to maximize some function, then the dual (usually) has a function to be minimized.* Feasible, but non-optimal solutions to the original problem will be infeasible/invalid for the dual problem, and vice-versa. If, and only if, a solution is feasible for the primary and dual, it is an optimal solution for both. (Technically, may be one of a large number of optimal solutions which give the same result.)

So finding an optimal solution of an optimization problem is equivalent to finding a valid solution for the primary and dual. You may use optimization algorithms to find that solution, but the overall process is an existence proof.

• If you want to flip from minimization to maximization, multiply the objective function by -1.
• I don't see how the KKT conditions relate to NP-hardness, could you elaborate on that? May 3 '18 at 21:41
• I don't really see how this answers the question. P, NP, etc., are classes of decision problems. Optimization problems aren't decision problems, so they're not in any of those classes by definition. May 4 '18 at 16:10
• I don't see how this answers the question, either -- this is an interesting comment, but it seems to answer a different question than the one that was asked. The question asks what it means to say that an optimization problem is NP-complete and whether optimization problems can be said to be in NP, given that they aren't a decision problem. This describes how, given an optimization problem (where solutions aren't verifiable), we can often construct a corresponding problem where solutions can be verified. Very interesting stuff, but I'm not sure it answers the question that was asked.
– D.W.
May 4 '18 at 17:03
• @D.W. The main reason why I think this isn't really answering the question is that, in addition from what was already mentioned, KKT limits the setting to mathematical optimisation of 'regular' (e.g. continuous, differentiable, convex) functions. This setting is inapplicable to most NP-hard problems. May 5 '18 at 10:17