Ao projetar um algoritmo para um novo problema, se não conseguir encontrar um algoritmo de tempo polinomial depois de um tempo, talvez eu tente provar que é NP-difícil. Se for bem-sucedido, expliquei por que não consegui encontrar o algoritmo de tempo polinomial. Não é que eu tenha certeza de que P! = NP, é apenas que isso é o melhor que pode ser feito com o conhecimento atual e, de fato, o consenso é que P! = NP.
Da mesma forma, digamos que encontrei uma solução em tempo polinomial para algum problema, mas o tempo de execução é . Depois de muito esforço, não faço progressos para melhorar isso. Então, em vez disso, posso tentar provar que é 3SUM-difícil. Isso geralmente é um estado de coisas satisfatório, não por causa da minha suprema crença de que o 3SUM realmente exige tempo, mas porque esse é o estado da arte atual, e muitas pessoas inteligentes tentaram melhorar e falharam. Portanto, não é minha culpa que seja o melhor que posso fazer.Θ ( n 2 )
Nesses casos, o melhor que podemos fazer é um resultado de dureza, em vez de um limite inferior real, pois não temos limites inferiores super-lineares para Turing Machines para problemas em NP.
Existe um conjunto uniforme de problemas que pode ser usado para todos os tempos de execução polinomiais? Por exemplo, se eu quiser provar que é improvável que algum problema tenha um algoritmo melhor que , existe algum problema X que eu possa mostrar que é X-difícil e deixar assim?
Atualização : Esta pergunta originalmente pedia famílias de problemas. Como não existem muitas famílias de problemas e essa pergunta já recebeu excelentes exemplos de problemas físicos individuais, estou relaxando a questão para qualquer problema que possa ser usado para resultados de dureza em tempo polinomial. Também estou adicionando uma recompensa a esta pergunta para incentivar mais respostas.