In computer science, an optimization problem is the problem of finding the best solution from all feasible solutions. The most frequent example of optimization problems is the one of the NP-complete problems (NP stands for Nondeterministic Polynomial time), namely problems with solutions that can be guessed without following any particular rule and verified in polynomial time.