¿Cuál es el problema P versus NP en informática?

Se dice que un problema de decisión puede resolverse en tiempo polinómico (o “en P “, para abreviar), si hay un algoritmo y un polinomio q tal que, dada cualquier entrada de tamaño n , el algoritmo responde la pregunta (¡correctamente!) En no más de q ( n ) pasos. En otras palabras, el peor momento para que el algoritmo resuelva el problema para una entrada de tamaño n debe ser O ( n ^ k ) para algunos k .

Por ejemplo, el problema del gráfico euleriano está en P. El algoritmo de búsqueda exhaustivo tarda demasiado en limitar el número de pasos por un polinomio. Pero hay otra forma . Veamos solo el caso conectado. El teorema de Euler nos dice que un gráfico conectado tiene un ciclo de Euler si y solo si cada vértice tiene un grado par. Entonces, si se nos da una gráfica conectada con n vértices en forma de una matriz de adyacencia n x n , en una serie de pasos que es O ( n ^ 2) podríamos decidir si la gráfica es Euleriana o no. Y la función q ( n ^ 2) = n ^ 2 es un polinomio.
Para otro ejemplo, el problema de 2-colorabilidad está en P.

El concepto P es importante en la informática teórica, porque los polinomios crecen a un ritmo modesto, en contraste con funciones como f ( n ) = n ! o g ( n ) = 2 ^ n . (Consulte la Tabla 4.3.1 en Análisis de algoritmos). Un algoritmo de tiempo polinómico es factible de ejecutar en una computadora. Un algoritmo de tiempo exponencial no lo es (excepto para entradas trivialmente pequeñas). Se dice que los problemas que no están en P son intratables .

El concepto NP , “solucionable en tiempo polinómico no determinista”, es más difícil de explicar. Se dice que hay un problema en NP si hay un algoritmo con las siguientes propiedades: Primero, si la respuesta es “sí”, entonces debe existir evidencia de certificación (de tamaño polinomialmente limitado) tal que el algoritmo, dada la entrada y la evidencia, puede verificar la respuesta afirmativa en un número de pasos polinómicamente acotado. En segundo lugar, si la respuesta es “no”, entonces, por supuesto, no debe existir evidencia de certificación que acepte el algoritmo. (El libro menciona NP solo de pasada).

Por ejemplo, el problema del gráfico hamiltoniano está en NP (la evidencia de certificación es el ciclo hamiltoniano); el problema de 4 colorabilidad está en NP (la evidencia de certificación es la coloración); El problema de la satisfacción en la lógica está en NP . Y en todos estos casos, el problema no está en P hasta donde sabemos .
Se cree ampliamente que P no es igual a NP , y en particular que los tres problemas mencionados en el párrafo anterior no están en P. Pero los esfuerzos para demostrar que P difiere de NP hasta ahora no han tenido éxito.

La pregunta P vs. NP sigue siendo el problema abierto más importante en la informática teórica. Hay un premio de un millón de dólares por resolverlo).
El interés en la pregunta no es simplemente curiosidad ociosa. Existen esquemas criptográficos que se basan en la creencia de que problemas como estos no pueden responderse en una cantidad de tiempo factible. Si, al contrario de lo esperado, P y NP son iguales, entonces estos esquemas criptográficos no son seguros. (Si encuentra una manera de resolver todos los problemas de NP en tiempo polinómico, a la NSA le gustaría conversar con usted).

P v NP es un problema crucial en matemáticas y ciencias de la computación.

La mayoría de los algoritmos caen en una categoría informal llamada “Algoritmos de [Las] Vagas” que siempre son correctos pero probablemente rápidos (a diferencia de los algoritmos de Monte-carlo que a menudo son de naturaleza estocástica y siempre rápidos, pero tal vez correctos, como el navegador por satélite sistemas). El problema con los algoritmos de Vagas es que aún no está claro si estos algoritmos, o de hecho, todos los algoritmos que pueden ser resueltos por una computadora rápidamente también pueden validarse rápidamente, donde rápidamente se define como capaz de determinarse en tiempo polinómico.

P = tiempo polinómico

NP = tiempo polinómico no determinista

P es la verificación y NP es la solución.

Un ejemplo de cómo funciona esto es que podría probar que existe una solución para un problema o clase de problemas dados (llamado teorema de existencia) sin construir la prueba de esa existencia. Sin embargo, si tuviera que encontrar esa solución, no está claro si podría encontrar o construir esa solución en tiempo polinómico.

Esta es una pregunta realmente importante, ya que cosas como tamizar números primos, o más bien, la supuesta incapacidad de tamizar números primos rápidamente (como factores comunes de un cifrado digital) son fundamentales para la seguridad de la web y específicamente, cualquier forma de cifrado RSA .

