Muchos estudiantes tienen la idea errónea de que una reducción (como se usa en la teoría de la computabilidad y en la teoría de la complejidad computacional) es de alguna manera una simplificación.
Ese problema de decisión [matemática] L_1 [/ matemática] se reduce al problema de decisión [matemática] L_2 [/ matemática], escrita [matemática] L_1 \ leq L_2 [/ matemática] significa algo más y muy preciso: que existe un fiel, traducción computable [matemática] f [/ matemática] de instancias de [matemática] L_1 [/ matemática] a instancias de [matemática] L_2 [/ matemática] tal que [matemática] w [/ matemática] es un sí-instancia de [matemática ] L_1 [/ math] si y solo si [math] f (w) [/ math] es una instancia de sí de [math] L_2 [/ math]. Que [math] f [/ math] es computable significa que existe un algoritmo [math] F [/ math] que puede, en cualquier caso [math] w [/ math], calcular [math] f (w) [/ mates]. [math] f [/ math] es una reducción de tiempo polinomial si [math] F [/ math] tiene complejidad de tiempo polinomial (wrt. el tamaño de [math] w [/ math]). Luego escribimos [math] L_1 \ leq _ {\ mathrm {P}} L_2 [/ math].
Un problema de decisión difícil de NP [matemática] L [/ matemática] es un problema de decisión tal que [matemática] L_1 \ leq _ {\ mathrm {P}} L [/ matemática] por cada [matemática] L_1 \ in \ mathrm {NP }[/mates]. Si [math] L [/ math] es polinomial-time decidible con un decisor [math] M_L [/ math], entonces podemos encontrar fácilmente un decisor de tiempo polinomial para cualquier [math] L_1 \ in \ mathrm {NP} [ / math] utilizando la reducción de tiempo polinomial [math] f [/ math] de [math] L_1 [/ math] a [math] L [/ math] que debe existir:
- Cómo resolver la pregunta en la descripción a continuación
- Cómo resolver el problema del "número mínimo de cortes"
- Cómo desarrollar un algoritmo para detectar rangos de negociación horizontales / patrones de consolidación
- ¿Qué es una explicación intuitiva de inserción en un árbol AVL?
- ¿Estoy perdiendo el tiempo implementando la estructura de datos elementales (Stacks, Queues y LinkedLists) como parte de la preparación para una entrevista de prácticas en Google?
En la entrada [matemática] w [/ matemática]
1. Calcular [matemática] f (w) [/ matemática]
2. Ejecute [math] M_L [/ math] con [math] f (w) [/ math] como entrada y responda lo que respondió
La complejidad temporal de este algoritmo es polinomial, ya que el paso 1 produjo una cadena cuyo tamaño puede ser como máximo polinomial en el tamaño de [math] w [/ math] y dado que el paso 2 usa esta cadena como entrada para un algoritmo de tiempo polinomial: y dado que la composición de dos polinomios es nuevamente un polinomio.
Entonces, debido a que podemos encontrar un decisor de tiempo polinómico para cualquier [matemática] L_1 \ in \ mathrm {NP} [/ matemática] dado un decisor para nuestro NP-difícil [matemática] L [/ matemática], tiene sentido decir que [matemáticas] L [/ matemáticas] es un problema más difícil en NP. Piense en la relación de reducción [matemática] L_1 \ leq L_2 [/ matemática] como diciendo que [matemática] L_2 [/ matemática] es tan difícil como [matemática] L_1 [/ matemática].