several ways to solve np-complete problems

At present, all known algorithms for NP-complete problems require time that is superpolynomial in the input size, and it is unknown whether there are any faster algorithms.

The following techniques can be applied to solve computational problems in general, and they often give rise to substantially faster algorithms:

    1 Approximation: Instead of searching for an optimal solution, search for an "almost" optimal one.
    2 Randomization: Use randomness to get a faster average running time, and allow the algorithm to fail with some small probability. See Monte Carlo method.
    3 Restriction: By restricting the structure of the input (e.g., to planar graphs), faster algorithms are usually possible.
    4 Parameterization: Often there are fast algorithms if certain parameters of the input are fixed.
    5 Heuristic: An algorithm that works "reasonably well" in many cases, but for which there is no proof that it is both always fast and always produces a good result. Metaheuristic approaches are often used.

 

 

http://en.wikipedia.org/wiki/NP-complete

你可能感兴趣的:(Algorithm,search,input,Parameters,structure)