La siguiente imagen es una captura de pantalla tomada del curso de Complejidad Computacional del MIT. Esta es la explicación más clara de las clases computacionales básicas.
Esta línea indica las dificultades de cálculo que aumentan a medida que avanza hacia el lado derecho.
Al verificar esta imagen, para resolver todas las preguntas de NP, debe ser capaz de resolver las más difíciles en un tiempo razonable.
Intuitivamente, una pregunta que es al menos igual o más difícil que cualquier otra pregunta NP cae en el segmento “NP-hard” en la línea.
- ¿Cuánta programación necesito saber si quería ingresar a la criptografía?
- ¿Cómo se usan las matemáticas discretas en el aprendizaje automático?
- Alguien me dijo que me especializara en un dominio CS para evitar quedar desempleado cuando envejeciera, ¿es cierto?
- ¿Cómo funciona el proceso de eliminación en una lista vinculada? ¿Es solo eliminando la referencia del nodo? ¿Qué mecanismo se utiliza para disponer un nodo?
- ¿Cuál es el mejor menor para una especialización en informática? ¿Un menor le dará una 'ventaja' en la fuerza laboral?
El punto que toca los segmentos NP y NP-hard se llama NP-complete. Estas son las preguntas que son al menos iguales o más difíciles que cualquier otra pregunta de NP.
A menos que pueda resolver una pregunta “NP-hard” en un tiempo razonable, no puede resolver todas las preguntas de NP en un tiempo razonable.
Si puede resolver una pregunta NP-hard (seamos gentiles, si puede resolver una pregunta NP-complete) en un tiempo razonable, gracias a la “reducibilidad”, puede resolver todas las preguntas NP.
Para que p sea igual a np, debe resolver una pregunta del conjunto completo de NP en tiempo polinómico.