P vs. NP, tecnicamente vs. moralmente
Come diceva Yuval, è possibile che P = NP sia tecnicamente vero ma moralmente falso. P = NP è moralmente vero (anche se non necessariamente tecnicamente) se esiste un algoritmo deterministico veloce (diciamo , o forse anche con piccole costanti, niente di simile ) che risolve uno dei famosi problemi NP completi come SAT. IIRC, Russell Impagliazzo una volta disse che avrebbe considerato il problema P vs. NP sostanzialmente risolto se qualcuno mostrasse che SAT può essere risolto in tempo .O(n2)O(nlg∗n)265536+21024n256O(nlgn)
Quindi cosa succede se P = NP è moralmente vero?
Questo ci riporta al motivo per cui NP è una classe di problemi così interessante. L'intuizione in generale è che spesso vogliamo trovare oggetti di dimensioni ragionevoli (formalizzati come dimensione polinomiale) che contengano una proprietà e la proprietà sia facile da verificare (formalizzata come calcolabile in tempo polinomiale). Questa classe di problemi comprende quasi tutti i problemi a cui siamo interessati. Per andare oltre devi pensare alle interazioni tra giocatori come i giochi. Il numero di problemi naturali interessanti che non si trovano in NP (o PH ) è molto piccolo rispetto ai problemi NP naturali interessanti . Se P = NP è moralmenteQQQvero, allora tutti questi problemi possono essere risolti molto velocemente. Solo per fare un esempio, puoi imparare i pesi migliori per modelli di apprendimento automatico molto complicati. È possibile rompere i protocolli di crittografia.
Confronto con il caso in cui P NP è moralmente vero≠
Con P NP è moralmente vero, intendo che non possiamo risolvere il SAT (o uno qualsiasi degli altri famosi problemi NP-completi) molto più velocemente della forza bruta, quindi questi problemi non possono essere risolti in pratica per input generali anche di dimensioni di input piuttosto piccole di dire 100.≠
P NP è moralmente vero significa che non possiamo risolvere in pratica i problemi NP-hard?≠
Anche se P NP è moralmente vero, è ancora possibile che per alcuni di questi problemi non siamo interessati a input generali e nel caso peggiore, ma a una classe / distribuzione di input che può essere risolta in modo efficiente. Ad esempio può succedere che la risoluzione di SAT nel caso valga la pena esponenziale, ma in pratica possiamo già risolvere SAT su molte classi interessanti
come la verifica del software, la verifica dell'hardware, ecc. Molto più velocemente.≠
Questo è in qualche modo simile alla risoluzione di un problema più semplice, ad esempio il TSP non può nemmeno essere approssimato in modo efficace se P NP è moralmente vero, tuttavia possiamo già approssimare il caso speciale di TSP sui grafici euclidei.≠
Se sai di voler risolvere un problema NP completo non su input generali ma su input con proprietà particolari, non devi preoccuparti del problema generale. Hai solo bisogno di risolvere il problema più semplice. Sfortunatamente spesso non è facile determinare quale tipo di input ti interessa in pratica.
Tuttavia l'euristica può funzionare sorprendentemente bene nella pratica, come vediamo con la programmazione SAT o Integer o Machine Learning. (L' apprendimento PAC utilizzando il modello molto semplice di 3-DNF è intrattabile se NP RP , e molti esperti pensano che RP = P).≠