La reducción paramétrica es una técnica para diseñar algoritmos eficientes que logran su eficiencia a través de un paso de preprocesador en el que la entrada del algoritmo se reemplaza por una entrada más pequeña llamada "núcleo". El resultado de resolver el problema en el kernel debe ser el mismo que para los datos iniciales o el resultado de la solución para el kernel debe transformarse fácilmente en el resultado deseado del problema original.
La reducción paramétrica a menudo se logra mediante la aplicación de un conjunto de reglas de reducción que cortan la parte de un problema particular que es fácil de tratar. En la teoría de la complejidad parametrizada , a menudo se puede probar que un kernel con límites garantizados dependiendo del tamaño del kernel (en función de algunos parámetros relacionados con el problema) se puede encontrar en tiempo polinomial . Si es posible, el resultado será un algoritmo decidible paramétricamente fijo cuyo tiempo de ejecución es la suma del paso de reducción paramétrica (tiempo polinómico) y el tiempo (no polinomial pero limitado por parámetros) para resolver el kernel. Además, cualquier problema que pueda resolverse mediante un algoritmo solucionable de parámetros fijos puede resolverse mediante un algoritmo de reducción paramétrica de este tipo.
Un ejemplo estándar de un algoritmo de reducción paramétrica es la reducción paramétrica del problema de cobertura de vértices de S. Bass [1] . En este problema, la entrada es un gráfico no dirigido junto con un número . La salida es un conjunto de vértices máximo que incluye el vértice final de cada gráfico si existe dicho conjunto, o una excepción de error si dicho conjunto no existe. Este problema es NP-difícil . Sin embargo, se pueden utilizar las siguientes reglas para su reducción paramétrica:
Un algoritmo que vuelve a aplicar estas reglas hasta que no se puedan realizar más reducciones necesariamente termina con un núcleo que tiene como máximo aristas y (dado que cada arista tiene como máximo dos vértices terminales y ningún vértice aislado) como máximo vértices. Esta reducción paramétrica se puede hacer en tiempo lineal . Una vez que se construye el kernel, el problema de la cobertura de vértices se puede resolver mediante un algoritmo de fuerza bruta , que verifica que cada subconjunto del kernel sea una cobertura del kernel. Así, el problema de la cobertura de vértices se puede resolver a tiempo para un grafo con vértices y aristas, lo que permite resolverlos eficientemente cuando son pequeños, aunque sean grandes .
Aunque este límite se puede resolver de forma paramétrica fija, su dependencia del parámetro es más alta de lo que uno podría desear. Los procedimientos de reducción paramétrica más complejos pueden mejorar este límite al encontrar núcleos más pequeños a costa de más tiempo en el paso de reducción paramétrica. Se conocen algoritmos para el problema de cobertura de vértices de reducción paramétrica, que dan núcleos máximos con vértices. El algoritmo que logra este límite mejorado utiliza la relajación de medio entero del problema de cobertura de vértices mediante un problema de programación lineal según George Nemhauser y Trotter [2] . Otro algoritmo de reducción paramétrica que logra este límite se basa en un truco llamado regla de reducción de corona y utiliza argumentos de alternancia de rutas [3] . En la actualidad, el algoritmo de reducción paramétrica más conocido en cuanto al número de vértices se debe a Lampis [4] y consigue vértices para cualquier constante .
Es imposible para este problema encontrar un kernel de tamaño a menos que P=NP, en cuyo caso el kernel conduciría a un algoritmo polinomial para el problema de cobertura de vértice duro NP. Sin embargo, en este caso se pueden probar límites más estrictos en el tamaño del kernel, a menos que coNP NP/poly (que los teóricos de la complejidad computacional consideran improbable), es imposible encontrar kernels con bordes en tiempo polinomial [5] .
No existe un consenso claro en la literatura sobre cómo debe definirse formalmente la reducción paramétrica, y existe una diferencia sutil en el uso de tales expresiones.
En la notación de Downey-Fellowes [6] , un problema parametrizado es un subconjunto que describe el problema de solución .
La reducción paramétrica de un problema parametrizado es un algoritmo que toma un representante y lo mapea en el tiempo polinomialmente en y a un representante , de modo que
La salida de la reducción paramétrica se llama kernel. En este contexto general , el tamaño de una cadena a menudo se denomina longitud. Algunos autores prefieren el número de vértices o el número de aristas como el tamaño en el contexto de los problemas de grafos.
En la notación Flam-Grohe [7] , un problema parametrizado consiste en un problema de decisión y una función , la parametrización en sí. El parámetro representativo de la tarea es un número .
La reducción paramétrica para un problema parametrizado es un algoritmo que toma un representante con un parámetro y lo asigna en tiempo polinomial a un representante tal que
Tenga en cuenta que en esta notación el límite de tamaño implica que el parámetro también está limitado por una función de .
La función se refiere a menudo como el tamaño del kernel. Si se dice que admite un núcleo polinomial. De manera similar, el problema admite un núcleo lineal.
Un problema es solucionable paramétricamente fijo si y solo si puede reducirse paramétricamente y es solucionable .
Que un problema paramétricamente reducible y solucionable es fijo-paramétricamente solucionable se puede ver a partir de la definición anterior: se invoca un algoritmo de reducción paramétrica que se ejecuta en el tiempo para alguna c para obtener un kernel de tamaño . Luego, el kernel se resuelve mediante un algoritmo que verifica que el problema se pueda resolver. El tiempo de ejecución total de este procedimiento es , donde es el tiempo de ejecución del algoritmo utilizado para resolver los núcleos. Dado que es computable, por ejemplo, bajo el supuesto de que es computable, pero puede calcularse mediante la enumeración de todas las entradas posibles de longitud , se deduce que el problema tiene solución paramétrica fija.
La prueba en la otra dirección de que un problema solucionable paramétricamente fijo es reducible y solucionable paramétricamente es un poco más difícil. Supongamos que la pregunta no es trivial, lo que significa que hay al menos un representante de la tarea llamado , que pertenece al idioma, y al menos un representante de la tarea, que no pertenece al idioma, llamado . De lo contrario, reemplazar cualquier representante con una cadena vacía es una reducción paramétrica válida. Supongamos también que el problema tiene solución paramétricamente fija, es decir, tiene un algoritmo que funciona como máximo en pasos sobre representantes del problema para alguna constante y alguna función . Para implementar la reducción paramétrica de la entrada, aplicamos el algoritmo en una entrada dada en un máximo de pasos. Si el algoritmo termina con una respuesta, use la respuesta para elegir o como núcleo. Si, en cambio, llegamos al límite del número de pasos sin interrupción, devolvemos la tarea en sí como el núcleo. Dado que se devuelve como kernel de entrada con , se deduce que el tamaño del kernel obtenido de esta forma no supera . El límite de tamaño es computable bajo los supuestos de solucionabilidad paramétrica fija, que es computable.