Introducción a la teoría de la complejidad computacional: P, NP y los límites del cálculo eficiente
Puntos clave
- •La notación Big O describe cómo crecen los requisitos de tiempo y memoria con el tamaño de la entrada, lo que permite comparar algoritmos de forma independiente del hardware en el que se ejecutan.
- •P contiene los problemas de decisión que pueden resolverse en tiempo polinomial por una máquina de Turing determinista, mientras que NP contiene los problemas de decisión cuyas soluciones propuestas pueden verificarse en tiempo polinomial.
- •La pregunta de P frente a NP sigue siendo uno de los problemas abiertos más profundos de la informática y es uno de los siete Problemas del Premio del Milenio del Clay Mathematics Institute, cada uno con un premio de un millón de dólares.
- •Si cualquier problema NP-completo, como el del agente viajero, la satisfacibilidad booleana o el de la mochila, se resolviera en tiempo polinomial, entonces P sería igual a NP.
- •La criptografía moderna se apoya en el supuesto de que ciertos problemas son inviables de resolver para los atacantes dentro de plazos prácticos, lo que hace que la resolución de la pregunta de P frente a NP sea trascendental para la seguridad.

La teoría de la complejidad computacional es el campo de estudio dedicado a los recursos necesarios para resolver problemas computacionales. Proporciona un marco para analizar la eficiencia de los algoritmos, un asunto de importancia creciente en una época en la que la capacidad de cálculo y el almacenamiento de datos desempeñan un papel cada vez más central. En esencia, esta disciplina busca comprender la dificultad inherente de los problemas computacionales y las limitaciones del cálculo eficiente.
Tiempo, espacio y notación Big O
En su fundamento, la teoría de la complejidad computacional se ocupa de la cantidad de tiempo y espacio que un algoritmo requiere para resolver un problema. La complejidad temporal se refiere al número de pasos que un algoritmo necesita para completarse, mientras que la complejidad espacial se refiere a la cantidad de memoria que utiliza. Estas dos medidas son fundamentales para evaluar la eficiencia de un algoritmo, y ambas se expresan comúnmente mediante la notación Big O, que proporciona un límite superior del número de pasos o de la cantidad de espacio requeridos. Dado que Big O describe cómo crece el uso de recursos en relación con el tamaño de la entrada, en lugar de la velocidad bruta en un hardware específico, permite comparar algoritmos de forma independiente de las máquinas en las que se ejecutan.
P y NP: las clases fundamentales
Dos de las clases más significativas de la teoría de la complejidad computacional son P, abreviatura de Tiempo Polinomial, y NP, abreviatura de Tiempo Polinomial No Determinista. P consiste en los problemas de decisión que pueden resolverse en tiempo polinomial por una máquina de Turing determinista, lo que significa que el tiempo de ejecución aumenta como máximo de manera polinomial con el tamaño de la entrada. NP, por su parte, incluye los problemas de decisión para los cuales una solución propuesta puede verificarse en tiempo polinomial por una máquina de Turing determinista, aunque la solución en sí puede no encontrarse rápidamente.
Si P equivale a NP es una de las preguntas abiertas más profundas de la informática. Si P=NP, entonces todo problema con un método eficiente conocido de verificación también tiene un algoritmo eficiente para encontrar una solución. Si P≠NP, entonces existen problemas para los cuales no hay ningún algoritmo eficiente, incluso cuando una solución puede verificarse de manera eficiente. La magnitud de lo que está en juego en esta pregunta se refleja en su designación como uno de los siete Problemas del Premio del Milenio establecidos por el Clay Mathematics Institute, cada uno de los cuales conlleva un premio de un millón de dólares por su solución. La resolución de esta cuestión tiene implicaciones significativas para la criptografía, los problemas de optimización y muchas áreas de la ciencia y la ingeniería, dado que gran parte de la criptografía moderna se apoya en el supuesto de que ciertos problemas son inviables de resolver para los atacantes dentro de plazos prácticos.
Reducciones y NP-completitud
Un concepto clave para demostrar la dificultad de los problemas es la reducción, en la cual un problema se transforma en otro. Si un problema A puede reducirse a un problema B, y se sabe que B es difícil, entonces A es al menos tan difícil como B. Los problemas NP-completos son aquellos en NP que son al menos tan difíciles como los problemas más difíciles de NP. Si se descubriera que cualquier problema NP-completo tiene una solución en tiempo polinomial, entonces P=NP. Ejemplos notables de problemas NP-completos incluyen el problema del agente viajero, el problema de satisfacibilidad booleana (SAT) el problema de la mochila. Este tipo de problemas están lejos de ser puramente académicos: aparecen con regularidad en el enrutamiento, la programación de tareas y la asignación de recursos, y cuando no se conoce un algoritmo exacto eficiente, los profesionales suelen recurrir a algoritmos de aproximación y heurísticas que intercambian la optimalidad garantizada por tiempos de ejecución manejables.
La teoría de la complejidad computacional ofrece un marco rico para comprender las complejidades de la eficiencia algorítmica y los límites del cálculo. A través del lente de P, NP y las reducciones, los investigadores obtienen una perspectiva de los desafíos fundamentales de resolver problemas complejos de manera eficiente. A medida que la computación asume un papel cada vez mayor en la vida cotidiana, el estudio de la teoría de la complejidad computacional sigue siendo vital, guiando el camino hacia soluciones más eficientes e iluminando los límites de lo que puede calcularse. Hasta que la pregunta de P frente a NP se resuelva, la línea entre los problemas que se sabe admiten soluciones eficientes y aquellos para los cuales no se ha encontrado ninguna seguirá moldeando tanto las prioridades de investigación como la práctica de la ingeniería.
Fuente: OPEC