Al diseñar un algoritmo para un nuevo problema, si no puedo encontrar un algoritmo de tiempo polinómico después de un tiempo, podría intentar probar que es NP-hard en su lugar. Si tengo éxito, he explicado por qué no pude encontrar el algoritmo de tiempo polinómico. No es que sepa con certeza que P! = NP, es solo que esto es lo mejor que se puede hacer con el conocimiento actual, y de hecho el consenso es que P! = NP.
Del mismo modo, supongamos que he encontrado una solución de tiempo polinómico para algún problema, pero el tiempo de ejecución es . Después de mucho esfuerzo, no avanzo en mejorar esto. Entonces, en cambio, podría intentar probar que es 3SUM-hard en su lugar. Por lo general, este es un estado de cosas satisfactorio, no por mi creencia suprema de que 3SUM realmente requiere tiempo , sino porque este es el estado actual del arte, y muchas personas inteligentes han intentado mejorar y han fallado Entonces no es mi culpa que sea lo mejor que puedo hacer.Θ ( n 2 )
En tales casos, lo mejor que podemos hacer es un resultado de dureza, en lugar de un límite inferior real, ya que no tenemos límites inferiores superlineales para máquinas de Turing para problemas en NP.
¿Existe un conjunto uniforme de problemas que se pueden usar para todos los tiempos de ejecución polinomiales? Por ejemplo, si quiero demostrar que es poco probable que algún problema tenga un algoritmo mejor que , ¿hay algún problema X tal que pueda demostrar que es X-hard y dejarlo así?
Actualización : Esta pregunta originalmente pedía familias de problemas. Como no hay tantas familias de problemas, y esta pregunta ya ha recibido excelentes ejemplos de problemas difíciles individuales, estoy relajando la pregunta a cualquier problema que pueda usarse para resultados de dureza de tiempo polinomial. También estoy agregando una recompensa a esta pregunta para alentar más respuestas.