Lo interesante de P = NP:

  • Es sorprendente que todavía no hayamos encontrado una prueba.
  • Si resultó que P es igual a NP, eso significa que habría soluciones ‘fáciles’ * para muchos problemas que antes consideramos ‘difíciles’, a pesar de que las personas han buscado soluciones fáciles, lo cual es muy sorprendente
  • Es sorprendente que aún no hayamos encontrado una prueba (repetido para enfatizar)

Pero en realidad no es tan importante. Todos suponen que P! = NP y continúan con sus vidas, aunque supongo que probablemente sean personas que intentan demostrar que P = NP o P! = NP.

* = Tenga en cuenta que el descubrimiento de que P = NP no implica el descubrimiento de estas soluciones fáciles. Tenga en cuenta también que fácil en este sentido es muy relativo, si las soluciones fáciles son polinomios de grado 100, entonces eso todavía no es fácil en ninguna definición práctica de la palabra fácil.

P es una clase de problema de decisión que puede determinarse mediante una máquina de turing determinista en tiempo polinómico.

NP es una clase de problema de decisión que puede determinarse mediante una máquina de turing no determinista en tiempo polinómico.

Podemos ver que cualquier problema de P también pertenece a NP. Por lo tanto, P es definitivamente un subconjunto de NP.

Sin embargo, la pregunta es ¿P = NP se mantiene bien?
es decir, ¿puede cada problema de NP ser determinado por una máquina determinista de turing?

P = NP no ha sido probado ni refutado. Sin embargo, la mayoría cree que P! = NP

Si P = NP se mantiene tendremos algoritmos eficientes para resolver muchos problemas complejos.

Espero que haya ayudado!

Bueno, por un lado, nuestra seguridad actual de comunicación se basa en el supuesto de que es prácticamente imposible llevar a cabo un cálculo, cuyo resultado se puede verificar fácilmente. Solo sabiendo que P = NP no permitirá que los piratas informáticos rompan instantáneamente cada contraseña, pero la suposición fundamental en la que descansamos nuestra sensación de seguridad sería falsa y tendríamos que encontrar alguna forma diferente de proteger nuestras comunicaciones / transacciones en línea, etc.

En realidad no es tan importante, solo teóricamente.

Si P es igual a NP, entonces esto significa que todo se puede resolver en tiempo polinómico, pero aún tendríamos que encontrar los algoritmos que podrían tomar cientos de años.

Pero si P no es igual a NP, no importaría mucho porque muchos problemas de NP completo ya pueden resolverse en tiempo pseudo-polinomial , como el problema de la suma de Subconjuntos (ver la Lista de problemas de NP completo).

Ya se sabe que todos los problemas de NP tienen soluciones de tiempo exponencial, por lo que en el futuro si encontramos formas de hacer que los algoritmos de tiempo exponencial se ejecuten más rápido, ¡no debería importar mucho!

Con la programación dinámica y la computación concurrente, puede resolver cualquier cosa con relativa rapidez, por lo que, en mi opinión, no importa tanto.

En el futuro, si las computadoras de 1000 núcleos son normales y comunes, ¿cuánto importará en realidad?

More Interesting

¿Qué son los circuitos Garbling en términos simples? ¿O suponiendo solo conocimientos básicos de cómputo multiparte?

Cómo probar o refutar [math] \ log (n!) \ In \ Theta (n ^ 2) [/ math] en notación asintótica

Una máquina de Turing tiene una cantidad infinita de memoria, que no es posible en la vida real. ¿Por qué sigue siendo un buen modelo?

¿Hay algún trabajo para estudiantes de informática teórica?

Cómo convertir entre índice basado en 1 y basado en 0

¿Qué abstracciones te parecen interesantes? ¿Por qué?

¿Cuántos arreglos de piezas de ajedrez en un tablero de ajedrez hay, suponiendo que las piezas lleguen a sus posiciones mediante movimientos legales?

¿Cómo funcionan la Ley Idempotente y la Ley de Dominación?

¿La comunidad académica evita los intentos de resolver un problema NP-difícil en tiempo polinómico?

Cómo obtener la longitud del dígito de (x * y * z * ...) / (a ​​* b * c * ...), donde x, y, z, a, b, c son enteros, pero (x * y * z. .) o (a * b * c ..) sería muy grande

¿Cuáles son algunas limitaciones de la teoría de detección de señales?

¿Cuál es una buena manera de entender que FSA (automatización de estado finito) o los lenguajes regulares están cerrados bajo diferencia, complementación e intersección, pero FST (traductores de estado finito) o relaciones regulares no lo están?

¿Cuáles son algunos de los nuevos campos en la informática teórica?

Si se demuestra P = NP, ¿cómo cambiará el campo de la inteligencia artificial?

¿Cómo puede la informática teórica informar el estudio del origen de la vida?