Nota: Todavía no he revisado la respuesta cuidadosamente y hay partes que faltan por escribir, considérelo un primer borrador.
Esta respuesta está destinada principalmente a personas que no son investigadores en teoría de la complejidad o campos relacionados. Si eres un teórico de la complejidad y has leído la respuesta, avísame si notas algún problema o tienes una idea para mejorar la respuesta.
Donde puede encontrar soluciones reclamadas de P vs. NP
- Existe la página P-versus-NP que tiene una lista de tales afirmaciones.
- Los artículos que dicen resolver la pregunta se publican regularmente en arXiv .
Otras listas de cómo no resolver P vs. NP
Lance Fortnow, así que crees que te estableciste P verus NP , 2009
Scott Aaronson, Ocho señales de que una prueba reclamada de P imed NP es incorrecta , 2010
Página de Polymath para el artículo de Deolalikar , donde la sección de lecturas adicionales tiene una buena lista de referencias sobre el problema.
Cómo no acercarse a P vs. NP
Permítanme discutir "cómo no abordar P vs. NP" no en el sentido de ideas que no funcionarán, sino en un sentido más general. P vs. NP es un problema fácil de enunciar (ver también mi respuesta aquí ):
NP = P: Para cada problema de decisión con un algoritmo verificador de tiempo polinómico hay un algoritmo de tiempo polinómico.
o equivalente
Hay un algoritmo de tiempo polinómico para SAT.
SAT se puede reemplazar con cualquier otro problema NP-completo .
.
A menudo, las personas simplifican demasiado y filosofan demasiado el problema y exageran la importancia práctica del problema (como se indicó anteriormente). Tales afirmaciones a menudo tienen la intención de dar intuición, pero de ninguna manera reemplazan la afirmación matemática real del problema.
La eficiencia teórica no es lo mismo que la factibilidad en la práctica.
Permítanme primero con consecuencias prácticas exageradas.
I. ¡ Es posible que P = NP pero no ayuda para ningún problema en la práctica!
2264norte65536+ 22128
≠
nortelg∗lg∗norte
lg∗n > 62
El punto principal aquí es que P es un modelo simple abstracto de computación eficiente, la complejidad del peor de los casos es un modelo simple abstracto de estimar el costo de un cómputo, etc. Todos estos son abstracciones, pero nadie en la práctica consideraría un algoritmo como el de (I) anterior como un algoritmo eficiente realmente. P es un buen modelo abstracto, tiene buenas propiedades, facilita los problemas técnicos y es útil. Sin embargo, como toda abstracción matemática, esconde detalles que en la práctica nos pueden interesar. Hay varios modelos más refinados, pero cuanto más complicado se vuelve el modelo, menos agradable sería discutir.
Lo que a la gente le importa en la práctica es calcular una respuesta al problema para los casos en que les importa usar una cantidad razonable de recursos. Hay tareas dependientes y deben tenerse en cuenta.
Intentar encontrar mejores algoritmos para casos prácticos de problemas NP-hard es un esfuerzo interesante y valioso. Existen algoritmos heurísticos para resolver SAT que se utilizan en la industria y pueden resolver casos prácticos de SAT con millones de variables. Incluso hay una competencia internacional SAT .
(Pero también hay pequeñas instancias concretas en las que todos estos algoritmos fallan y fallan bastante, en realidad podemos demostrar que todos los solucionadores de SAT modernos de última generación toman tiempo exponencial para resolver instancias simples como el Principio de casillero proposicional ).
Tenga en cuenta que la corrección y el tiempo de ejecución de los programas no se pueden obtener simplemente ejecutando el programa en instancias . No importa cuántas instancias intentes, ninguna cantidad es suficiente. Hay infinitas entradas posibles y debe mostrar la corrección y la eficiencia (es decir, el tiempo de ejecución es polinomial) del programa para todas ellas. En resumen, necesita una prueba matemática de corrección y eficiencia. Si no sabe qué es una prueba matemática, primero debe aprender algunas matemáticas básicas (lea un libro de texto de matemática discreta / teoría combinatoria / teoría de grafos, este es un buen tema para aprender sobre lo que se considera una prueba matemática).
También tenga cuidado con otras afirmaciones sobre P vs. NP y la consecuencia de sus respuestas. Tales afirmaciones a menudo se basan en simplificaciones similares.
¡Los teóricos de la complejidad realmente no se preocupan por una respuesta a P vs. NP!
Exageré un poco. Por supuesto que nos importa una respuesta a P vs. NP. Pero nos importa en un contexto. P vs. NP es nuestro problema principal, pero no es el objetivo final. Es un problema fácil de enunciar, involucra muchas ideas fundamentales, es útil para explicar el tipo de preguntas que nos interesan a las personas que no están familiarizadas con el tema. Pero no buscamos una respuesta Sí / No a la pregunta.
Buscamos una mejor comprensión de la naturaleza de la computación eficiente . Creemos que resolver la pregunta vendrá con tal comprensión y esa es la verdadera razón por la que nos preocupamos. Es parte de un gran cuerpo de investigación. Si desea tener una idea de lo que hacemos, eche un vistazo a un buen libro de texto de teoría de la complejidad, por ejemplo, " Teoría de la complejidad: un enfoque moderno " de Arora y Barak ( versión preliminar ).
≠
En resumen, desde la perspectiva de un teórico de la complejidad.
P vs. NP no es un rompecabezas con una respuesta Sí / No. Buscamos una respuesta a P vs. NP porque creemos que llegará a una mejor comprensión de la naturaleza de la computación eficiente. Una respuesta sin un avance importante en nuestro entendimiento no es muy interesante.
Ha habido demasiadas ocasiones en que los no expertos han reclamado soluciones para P vs. NP, y esas afirmaciones generalmente sufren problemas que no habrían hecho si solo leyeran un libro de texto estándar sobre teoría de la complejidad.
Problemas comunes P = NP
Las afirmaciones de P = NP parecen ser más comunes. Creo que el siguiente es el tipo más común. Alguien tiene una idea y escribe un programa y lo prueba en algunas instancias y piensa que es tiempo polinómico y resuelve correctamente un problema de NP completo. Como expliqué anteriormente, ninguna cantidad de pruebas mostrará P = NP. P = NP necesita una prueba matemática , no solo un programa que parece resolver un problema de NP completo en tiempo polinómico.
Estos intentos suelen sufrir uno de los dos problemas:
I. el algoritmo no es realmente el tiempo polinomial.
II El algoritmo no resuelve todas las instancias correctamente.
≠
[para ser escrito]
Cómo comprobar que su algoritmo realmente no funciona
No puede demostrar que su algoritmo funciona correctamente mediante pruebas. ¡Pero puedes demostrar que no funciona correctamente al probarlo! Así es como puede asegurarse de que su algoritmo no sea correcto si está dispuesto a hacer algún trabajo.
Primero, escriba un programa para convertir instancias de SAT (en el formato CNF estándar) al problema NP-hard que está resolviendo. SAT es uno de los problemas NP-hard más estudiados y las reducciones de otros problemas a SAT suelen ser fáciles. En segundo lugar, tome los ejemplos con los que luchan los solucionadores de SAT de última generación (por ejemplo, tome los ejemplos de la competencia SAT) y aliméntelos a su algoritmo y vea cómo funciona su algoritmo. Pruebe instancias difíciles conocidas como el Principio de Pigeonhole proposicional (y no haga trampas codificándolas como casos especiales), instancias criptográficas (como RSA Factoring Challenges ), instancias aleatorias k-SAT cerca del umbral , etc.
10 n2
Cómo verificar su idea algorítmica P = NP no puede funcionar
Si hace esto, estará bastante seguro de que su algoritmo no funcionará (si funciona mejor que los solucionadores de SAT de última generación, compita en la próxima competencia y mucha gente estaría interesada en estudiar su algoritmo e ideas).
Ahora sabes que realmente no funciona, pero eso no es suficiente. Quieres saber por qué,
¿Cuál es la razón por la cual mi algoritmo no funciona? ¿Un problema pequeño que se puede solucionar o hay una razón fundamental por la que no puede funcionar?
A veces, el problema con el algoritmo es simple y uno puede identificar lo que estaba mal conceptualmente. El mejor resultado es que comprende la razón por la cual su idea no puede funcionar. A menudo no es el caso, su idea no funciona pero no puede entender por qué. En ese caso, tenga en cuenta:
¡comprender por qué alguna idea no puede funcionar puede ser más difícil que resolver P vs. NP!
Si puede formalizar su idea lo suficiente, podría probar una limitación de ideas particulares (por ejemplo, hay resultados que dicen que las formalizaciones particulares del algoritmo codicioso no pueden resolver los problemas de NP completo). Sin embargo, es aún más difícil y no tiene muchas posibilidades si no ha leído un libro de texto estándar de teoría de la complejidad.
En algún momento ni siquiera existe una idea conceptual clara de por qué el algoritmo debería funcionar, es decir, se basa en algunas heurísticas no bien entendidas . Si no tiene una idea conceptual clara de por qué su algoritmo debería funcionar, ¡entonces podría no tener muchas posibilidades de comprender por qué no funciona!
≠
≠
Problema 1: el autor no conoce la definición de P y NP, o peor aún, no entiende qué es una prueba matemática. Debido a que el autor carece de entrenamiento matemático básico, no comprende cuando se le dice que lo que está presentando no es una prueba (por ejemplo, los pasos no se siguen de los anteriores).
Problema 2: el autor confunde "no sabemos cómo" con "imposibilidad matemática". Por ejemplo, hacen varias suposiciones injustificadas y cuando se les pregunta "¿por qué esta afirmación es verdadera?" ellos responden "¿cómo puede ser falso?". Una de las más comunes es suponer que cualquier programa que resuelva el problema tiene que ir por pasos particulares, por ejemplo, tiene que calcular valores intermedios particulares, porque no puede pensar en una forma alternativa de resolver el problema.
[a completar]
≠
[para ser escrito]
≠
Si un reclamo no sufre estos problemas básicos, rechazarlo se vuelve más difícil. En el primer nivel se puede encontrar un paso incorrecto en el argumento. La respuesta típica del autor es que puedo arreglarlo y esto puede continuar. Similar a las soluciones P = NP, a menudo es muy difícil encontrar un problema fundamental con una idea que pueda demostrar que no puede funcionar, particularmente cuando la idea en sí misma es informal.
≠