En informática , la complejidad parametrizada es una rama de la teoría de la complejidad computacional que se centra en la clasificación de los problemas computacionales según su dificultad inherente con respecto a múltiples parámetros de la entrada o la salida. La complejidad de un problema se mide entonces como una función de esos parámetros. Esto permite la clasificación de problemas NP-hard en una escala más fina que en el entorno clásico, donde la complejidad de un problema solo se mide como una función del número de bits en la entrada. Esto parece haber sido demostrado por primera vez en Gurevich, Stockmeyer y Vishkin (1984). El primer trabajo sistemático sobre la complejidad parametrizada fue realizado por Downey y Fellows (1999).
Suponiendo que P ≠ NP , existen muchos problemas naturales que requieren un tiempo de ejecución superpolinomial cuando la complejidad se mide solo en términos del tamaño de entrada, pero que son computables en un tiempo que es polinomial en el tamaño de entrada y exponencial o peor en un parámetro k . Por lo tanto, si k se fija en un valor pequeño y el crecimiento de la función sobre k es relativamente pequeño, entonces tales problemas aún pueden considerarse "tratables" a pesar de su clasificación tradicional como "intratables".
La existencia de algoritmos de resolución eficientes, exactos y deterministas para problemas NP-completos o NP-duros se considera improbable si los parámetros de entrada no son fijos; todos los algoritmos de resolución conocidos para estos problemas requieren un tiempo exponencial ( en particular, superpolinomial) en el tamaño total de la entrada. Sin embargo, algunos problemas se pueden resolver mediante algoritmos que son exponenciales solo en el tamaño de un parámetro fijo, mientras que son polinomiales en el tamaño de la entrada. Un algoritmo de este tipo se denomina algoritmo manejable con parámetros fijos (FPT), porque el problema se puede resolver de manera eficiente (es decir, en tiempo polinomial) para valores constantes del parámetro fijo.
Los problemas en los que algún parámetro k es fijo se denominan problemas parametrizados. Un problema parametrizado que permite un algoritmo FPT de este tipo se denomina problema manejable con parámetros fijos y pertenece a la clase FPT , y el nombre inicial de la teoría de la complejidad parametrizada fue manejabilidad con parámetros fijos .
Muchos problemas tienen la siguiente forma: dado un objeto x y un entero no negativo k , ¿ x tiene alguna propiedad que dependa de k ? Por ejemplo, para el problema de cobertura de vértices , el parámetro puede ser el número de vértices en la cobertura. En muchas aplicaciones, por ejemplo, al modelar la corrección de errores, se puede suponer que el parámetro es "pequeño" en comparación con el tamaño total de entrada. Entonces es un desafío encontrar un algoritmo que sea exponencial solo en k , y no en el tamaño de entrada.
De esta manera, la complejidad parametrizada puede ser vista como una teoría de la complejidad bidimensional . Este concepto se formaliza de la siguiente manera:
Por ejemplo, existe un algoritmo que resuelve el problema de cobertura de vértices en el tiempo, [1] donde n es el número de vértices y k es el tamaño de la cobertura de vértices. Esto significa que la cobertura de vértices es manejable con parámetros fijos, siendo el tamaño de la solución el parámetro.
La FPT contiene los problemas manejables con parámetros fijos , que son aquellos que se pueden resolver a tiempo para alguna función computable f . Normalmente, se piensa que esta función es exponencial simple, como , pero la definición admite funciones que crecen incluso más rápido. Esto es esencial para gran parte de la historia temprana de esta clase. La parte crucial de la definición es excluir funciones de la forma , como .
La clase FPL (linear de parámetros fijos) es la clase de problemas resolubles en el tiempo para alguna función computable f . [2] FPL es, por tanto, una subclase de FPT. Un ejemplo es el problema de satisfacibilidad booleano , parametrizado por el número de variables. Una fórmula dada de tamaño m con k variables se puede comprobar por fuerza bruta en el tiempo . Una cobertura de vértices de tamaño k en un grafo de orden n se puede encontrar en el tiempo , por lo que el problema de cobertura de vértices también está en FPL.
Un ejemplo de un problema que se cree que no está en FPT es la coloración de gráficos parametrizada por la cantidad de colores. Se sabe que la coloración 3 es NP-hard y un algoritmo para la coloración de gráficos k en el tiempo para se ejecutaría en tiempo polinomial en el tamaño de la entrada. Por lo tanto, si la coloración de gráficos parametrizada por la cantidad de colores estuviera en FPT, entonces P = NP .
Existen varias definiciones alternativas de FPT. Por ejemplo, el requisito de tiempo de ejecución se puede reemplazar por . Además, un problema parametrizado está en FPT si tiene un denominado núcleo. La kernelización es una técnica de preprocesamiento que reduce la instancia original a su "núcleo duro", una instancia posiblemente mucho más pequeña que es equivalente a la instancia original pero tiene un tamaño que está limitado por una función en el parámetro.
La FPT está cerrada bajo una noción parametrizada de reducciones llamadas fpt-reducciones . Dichas reducciones transforman una instancia de algún problema en una instancia equivalente de otro problema (con ) y pueden calcularse en tiempo donde es un polinomio.
Obviamente, FPT contiene todos los problemas computables en tiempo polinomial. Además, contiene todos los problemas de optimización en NP que permiten un esquema de aproximación en tiempo polinomial eficiente (EPTAS) .
La jerarquía W es una colección de clases de complejidad computacional. Un problema parametrizado está en la clase W [ i ], si cada instancia puede transformarse (en tiempo fpt) en un circuito combinatorio que tiene trama como máximo i , de modo que si y solo si hay una asignación satisfactoria a las entradas que asigna 1 a exactamente k entradas. La trama es el mayor número de unidades lógicas con un abanico de entrada mayor que dos en cualquier camino desde una entrada a la salida. El número total de unidades lógicas en los caminos (conocido como profundidad) debe estar limitado por una constante que se cumpla para todas las instancias del problema.
Tenga en cuenta que y para todos . Las clases en la jerarquía W también están cerradas bajo fpt-reduction.
Un problema completo para W [ i ] es la Satisfacción Normalizada Ponderada i : [3] dada una fórmula booleana escrita como un AND de OR de AND de... de variables posiblemente negadas, con capas de AND u OR (y i alternancias entre AND y OR), ¿puede satisfacerse estableciendo exactamente k variables en 1?
Muchos problemas computacionales naturales ocupan los niveles inferiores, W [1] y W [2].
Algunos ejemplos de problemas W [1]-completos incluyen
Algunos ejemplos de problemas W [2]-completos incluyen
se puede definir utilizando la familia de problemas SAT Weighted Weft -t -Depth- d para : es la clase de problemas parametrizados que fpt-reducen a este problema, y .
Aquí, la trama ponderada -t -profundidad- d SAT es el siguiente problema:
Se puede demostrar que para el problema SAT normalizado t ponderado es completo para reducciones fpt inferiores. [4] Aquí, SAT normalizado t ponderado es el siguiente problema:
W [ P ] es la clase de problemas que pueden resolverse mediante una máquina de Turing de tiempo no determinista que, como máximo, realiza elecciones no deterministas en el cálculo (una máquina de Turing con restricciones k ). Flum y Grohe (2006)
Se sabe que FPT está contenido en W[P] y se cree que la inclusión es estricta. Sin embargo, resolver este problema implicaría una solución al problema de P versus NP .
Otras conexiones con la complejidad computacional no parametrizada son que FPT es igual a W [ P ] si y solo si la satisfacibilidad del circuito se puede decidir en el tiempo , o si y solo si hay una función f computable, no decreciente y ilimitada tal que todos los lenguajes reconocidos por una máquina de Turing de tiempo polinomial no determinista que usa opciones no deterministas están en P .
W [ P ] puede considerarse libremente como la clase de problemas en los que tenemos un conjunto S de n elementos y queremos encontrar un subconjunto de tamaño k tal que se cumpla una determinada propiedad. Podemos codificar una elección como una lista de k números enteros, almacenada en binario. Dado que el mayor valor de cualquiera de estos números es n , se necesitan bits para cada número. Por lo tanto, se necesitan bits totales para codificar una elección. Por lo tanto, podemos seleccionar un subconjunto con elecciones no deterministas.
XP es la clase de problemas parametrizados que se pueden resolver en el tiempo para alguna función computable f . Estos problemas se denominan polinomios por rebanadas, en el sentido de que cada "rebanada" de k fija tiene un algoritmo polinomial, aunque posiblemente con un exponente diferente para cada k. Compárese esto con FPT, que simplemente permite un prefactor constante diferente para cada valor de k. XP contiene FPT, y se sabe que esta contención es estricta por diagonalización.
Esta sección necesita ser ampliada . Puedes ayudar agregándole algo. ( Abril 2019 ) |
para-NP es la clase de problemas parametrizados que pueden resolverse mediante un algoritmo no determinista en el tiempo para alguna función computable f . Se sabe que si y sólo si . [5]
Un problema es para-NP-difícil si ya es -difícil para un valor constante del parámetro. Es decir, hay una "porción" de k fija que es -difícil. Un problema parametrizado que es -difícil no puede pertenecer a la clase , a menos que . Un ejemplo clásico de un problema parametrizado -difícil es la coloración de grafos , parametrizada por la cantidad k de colores, que ya es -difícil para (ver Coloración de grafos#Complejidad computacional ).
La jerarquía A es una colección de clases de complejidad computacional similar a la jerarquía W. Sin embargo, mientras que la jerarquía W es una jerarquía contenida en NP, la jerarquía A imita más de cerca la jerarquía de tiempo polinomial de la complejidad clásica. Se sabe que A[1] = W[1] es válido.