Come non risolvere P = NP?


96

Ci sono molti tentativi di provare o , e naturalmente molte persone pensano alla domanda, avendo idee per provare entrambe le direzioni.P=NPPNP

So che ci sono approcci che hanno dimostrato di non funzionare, e probabilmente ce ne sono altri che hanno una storia di fallimenti. Sembrano esserci anche le cosiddette barriere che molti tentativi di prova non riescono a superare.

Vogliamo evitare di indagare su vicoli ciechi, quindi quali sono?


16
Penso che sia meglio essere wiki della comunità (perché non esiste una risposta unica a questa domanda, è troppo ampia).

6
@SaeedAmiri No. Il wiki della community era un alibi per consentire domande che non erano adatte alla piattaforma Stack Exchange, ma questo non è più fatto .
Gilles,

4
Nota del moderatore: questa domanda è più ampia di una normale domanda di scambio di stack, ma stiamo cercando di creare una coppia canonica di domande e risposte. Se ritieni che questa domanda non debba esistere nella sua forma attuale, ti preghiamo di discuterne sul nostro meta sito .
Gilles,

per una domanda simile dal lato opposto / costruttivo vedere come si possono risolvere teorie e indagini in informatica?
vzn

4
Risposta Wag: arXiv è un tesoro di modi per non farlo.
Pseudonimo il

Risposte:


76

Direi che le barriere più note alla risoluzione di sonoP=NP

  1. Relativizzazione (come menzionato da Ran G.)
  2. Prove naturali - in base a determinate ipotesi crittografiche, Rudich e Razborov hanno dimostrato che non possiamo provare usando una classe di prove chiamate prove naturali.PNP
  3. Algebrizzazione - di Scott Aaronson e Avi Wigderson. Dimostrano che le prove che l'algebrize non può separare e N PPNP

Un altro con cui ho familiarità è il risultato che nessuna formulazione di LP può risolvere il TSP (è stato dimostrato da Yannakakis per LP simmetrici e recentemente è stato esteso agli LP generali). Ecco un post sul blog che discute il risultato.


4
Link pertinenti: sugli ostacoli in generale e sugli esempi di giocattoli . Inoltre, dovresti stare attento con la tua ultima frase, penso che sarebbe saggio includere un link al post del blog che spieghi perché il TSP non realizzabile dal risultato generale degli LP non dimostra , poiché le persone potrebbero essere confuse da il fatto che LP sia P- completo. PNPP
Artem Kaznatcheev,

1
Se vuoi migliorare la risposta (non è del tutto pronta per l'accettazione così com'è), ti preghiamo di aggiungere brevi spiegazioni e collegamenti ai dettagli in modo che il curioso lettore sappia di cosa stai parlando.
Raffaello

57

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.

10n2

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.


Per quanto mi piaccia la pagina P-versus-NP, trovo fastidioso che non tenga traccia di quali prove sono state ritirate dai loro autori. Per alcuni dei collegamenti di arXiv, trovi esplicite note "questo documento è stato ritirato" su arXiv. Sono abbastanza sicuro che ci siano più prove ritirate che solo i documenti arXiv con avviso esplicito. OK, sono consapevole che le prove ritirate non dovrebbero essere sopravvalutate, perché ritirare un "tentativo di prova precedente" non implica che gli stessi autori non riproveranno più tardi. Ma tacere sui tentativi di prova ritirati dà ancora un'impressione distorta.
Thomas Klimpel,

@thomas pochi degli autori "crank" mai "ritirano" le loro carte. il punto non detto dell'elenco woegorgi è che la sua qualità nettamente inferiore rispetto alle carte arxiv. ma, d'accordo, vorrei che woegorgi potesse aggiungere alcune informazioni aggiuntive e che ci potesse essere un po 'più flessibile nella sua modifica. per esempio, non ha inserito il mio profilo P vs NP nell'elenco anche dopo averlo inviato per e-mail, anche se recentemente ha pubblicato un altro elemento sulla prova fukuyama relativo a una lunga chat cstheory.se.
vzn

