seegongsik
Algoritmos

Qué es P frente a NP

Con la O grande vimos cuánto crece el trabajo cuando crece la entrada. Pero en algunos problemas, el número de casos que hay que revisar explota en cuanto la entrada crece un poco. Por eso nadie conoce todavía una forma rápida de resolverlos. Lo curioso es que, aunque encontrar la respuesta por tu cuenta es difícil, comprobar si la respuesta que te da otra persona es correcta es rápido.

01

El número de casos explota

Supongamos que alguien tiene que visitar varias ciudades, cada una una sola vez, y quiere encontrar la ruta más corta.
Con tres ciudades, hay pocos órdenes posibles. Pero si añades ciudades una a una, el número de órdenes que hay que revisar se vuelve enorme en un abrir y cerrar de ojos.
Usa el botón de abajo para añadir ciudades.

123
3 ciudades
ordenes de ruta a revisar
2

Al añadir ciudades, el número de órdenes de visita explota. (ciudades +1 → los casos se multiplican)

Cada ciudad nueva multiplica el número de órdenes. Este es el «crecimiento explosivo» que vimos con la O grande.
Con apenas una docena de ciudades hay tantos órdenes que revisarlos uno a uno se atasca enseguida.

02

Difícil de resolver, fácil de comprobar

Pero hay algo interesante. Encontrar la respuesta puede ser difícil, pero si alguien te trae una, comprobar si es correcta es rápido.
Piensa en un sudoku. Rellenar todas las casillas da dolor de cabeza, pero revisar si un tablero completo cumple las reglas se hace con un vistazo.

Haz clic en una respuesta candidata para revisarla

Toca un candidato a respuesta y comprobarlo es rápido. (encontrar es difícil · revisar, un vistazo)

Difícil de encontrar, fácil de comprobar: que estas dos cosas vayan por separado es lo que caracteriza a estos problemas.
Con el problema del viajante pasa lo mismo. Encontrar la ruta más corta es difícil, pero si la pregunta es «¿hay una ruta cuya distancia total no pase de cierta cantidad?», basta con sumar las distancias de la ruta que alguien te da para confirmarlo.

03

¿Existe una solución rápida?

Aquí surge una gran pregunta: «Si un problema se comprueba rápido, ¿también se resuelve rápido?».
Quizá solo es que aún no hemos encontrado un método ingenioso, o quizá de verdad no existe una solución rápida.
Toca las dos posturas de abajo.

P rapido de resolverNP rapido de comprobar
Nadie sabe aun cual lado es el correcto. Es un gran misterio sin resolver.

Toca las dos posturas. (¿comprobar rápido = resolver rápido? · nadie lo sabe aún)

Sorprendentemente, nadie conoce todavía la respuesta a esta pregunta. Matemáticos y científicos de todo el mundo le han dedicado mucho tiempo, pero nadie ha logrado demostrar ni que «hay una solución rápida» ni que «no la hay».
Es el problema sin resolver más famoso de la informática. Así que, si alguien te dice que es fácil, es razonable dudar un poco.

Esta pregunta se conoce como «P contra NP». Lo esencial es que sigue siendo un problema sin resolver.

04

Problemas difíciles

Este tipo de problema no es único. Está la ruta más corta por muchas ciudades, la mochila con los objetos más valiosos dentro de un límite de peso y el coloreado de un mapa para que los países vecinos no compartan color.
Por fuera parecen distintos, pero por dentro se parecen: el número de casos explota y comprobar es fácil.
Cambia entre los ejemplos de abajo.

Hallar la ruta mas corta que visita cada ciudad una vez.

Toca un ejemplo para cambiarlo. (viajante · mochila · coloreado de grafos, todos con el mismo tipo de dificultad)

Se han reunido miles de problemas parecidos. Lo asombroso es que, si alguien encuentra una forma rápida de resolver uno solo de ellos, todos los demás también se pueden resolver rápido.
En cierto modo van de la mano, y eso lo hace aún más intrigante: resuelves uno y los has resuelto todos.

05

Resumen

En una línea: en algunos problemas, el número de casos explota en cuanto la entrada crece un poco, así que todavía no se conoce una solución rápida.
Aun así, aunque encontrar la respuesta sea difícil, comprobarla suele ser fácil. Entonces, si comprobar es rápido, ¿resolver también lo es? Es un gran enigma que nadie ha resuelto todavía.
Toca los puntos de abajo en orden para resumir.

Haz clic en los puntos clave en orden para cerrar

Toca los puntos clave en orden para resumir. (explosión → comprobar es fácil → aún sin resolver)

No todos los problemas son igual de fáciles; algunos son realmente duros.
Pero ser duro no significa el final. En la próxima lección conoceremos métodos ingeniosos que renuncian a la respuesta perfecta y, a cambio, encuentran rápido una respuesta «suficientemente buena».

En una líneaEn algunos problemas, el número de casos que hay que revisar explota en cuanto la entrada crece un poco, así que todavía no se conoce una solución rápida. La ruta más corta de un viajante que visita cada ciudad una vez es un ejemplo. Aun así, en problemas como estos, aunque encontrar la respuesta sea difícil, comprobar si una respuesta dada es correcta suele ser fácil. Entonces, ¿un problema que se comprueba rápido también se resuelve rápido? Esto se llama el problema P contra NP, y nadie conoce la respuesta todavía. Es un gran enigma sin resolver.
← Algoritmos
¿Te fue útil? Apoyar seegongsik