La clase APX (del inglés "approximable") en la teoría de la complejidad computacional es una clase de problemas NP-difíciles para los cuales existen algoritmos de aproximación de complejidad polinomial con un coeficiente de aproximación constante. En términos más simples, los problemas de esta clase tienen algoritmos eficientes que encuentran soluciones que son peores que las óptimas por no más de un porcentaje fijo. Por ejemplo, existe un algoritmo de complejidad polinomial para resolver el problema de empaquetamiento de contenedores que utiliza no más del 5 % más de contenedores que la cantidad mínima de contenedores necesaria.
Un algoritmo de aproximación se denomina algoritmo de aproximación c con alguna constante c si se puede demostrar que la solución obtenida usando este algoritmo no es más de c veces peor que la solución óptima [1] .
La constante c se llama factor de aproximación . Dependiendo de si el problema es de maximización o de minimización, la solución puede ser c veces mayor o c veces menor que la óptima.
Por ejemplo, tanto el problema de la cobertura de vértices como el problema del vendedor ambulante con la desigualdad del triángulo tienen algoritmos simples para los cuales c = 2 [2] . Por otro lado, se ha demostrado que el problema del viajante de comercio con longitudes de aristas arbitrarias (que no necesariamente satisfacen la desigualdad del triángulo) no se puede aproximar con un coeficiente constante, ya que el problema de encontrar un camino hamiltoniano no se puede resolver en tiempo polinomial (en caso P ≠ NP ) [3] .
Si existe un algoritmo para resolver un problema en tiempo polinomial para cualquier coeficiente fijo mayor que uno (un algoritmo para cualquier coeficiente), se dice que el problema tiene un esquema de aproximación en tiempo polinomial ( PTAS ) . Si P ≠ NP, se puede demostrar que hay problemas que están en la clase APX pero no en PTAS , es decir, problemas que se pueden aproximar por algún factor, pero no por cualquier factor.
Un problema se llama APX -difícil si cualquier problema de la clase APX puede reducirse a este problema, y APX -completo si el problema es APX -difícil y pertenece a la clase APX [1] . La desigualdad P ≠ NP implica que PTAS ≠ APX , P ≠ NP y, por lo tanto, ningún problema difícil de APX pertenece a PTAS .
Si el problema es APX -hard, esto suele ser malo, ya que para P ≠ NP significa que no hay PTAS -algoritmo, que es el tipo de algoritmo de aproximación más útil. Uno de los problemas completos APX más simples es el problema de satisfacibilidad máxima para fórmulas booleanas , una variante del problema de satisfacibilidad de fórmula booleana . En este problema, tenemos una fórmula booleana en forma normal conjuntiva , y queremos obtener el máximo número de subexpresiones que se ejecutarán con una sola sustitución de valores verdadero/falso en las variables. A pesar de que lo más probable es que el problema no pertenezca a PTAS , el valor correcto se puede obtener con una precisión del 30%, y algunas versiones simplificadas del problema tienen PTAS [4] [5] [6] .
Clases de complejidad de algoritmos | |
---|---|
Considerado ligero |
|
Se supone que es difícil | |
Considerado difícil |
|