1
Apprezzo che lo stia rivisitando! Sembra che dopo aver prematuramente premiato la grazia alla persona sbagliata. ;) Nota che puoi usare stackedit.io per preparare un post nel tempo. In attesa del resto del post!
Raffaello

34

Forse la tecnica più comune che non può essere utilizzata è la relativizzazione , cioè avere una MT con accesso all'oracolo.

L'impossibilità segue da un articolo di Theodore Baker, John Gill, Robert Solovay che mostrano l'esistenza di due oracoli (lingue), e B tali che UNBPUN=NPUNPBNPB

Quindi, se qualche prova per, diciamo, PNPOPONPOUN

In particolare, ciò significa che la diagonalizzazione non può essere utilizzata per dimostrareP=?NP


1
Giusto per correggere completamente, qui la diagonalizzazione significa diretta semplice diagonalizzazione. Vedi questa domanda
Kaveh

1
Quindi la relativizzazione non è la tecnica della dimostrazione, ma l'effetto che rompe una dimostrazione? Puoi dare / link ad un esempio di una prova che può essere relativizzata?
Raffaello

2
sì, la relativizzazione non è una tecnica di prova, è una proprietà di una prova (non essere formale qui tra l'altro). se la prova funziona invariata quando tutte le macchine di turing vengono sostituite con macchine oracolari, allora la prova si relativizza. puoi convincerti che la prova del teorema della gerarchia temporale si relativizza in questo senso, per esempio.
Sasho Nikolov

10

Suggerirei di leggere questo post sul blog di Lance Fortnow :

  1. Quindi pensi di aver risolto P verus NP Ti sbagli. Capiscilo. A volte puoi ancora salvare qualcosa di interessante dalla tua prova imperfetta.
  2. Credi che la prova sia corretta. La tua convinzione è errata. Torna al passaggio 1.
  3. Stai facendo ipotesi o scorciatoie, anche apparentemente piccole e ovvie? Stai usando parole come "chiaramente", "ovviamente", "facile da vedere", "dovrebbe", "deve" o "probabilmente"? Stai sostenendo di risolvere forse la domanda più importante in tutta la matematica. Non puoi fare ipotesi. Torna al passaggio 1.
  4. nK (n = lunghezza di input), M non riesca a calcolare correttamente L. L è un insieme di stringhe. Nient'altro. L non può dipendere da M o k. M può essere qualsiasi programma che elabora stringhe di bit. M può agire in modo completamente diverso da quello che ci si aspetterebbe dal modo in cui è stata definita L. Tornare al passaggio 1.
  5. Invia il tuo documento a un archivio online. Forse alcune persone ti dicono cosa manca o che non va nel tuo documento. Questo dovrebbe farti andare al passaggio 1. Ma invece apporti alcune modifiche insignificanti alla tua carta e ripubblicare.
  6. Alla fine le persone ignorano il tuo documento. Ti chiedi perché non stai ottenendo fama e fortuna.
  7. Invia il tuo documento a un diario.
  8. Il documento è stato respinto. Se sei intelligente torneresti al passaggio 1. Ma se fossi intelligente non saresti mai arrivato al passaggio 7.
  9. Ti lamenti all'editore che l'editor non capisca la prova o che sia facilmente risolvibile. Sei scioccato da un rispettabile editore o diario che tratterà il tuo documento in questo modo.
  10. Si reinvia il documento, si appella, si provano tutte le altre riviste senza alcun risultato.
  11. Sei convinto che "lo stabilimento" stia sopprimendo di proposito il tuo documento perché il nostro campo diventerebbe molto meno interessante se risolviamo il problema P contro NP, quindi dobbiamo tenerlo aperto a tutti i costi.
  12. Se ti dicessi diversamente mi crederesti?

7
La domanda chiede "approcci che hanno dimostrato di non funzionare" e approcci "che hanno una storia di fallimento", e questa risposta non menziona alcun approccio.
Tsuyoshi Ito,

6
Il mio punto è che poiché il post sul blog non risponde affatto alla domanda, è inutile copiarlo e incollarlo.
Tsuyoshi Ito,

7
Questo in effetti non risponde alla domanda. Il post sul blog è un elenco accennato di passaggi il tipico P = NP? la pedivella passa attraverso. Mentre divertente, questo non mi fornisce teorie specifiche che si sono dimostrate incapaci di separare (o collassare) P e NP.
Raffaello

4
Cosa ne pensi di questo? Questa domanda pone degli ostacoli alla dimostrazione di P! = NP. Le barriere in questa risposta (come indicato nei commenti) sono "assumere qualcosa", "cattiva interpretazione", "dire qualcosa è chiaro", "credere in qualcosa". Queste barriere sono troppo generiche in quanto sono barriere per dimostrare qualsiasi cosa e non specificamente barriere per dimostrare P! = NP.
Tyson Williams,

1
i commenti mentre sono validi mancano tutti un punto di base. il blog è stato scritto da Lance Fortnow, un esperto teorico della complessità e autorità mondiale sull'argomento; è appena uscito con un nuovo libro su P vs NP Golden Ticket . quindi parla fondamentalmente per esperienza personale.
vzn

2

ecco un angolo alquanto oscuro / profondo / difficile / insider / riferimento / torsione relativo agli approcci attraverso circuiti risalenti agli anni '80 originariamente mi hanno indicato anni fa da Luca Trevisan altrove nel cyberspazio, e anche reiterato da Stasys Jukna, autore di un eccellente riferimento vicino all'argomento, complessità delle funzioni booleane: anticipi e frontiere (algoritmi e combinatoria, vol. 27 ).

si può vedere una precedente tendenza in alcuni dei pensieri di Razborov che alla fine portò alla carta Natural Proofs (la cosiddetta "naturalizzazione"). ref [273] è molto tecnico e difficile e non sembra essere citato, costruito / ampliato o reiterato molto dai successivi libri / libri, sebbene Natural Proofs possa essere visto come una generalizzazione successiva. l'estratto è di John E Savages eccellente ref Modelli di calcolo p457

Ω(n2)n

[270] AA Razborov, "Limiti inferiori sulla complessità monotona di alcune funzioni booleane", Dokl. Akad. Nauk SSSR (Soviet Math. Dokl.) 281 (1985), 798–801, (in russo); Traduzione inglese in matematica sovietica. Dokl. 31 (1985), 354–357

[271] AA Razborov, "Un limite inferiore sulla complessità della rete monotona del permanente logico", Mat. Zametki 37 (1985), 887-900, (in russo); Traduzione inglese in matematica. Note 37 (6) (1985), 485–493.

[273] AA Razborov, "Sul metodo delle approssimazioni", proc. 21 ° Ann. ACM Symp. Theory of Computing (1989), 167–176.


2
Non vedo come questo risponda alla domanda "come non provare P? = NP". In questo momento, sembra più una specie di speculazione sui pensieri di qualcuno.
Juho,


2
Certo, sto solo suggerendo di rendere tutto questo esplicito. La complessità del circuito non è nemmeno materiale di livello universitario, quindi un certo background è giustificato. È giusto aspettarsi che il lettore non sia un esperto di teoria della complessità.
Juho,

@juho ok. una volta ho visto il libro Savage [che è molto "incentrato sui circuiti"] usato in una classe di livello universitario, mi ha sorpreso anche. ha concordato il suo materiale avanzato da cui il testo della prima frase. per quanto riguarda la "speculazione sui pensieri", non c'è nulla, tranne citando i propri pensieri di Razborov come scritti / registrati nei suoi documenti.
vzn

1
e a proposito, nel complesso questa è una domanda molto avanzata (non proprio livello universitario) e altre risposte sono avanzate e generalmente al di fuori del livello universitario.
vzn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.