In computational complexity theory, NP-hardness (non-deterministic polynomial-time hardness) is the defining property of a class of problems that are informally "at least as hard as the hardest problems in NP". A simple example of an NP-hard problem is the subset sum problem. A more precise specification is: a problem H is NP-hard when every problem L in NP can be reduced in polynomial time to H; that is, assuming a solution for H takes 1 unit time, H's solution can be used to solve L in polynomial time. As a consequence, finding a polynomial time algorithm to solve any NP-hard problem would give polynomial time algorithms for all the problems in NP. As it is suspected that P≠NP, it is unlikely that such an algorithm exists. A common misconception is that the NP in "NP-hard" stands for "non-polynomial" when in fact it stands for "non-deterministic polyn
En la teoría de la complejidad computacional, la dureza NP es la propiedad definidora de una clase de problemas que son informalmente "al menos tan difíciles como los problemas más difíciles en NP". Un ejemplo simple de un problema NP-hard es el problema de la suma de subconjuntos. Una especificación más precisa es: un problema H es NP-hard cuando cada problema L en NP puede reducirse en tiempo polinómico a H; es decir, suponiendo que una solución para H toma 1 unidad de tiempo, la solución de H puede usarse para resolver L en tiempo polinómico. Como consecuencia, encontrar un algoritmo de tiempo polinómico para resolver cualquier problema NP-hard daría algoritmos de tiempo polinómico para todos los problemas en NP. Como se sospecha que P ≠ NP, es poco probable que exista un algoritmo de este tipo.