**2.1 Inverting the problem**

The most remarkable characteristic of a NP-complete problem is the lack known algorithms to find its solution. In a P-Problem, any given candidate to solution can be verified quickly for its accuracy or validity. On the other hand, the time required to solve a NP-problem using any currently known search algorithm increases exponentially with the size of the problem grows. As a consequence, one of the principal unsolved problems in computer science today is determining whether or not it is possible to solve these problems quickly, called the P versus NP problem.

Then, suppose one has a problem *M* to be solved and asks if a GA based program could solve it. The steps to be followed are:


If the *g*(*M*) function can be translated to a writable algorithm, and this algorithm is computable in a finite time, then the *g*(*M*) is a P-problem. If the *f*(*S*) function cannot be translated to a writable algorithm, or this algorithm is computable only with by verifying all possibilities in the *S* space, then the *f*(*S*) is a NP-problem.

With both answers: the *f*(*S*) function is a NP-problem, and its inverse, *g*(*M*) is a P-problem, then the problem can be solved by a GA.
