Creo que tengo una incomprensión básica en la definición de un problema de decisión.
Es generalizada la opinión de que una prueba de que P=NP rompería toda la moderna criptografía, por ejemplo:-
- http://security.stackexchange.com/questions/12802/how-will-security-need-to-be-changed-if-p-np
- http://cacm.acm.org/magazines/2009/9/38904-the-status-of-the-p-versus-np-problem/fulltext
No estoy seguro de entender por qué.
Por ejemplo, 3-SAT es NP-Completo. Así que si hemos tenido un algoritmo que podría decidir conste o unsatisfiable en el polinomio tiempo, podríamos probar que P=NP. La correcta?
Eso no significa que necesitamos un algoritmo que puede encontrar una solución que satisfaga a la entrada, la única que puede decidir si desea o no existe una solución, ¿correcto?
O, de manera equivalente, el uso de claves Diffie-Hellman exchange (citado de wikipedia porque no tengo suficiente rep de publicar más de 2 enlaces):-
- Alice y Bob están de acuerdo para utilizar un número primo p y base de g
- Alice elige un secreto entero de una, luego se envía a Bob A = g^un mod p
- Bob elige un secreto entero b, a continuación, envía a Alice B = g^b mod p
- Alice calcula s = B^un mod p
- Bob calcula s = A^b mod p
- Alice y Bob, ahora comparten s.
Claramente si Eva podría calcular a y b a partir de a y B, que sería problemático, pero una prueba de que P=NP sería sólo garantiza la existencia de un algoritmo que dados a, B, g, y p pueden decidir si o no a y b existen tales que A^b mod p = B^un mod p. Sería tan problemático?
Para expresar mi pregunta más general:-
Debe un algoritmo que decide un problema en NP también ser capaz de construir una solución para ese problema que luego pueden ser verificados en el polinomio de tiempo?
Sería un algoritmo que decide (pero no construir una "solución") NP-completos problema en el polinomio de tiempo será suficiente para demostrar que P=NP?
Sería tal prueba tiene ningún impacto en la criptografía?
O he entendido mal algo básico?