Nota: non ho ancora verificato attentamente la risposta e ci sono parti mancanti da scrivere, considerala una prima bozza.
Questa risposta è pensata principalmente per le persone che non sono ricercatori nella teoria della complessità o in campi correlati. Se sei un teorico della complessità e hai letto la risposta, per favore fammi sapere se noti qualche problema o hai un'idea per migliorare la risposta.
Dove puoi trovare le soluzioni rivendicate di P vs. NP
- C'è la pagina P-contro-NP che ha un elenco di tali affermazioni.
- Gli articoli che sostengono di risolvere la domanda vengono regolarmente pubblicati su arXiv .
Altre liste su come non risolvere P vs. NP
Lance Fortnow, quindi pensi di esserti accontentato di P verus NP , 2009
Scott Aaronson, Otto segni A Reclamato P ≠ NP Proof Is Wrong , 2010
Pagina Polymath per il documento di Deolalikar , in cui la sezione delle ulteriori letture contiene un bel elenco di riferimenti sul problema.
Come non avvicinarsi a P vs. NP
Consentitemi di discutere "come non avvicinarsi a P vs. NP" non nel senso di idee che non funzioneranno ma in un senso più generale. P vs. NP è un problema facile da dichiarare (vedi anche la mia risposta qui ):
NP = P: per ogni problema di decisione con un algoritmo di verifica del tempo polinomiale esiste un algoritmo di tempo polinomiale.
o equivalentemente
Esiste un algoritmo temporale polinomiale per SAT.
SAT può essere sostituito con qualsiasi altro problema NP-completo .
.
Spesso le persone semplificano e filosoficamente eccessivamente il problema ed esagerano l'importanza pratica del problema (come affermato sopra). Tali affermazioni sono spesso intese a dare intuizione, ma non sostituiscono in alcun modo l'effettiva affermazione matematica del problema.
L'efficienza teorica non è la stessa della fattibilità nella pratica.
Vorrei prima con esagerate conseguenze pratiche.
I. È possibile che P = NP ma non aiuti per nessun problema in pratica!
Supponiamo ad esempio che SAT sia in P ma l'algoritmo più veloce per il suo tempo di esecuzione è
. Questo algoritmo non è di utilità pratica.2264n65536+ 22128
II. È possibile che P NP e siamo in grado di risolvere in modo efficiente i problemi NP-completi .≠
Supponiamo ad esempio che SAT non sia in P ma abbia un algoritmo con tempo di esecuzione .nlg*lg*n
Per dare un input che renderebbe devi usare più elettroni di quelli che si pensa siano nell'universo. Quindi l'esponente è essenzialmente 2 .lg*n > 62
Il punto principale qui è che P è un modello semplice astratto di calcolo efficiente, la complessità nel caso peggiore è un modello semplice astratto di stima del costo di un calcolo, ecc. Tutte queste sono astrazioni, ma nessuno in pratica considererebbe un algoritmo come quello in (I) sopra come un algoritmo efficiente davvero. P è un bel modello astratto, ha delle belle proprietà, semplifica i problemi tecnici ed è utile. Tuttavia, come tutte le astrazioni matematiche, nasconde dettagli che in pratica potrebbero interessarci. Esistono vari modelli più raffinati, ma più complicato diventa il modello, meno bello sarebbe discuterne.
Ciò che le persone si preoccupano in pratica è calcolare una risposta al problema per i casi in cui si preoccupano di usare una quantità ragionevole di risorse. Ci sono attività dipendenti e dovrebbero essere prese in considerazione.
Cercare di trovare algoritmi migliori per casi pratici di problemi NP-difficili è uno sforzo interessante e degno. Esistono algoritmi euristici solutore SAT che vengono utilizzati nel settore e possono risolvere istanze pratiche di SAT con milioni di variabili. C'è anche un concorso internazionale SAT .
(Ma ci sono anche piccoli casi concreti in cui tutti questi algoritmi falliscono e falliscono piuttosto male, possiamo effettivamente dimostrare che tutti i solutori SAT moderni allo stato dell'arte impiegano tempo esponenziale per risolvere casi semplici come il principio propositivo di Pigeonhole .)
Tenere presente che la correttezza e la durata dei programmi non possono essere ottenute solo eseguendo il programma su istanze . Non importa quante volte provi, nessun importo è sufficiente. Ci sono infiniti ingressi possibili e devi mostrare la correttezza e l'efficienza (cioè il tempo di esecuzione è polinomiale) del programma per tutti loro. In breve, hai bisogno di prove matematiche di correttezza ed efficienza. Se non sai cos'è una prova matematica, allora dovresti prima imparare un po 'di matematica di base (leggi un libro di testo discreto matematica / combinatoria / teoria dei grafi, questi sono buoni argomenti per conoscere ciò che è considerato una prova matematica).
Fai anche attenzione alle altre affermazioni su P vs. NP e alle conseguenze delle sue risposte. Tali affermazioni si basano spesso su semplificazioni simili.
Ai teorici della complessità non interessa davvero una risposta a P vs. NP!
Ho esagerato un po '. Naturalmente ci preoccupiamo per una risposta a P vs. NP. Ma ci preoccupiamo in un contesto. P vs. NP è il nostro problema di punta ma non è l'obiettivo finale. È un problema facile da affermare, coinvolge molte idee fondamentali, è utile per spiegare il tipo di domande a cui siamo interessati a persone che non hanno familiarità con l'argomento. Ma non cerchiamo una risposta sì / no alla domanda.
Cerchiamo una migliore comprensione della natura di un calcolo efficiente . Riteniamo che la risoluzione della domanda arriverà con tale comprensione e questa è la vera ragione per cui ci preoccupiamo. Fa parte di un enorme corpus di ricerche. Se vuoi avere un assaggio di ciò che facciamo, guarda un buon libro di testo sulla teoria della complessità, ad esempio " Teoria della complessità: un approccio moderno " di Arora e Barak ( bozza ).
≠
In breve, dal punto di vista del teorico della complessità
P vs. NP non è un puzzle con una risposta Sì / No. Cerchiamo una risposta a P vs. NP perché pensiamo che verrà una migliore comprensione della natura di un calcolo efficiente. Una risposta senza un grande progresso nella nostra comprensione non è molto interessante.
Ci sono state troppe occasioni in cui i non esperti hanno rivendicato soluzioni per P vs. NP e quelle affermazioni in genere soffrono di problemi che non avrebbero fatto se avessero semplicemente letto un libro di testo standard sulla teoria della complessità.
Problemi comuni P = NP
Le affermazioni di P = NP sembrano essere più comuni. Penso che il seguente sia il tipo più comune. Qualcuno ha un'idea e scrive un programma e lo verifica in alcuni casi e pensa che sia un momento polinomiale e risolve correttamente un problema NP-completo. Come ho spiegato sopra, nessuna quantità di test mostrerà P = NP. P = NP ha bisogno di una prova matematica , non solo di un programma che sembra risolvere un problema NP completo in tempo polinomiale.
Questi tentativi in genere soffrono di uno dei due problemi:
I. l'algoritmo non è realmente un tempo polinomiale.
II. l'algoritmo non risolve correttamente tutte le istanze.
≠
[da scrivere]
Come verificare che l'algoritmo non non funziona davvero
Non puoi dimostrare che il tuo algoritmo funziona correttamente testando. Ma puoi dimostrare che non funziona correttamente testando! Quindi ecco come puoi assicurarti che il tuo algoritmo non sia corretto se sei disposto a fare un po 'di lavoro.
Innanzitutto, scrivi un programma per convertire istanze di SAT (nel formato CNF standard) nel problema NP-difficile che stai risolvendo. SAT è uno dei problemi NP-hard più studiati e la riduzione da altri problemi a SAT è in genere facile. In secondo luogo, prendi gli esempi con cui i solutori di SAT all'avanguardia lottano (ad esempio, prendi gli esempi dalla competizione SAT) e li alimentano con il tuo algoritmo e vedi come si comporta il tuo algoritmo. Prova istanze difficili conosciute come il principio propositivo di Pigeonhole (e non imbrogliare codificandole in modo rigido come casi speciali), istanze crittografiche (come RSA Factoring Challenges ), istanze casuali di k-SAT vicino alla soglia , ecc.
10 n2
Come controllare la tua idea algoritmica P = NP non può funzionare
Se lo fai, sarai abbastanza sicuro che il tuo algoritmo non funziona (se funziona meglio dei solutori SAT all'avanguardia, competi nella prossima competizione e molte persone sarebbero interessate a studiare il tuo algoritmo e le tue idee).
Ora sai che non funziona davvero, ma non è abbastanza. Vuoi sapere perché,
è il motivo per cui il mio algoritmo non funziona un piccolo problema che può essere risolto o c'è un motivo fondamentale per cui non può funzionare?
A volte il problema con l'algoritmo è semplice e si può identificare concettualmente ciò che era sbagliato. Il risultato migliore è che capisci il motivo per cui la tua idea non può funzionare. Spesso non è così, la tua idea non funziona ma non riesci a capire il perché. In tal caso, tenere presente:
capire perché alcune idee non possono funzionare può essere più difficile che risolvere P vs. NP!
Se riesci a formalizzare abbastanza la tua idea, potresti essere in grado di dimostrare i limiti di idee particolari (ad esempio, ci sono risultati che dicono che particolari formalizzazioni dell'algoritmo avido non possono risolvere i problemi NP-completi). Tuttavia, è ancora più difficile e non hai molte possibilità se non hai letto un manuale di teoria della complessità standard.
A volte non esiste nemmeno una chiara idea concettuale del perché l'algoritmo dovrebbe funzionare, ovvero si basa su alcune euristiche non ben comprese . Se non hai una chiara idea concettuale del perché il tuo algoritmo dovrebbe funzionare, potresti non avere molte possibilità di capire perché non funziona!
≠
≠
Problema 1: l'autore non conosce la definizione di P e NP, o peggio ancora non capisce cosa sia una prova matematica. Poiché l'autore non ha una formazione matematica di base, non capisce quando gli viene detto che ciò che sta presentando non è una prova (ad esempio, i passaggi non seguono da quelli precedenti).
Problema 2: l'autore confonde "non sappiamo come" con "impossibilità matematica". Ad esempio fanno varie assunzioni ingiustificate e alla domanda "perché questa affermazione è vera?" rispondono "come può essere falso?". Uno comune è presumere che qualsiasi programma che risolva il problema debba compiere passi particolari, ad esempio deve calcolare determinati valori intermedi, perché non riesce a pensare a un modo alternativo di risolvere il problema.
[essere completato]
≠
[da scrivere]
≠
Se un reclamo non soffre di questi problemi di base, respingerlo diventa più difficile. Al primo livello si può trovare un passo errato nell'argomento. La risposta tipica dell'autore è che posso ripararlo e questo può andare avanti e indietro. Simile alle soluzioni P = NP, è spesso molto difficile trovare un problema fondamentale con un'idea che può dimostrare che non può funzionare, in particolare quando l'idea stessa è informale.
≠