NP-Hard es la clase de problemas, en términos simples, “al menos tan difícil” como cualquier problema en NP . Lo que esto significa específicamente es que si tiene un algoritmo [matemático] A_1 [/ matemático] para resolver un problema NP-Hard , puede construir, para cualquier problema NP , un algoritmo [matemático] A_2 [/ matemático] que se ejecuta en el “mismo tiempo” que [matemática] A_1 [/ matemática] (las complejidades de los dos algoritmos tendrán como máximo una diferencia de tiempo polinómico).
Tenga en cuenta que, dado que no confinamos NP-Hard dentro de NP , no tenemos la garantía de que los problemas de NP-Hard puedan verificarse en tiempo polinómico (la propiedad clave de NP ). Esta es la razón por la cual la clase NP-Complete es tan importante: al ser la intersección entre NP y NP-Hard , NP-Complete captura el conjunto de problemas NP-Hard que pueden verificarse en tiempo polinómico.
Entonces, respondiendo a su pregunta: si un problema NP-Hard se resuelve en tiempo polinómico, hay dos escenarios posibles:
1. El problema pertenece al subconjunto de problemas NP-Hard que se pueden verificar en tiempo polinómico ( NP-Complete ), y esto constituye una prueba de que P = NP .
2. El problema no pertenece al subconjunto de problemas NP-Hard que pueden verificarse en tiempo polinómico, y este problema, con certeza, se ha clasificado incorrectamente. ¿Por qué? Porque un solucionador polinomial de un problema es una receta para un verificador polinomial para el mismo problema. Puede tomar cualquier instancia y solución candidata, resolver la instancia en tiempo polinómico y comparar el resultado con la solución candidata, obteniendo sí si son iguales y no de otra manera (recuerde, todos los problemas que importan son problemas de decisión). Por lo tanto, el resultado de un solucionador de polinomios a un problema con probablemente ningún verificador de polinomios es una contradicción y eso significa que debe haber algún error en su algoritmo.
- ¿Cuál es el número más grande que puede generar con un procesador de 64 bits?
- Cómo implementar esto en Python: dada una matriz, encuentre tres números a, byc de modo que a ^ 2 + b ^ 2 = c ^ 2
- ¿Por qué 0 ^ 0 es igual a 1 en el estándar IEEE 754 aunque no tiene sentido?
- ¿La criptografía es un arte o una ciencia?
- ¿Qué tan útil será el algoritmo de Shor para las computadoras cuánticas?