Quando si progetta un algoritmo per un nuovo problema, se non riesco a trovare un algoritmo temporale polinomiale dopo un po ', potrei provare a dimostrare che è NP-difficile. Se ci riesco, ho spiegato perché non sono riuscito a trovare l'algoritmo del tempo polinomiale. Non è che io sappia per certo che P! = NP, è solo che questo è il meglio che si può fare con le conoscenze attuali, e in effetti il consenso è che P! = NP.
Allo stesso modo, supponiamo di aver trovato una soluzione in tempo polinomiale per qualche problema, ma il tempo di esecuzione è . Dopo molti sforzi, non faccio progressi nel miglioramento. Quindi, invece, potrei provare a dimostrare che è 3SUM-difficile invece. Questo di solito è uno stato soddisfacente, non a causa della mia suprema convinzione che 3SUM richiede davvero tempo , ma perché questo è lo stato dell'arte attuale, e molte persone intelligenti hanno cercato di migliorare e hanno fallito. Quindi non è colpa mia se è il meglio che posso fare.Θ ( n 2 )
In questi casi, il meglio che possiamo fare è un risultato di durezza, al posto di un limite inferiore effettivo, poiché non abbiamo limiti inferiori super-lineari per le macchine di Turing per problemi in NP.
Esiste una serie uniforme di problemi che possono essere utilizzati per tutti i tempi di esecuzione polinomiali? Ad esempio, se voglio dimostrare che è improbabile che qualche problema abbia un algoritmo migliore di , c'è qualche problema X tale che posso mostrare che è X-hard e lasciarlo a quello?
Aggiornamento : questa domanda originariamente chiedeva famiglie di problemi. Poiché non ci sono molte famiglie di problemi, e questa domanda ha già ricevuto eccellenti esempi di singoli problemi difficili, sto rilassando la domanda a qualsiasi problema che può essere utilizzato per i risultati della durezza del tempo polinomiale. Sto anche aggiungendo una generosità a questa domanda per incoraggiare più risposte.