Dimostrare P ≠ NP sarebbe più difficile che provare P = NP?


20

Considera due possibilità per il problema P vs. NP: P = NP e P NP.

Lascia che Q sia uno dei noti problemi NP-difficili. Per dimostrare P = NP, dobbiamo progettare un singolo algoritmo temporale polinomiale A per Q e dimostrare che A risolve correttamente Q.

Per dimostrare P NP, dobbiamo dimostrare che nessun algoritmo temporale polinomiale risolve Q. In altre parole, dobbiamo escludere tutti gli algoritmi temporali polinomiali.

Ho sentito dire che questo rende il secondo compito più difficile (supponendo che sia davvero vero).

C'è un motivo per pensare che provare P = NP (supponendo che P = NP) sarebbe più facile che provare P NP (supponendo che P NP)?


31
Questa domanda è sbagliata. Dal momento che solo una delle affermazioni può essere vera, è impossibile dimostrarlo. L'altro potrebbe essere possibile provare, e in tal caso sarebbe più facile dimostrarlo di quello falso. Ergo, non ho idea del tipo di risposta che stai cercando. Voti della comunità, per favore! È possibile rispondere a questa domanda?
Raffaello

10
@Raphael Sono in disaccordo. Potresti interpretare la domanda di OP come "Se P = NP fosse vero, sarebbe più facile provare che provare P ≠ NP se P ≠ NP fosse vero?" Non credo che l'OP abbia seriamente inteso che fosse interpretato come un suggerimento che entrambi dovevano essere veri.
L'Anatema

3
FWIW, mi sembra che a) @ L'interpretazione di TheAnathema della domanda sia corretta eb) è una domanda significativa. In altre parole: se P = NP, e viene trovata una prova, quella prova sarà probabilmente sotto forma di un algoritmo del tempo polinomiale per un problema NP completo. D'altra parte, se iniziamo dal presupposto che P ≠ NP, quali tipi di tecniche potremmo utilizzare per trovare una prova e quale forma potrebbe assumere tale prova?
JohannesD,


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Gilles 'SO- smetti di essere malvagio' il

Risposte:


25

Come spiega Raphael, questa domanda non è corretta, poiché al massimo uno tra P = NP e P ≠ NP dovrebbe essere provabile. Tuttavia, una domanda simile si pone nell'informatica teorica sotto diverse forme, la più evidente delle quali è nel campo degli algoritmi di approssimazione .

Dato un problema di ottimizzazione NP-difficile (diciamo, massimizzazione), possiamo chiederci quanto possiamo approssimarlo. Dimostrare un limite superiore sulla possibile approssimazione è simile a P = NP, mentre dimostrare un limite inferiore sulla possibile approssimazione è simile a P ≠ NP. Il primo è molto più semplice del secondo. In effetti, per dimostrare un limite superiore tutto ciò che si deve fare è elaborare un algoritmo di approssimazione e analizzarlo. Al contrario, tutti i limiti inferiori noti sono condizionati: sono validi solo se P ≠ NP (anzi, se P = NP allora ogni problema di ottimizzazione NP-hard diventerebbe risolvibile). Per dimostrare questi limiti inferiori, mostriamo che se potessimo approssimare troppo bene il problema, otterremmo un algoritmo temporale polinomiale per qualche problema NP-difficile. Di solito ciò avviene tramite l'intricato macchinario tecnico del teorema del PCP. Questo campo, noto come durezza di approssimazione , può essere affrontato solo da specialisti ed è tecnico più impegnativo della maggior parte degli algoritmi di approssimazione. Quindi, almeno in questo caso, P = NP è effettivamente più semplice di P ≠ NP.


14
Potresti interpretare la domanda di OP come "Se P = NP fosse vero, sarebbe più facile provare che provare P ≠ NP se P ≠ NP fosse vero?" Non credo che l'OP abbia seriamente pensato che fosse interpretato come vero.
L'Anatema

6
@TheAnathema Immagino che si debba interpretare la domanda in quel modo. Ma è ancora piuttosto mal posto perché una delle opzioni è necessariamente controfattuale. Come puoi confrontare quel controfattuale con la difficoltà di provare qualcosa che è vero?
David Richerby,

@David, l'affermazione sulla difficoltà di dimostrare P NP rispetto a P = NP è qualcosa che ho dagli esperti diverse volte. Chiedere se si tratta di un reclamo ragionevole è una domanda valida. Valutare la difficoltà delle situazioni controfattuali (quando non sono note per essere così) è in realtà comune. Prendi ad esempio qualcuno che chiede difficoltà a provare P NP. Se P = NP è controfattuale. =
Kaveh,

9

Non abbiamo escluso la possibilità di una semplice prova che P = NP. Se qualcuno domani presenta un algoritmo che risolve un problema NP completo in P time, il mondo cambia.

D'altra parte, noi abbiamo escluso la possibilità di una semplice prova che P! = NP. Le nostre tecniche di dimostrazione tipiche per dimostrare che due diverse classi di complessità sono state formalmente dimostrate insufficienti. Tre di queste tecniche sono conosciute come "aritmetizzazione", "prove naturali" e la categoria di prove chiamate "relativizzanti" (quelle a cui non importa quali oracoli sono in uso). Si può dimostrare che qualsiasi tecnica di prova che rientra in una di queste 3 categorie non può dimostrare P! = NP.

In effetti, ci sono prove evidenti che la dimostrazione di P! = NP richiede nuovi tipi di prove (nuove tecniche con proprietà diverse), non solo una nuova applicazione di tecniche di prova ben note.


Ora, si potrebbe scoprire che P = NP, mentre non esiste un semplice algoritmo per verificare in P che risolva un problema NP completo, e che sono necessarie nuove tecniche di prova per dimostrare P = NP. (Se P = NP, conosciamo già algoritmi che sono tecnicamente in P che risolvono problemi NP-difficili, in modo divertente. Non sono pratici da eseguire, poiché il loro fattore costante è grande.)

Fondamentalmente, sappiamo molto su ciò che non possiamo usare per dimostrare P! = NP, mentre apparentemente sappiamo poco su ciò che non possiamo usare per dimostrare P = NP.


Tutti gli ostacoli alle prove semplici di applicano alle prove di P = N P con uguale forza. Se avessi un algoritmo, allora la prova che P = N P sarebbe la prova che l'algoritmo era (i) corretto e (ii) tempo polinomiale, e quella prova dovrebbe ancora discutere su quali fatti sul non determinismo l'algoritmo sta usando per la sua efficiente simulazione deterministica che non è vera rispetto a un oracolo (algebrico) e come sconfigge la barriera delle prove naturali. PNPP=NPP=NP
Lieuwe Vinkhuijzen,

8

Bene, fondamentalmente hai l'idea. Generalmente pensiamo che P! = NP ma non abbiamo idea di come dimostreremmo che queste cose non sono uguali.

Al contrario, se P = NP, penseresti che avremmo trovato un algoritmo per risolvere una delle dozzine di problemi NP completi.

Questi sono argomenti molto ondulati, ma in un paio di frasi descrivono la cultura tra gli informatici.

Se dimostrare che P! = NP è "più difficile" ovviamente dipende da quale sia la verità (escludendo i risultati meta-matematici?) E che, ovviamente, non lo sappiamo.


5

Ci sono alcuni esperti che ritengono che dimostrare P NP sia più difficile che provare P = NP nel senso del tempo che pensano che ci vorrà per risolvere la questione P vs. NP. Ma questa è principalmente un'intuizione basata sulla sensazione che sia più facile progettare algoritmi per problemi piuttosto che provare che non esistono algoritmi (efficienti). Generalmente non abbiamo avuto molto successo nel dimostrare limiti inferiori per i problemi. Non possiamo nemmeno escludere un algoritmo di tempo lineare per SAT. Non possiamo escludere che non esiste un algoritmo di spazio per i log per SAT. Non possiamo nemmeno dimostrare che non esiste un circuito booleano di dimensioni polinomiali di profondità costante con , , ¬ e¬ porte che non sono in grado di risolvere il SAT (in parole povere è possibile che esista un algoritmo parallelo nel tempo costante con un numero polinomiale di processori che risolve il SAT e ciascun processo calcoli solo una di queste porte). I migliori limiti inferiori che abbiamo per le macchine di Turing che risolvono SAT non possono nemmeno mostrare che non esiste un algoritmo il cui tempo di esecuzione moltiplicato per lo spazio che utilizza sia n 1,9 . Posso continuare un po 'sullo stato piuttosto imbarazzante di dimostrare limiti inferiori (ma tieni presente che abbiamo anche risultati barriera che spiegano perché è così difficile dimostrare limiti inferiori). Alcuni esperti ritengono che il programma GCT di Ketan Mulmuley sia il più propenso a risolvere P vs. NP e lo stesso Mulmuley ha ripetutamente affermato di ritenere che probabilmente ci vorranno più di cento anni per arrivarci.mod6n1.9

Tuttavia, ci sono stati alcuni lavori recenti di Ryan Williams e altri che mostrano che ci sono collegamenti intrinseci tra la dimostrazione di limiti inferiori e la ricerca di algoritmi. Ad esempio, ha dimostrato che un algoritmo leggermente migliore dell'algoritmo a forza bruta per un particolare problema SAT limitato implica limiti inferiori del circuito e quindi ha progettato un tale algoritmo. Quindi penso che le persone siano un po 'meno pessimiste e inoltre non sembrano sviluppare algoritmi e dimostrare limiti inferiori separati come la gente pensava di essere.

πφπφe l'algoritmo restituisce sì o no. Puoi pensare a qualsiasi correttore di prove in questo modo. Puoi anche pensare alle prove in un sistema matematico come ZFC in quanto tale. Il processo di verifica stesso può essere eseguito in tempi polinomiali delle dimensioni della dimostrazione perché è un compito sintattico.

φφφ265536 LKnel senso che è possibile determinare le righe precedenti dalla riga corrente nella prova e nella regola. Un'eccezione importante a questo è la regola del taglio. È importante perché anche se non abbiamo bisogno della regola del taglio per le dichiarazioni di prova, può ridurre considerevolmente le dimensioni della prova più breve. Tuttavia la regola di taglio non è deterministica: esiste una formula di taglio che dobbiamo indovinare. Puoi pensare alla regola del taglio come a dimostrare i lemmi e usarli. La formula del taglio è come un lemma. Ma quale lemma dovremmo dimostrare che ci aiuterà? Questa è la parte difficile. Spesso un risultato è dimostrato in matematica trovando un buon lemma. Inoltre, quando usi risultati precedentemente provati, stai essenzialmente usando la regola di taglio. Un altro componente importante nelle dichiarazioni di prova sono le definizioni. Spesso definiamo un nuovo concetto, quindi dimostriamo le sue affermazioni, e infine applicarlo nel nostro caso particolare. L'uso delle definizioni riduce le dimensioni delle formule (prova ad espandere alcune formule matematiche nel linguaggio teorico del set puro espandendo le definizioni per avere un'idea di quanto siano importanti le definizioni). Ancora quali nuove definizioni dovremmo usare? Non lo sappiamo. Questo mi porta al terzo significato di un'affermazione difficile da provare. Un'affermazione può essere difficile da dimostrare perché hai bisogno di forti assiomi. Prendi ad es Un'affermazione può essere difficile da dimostrare perché hai bisogno di forti assiomi. Prendi ad es Un'affermazione può essere difficile da dimostrare perché hai bisogno di forti assiomi. Prendi ad esCH . Non può essere provato in ZFC né può essere confutato in ZFC. Questo è un caso estremo ma ciò accade più spesso di quanto si pensi. Ad esempio, abbiamo bisogno di grandi assiomi cardinali (per poter lavorare negli universi di Grothendieck ) per dimostrare FLT o possiamo dimostrarlo in una teoria molto più debole come la PA ? Questo è un altro concetto relativo alla difficoltà di provare le dichiarazioni.


Quando parli di definire la domanda "più religiosamente", presumo che intendi "più rigorosamente"? :-)
David Richerby

2
@ David, sì, a volte l'auto-correzione lo fa. :)
Kaveh,

4

Penso che la domanda possa essere ridotta a: è più facile provare che qualcosa esiste o provare che qualcosa non esiste.

L'argomento a favore della prova dell'esistenza di qualcosa è che è facile costruire cose che potrebbero soddisfare i requisiti ed è anche facile controllare se effettivamente li soddisfano.

In alcuni casi questo è vero: se vuoi trovare la radice di un polinomio, è facile costruire numeri ed è facile controllare se sono radici.

Il problema, ovviamente, è che devi essere fortunato. Potresti essere in grado di ridurre lo spazio di ricerca, ad esempio dimostrando che deve essere un multiplo di 5 o tra 1 e 10; ma, a meno che non lo si limiti a un insieme finito di numeri (nel qual caso non si sta realmente utilizzando il metodo "indovina e convalida"), non si ha un metodo per risolvere il problema: si ha solo un metodo che, supponendo sei estremamente fortunato, potresti generare una soluzione.

Ma se lo vuoi, è altrettanto facile provare che qualcosa non esiste! Genera testi che potrebbero essere possibili soluzioni e verifica se effettivamente lo sono.

Pertanto, avere un metodo che potrebbe fornire la soluzione per pura fortuna non significa che provare l'esistenza di qualcosa sia più facile.

Ora, è generalmente più facile provare che esiste qualcosa con qualche altro metodo? Dipende dal problema reale perché altrimenti provare che qualcosa non esiste sarebbe ridotto a provare che esiste una prova che non esiste. E temo di non poterlo misurare, dato che non è mai esistito qualcosa che sia dimostrato e non esistere, così possiamo (tentare di) misurare la difficoltà della prova.


1
Se quel "qualcosa" esiste, è più facile dimostrarlo (banalmente, non puoi provare che non esiste; ciò non significa che non sia diabolicamente difficile trovare tale prova). Stesso ragionamento al contrario. Come dicono i commenti, la domanda stessa non ha senso.
vonbrand,

@vonbrand non sto dicendo for any X: is it easier to prove that X exists or to prove that X does not exist , sto dicendo che for any X,Y: is it easier to prove that X exists or to prove that Y does not exist.cioè se E l'insieme di prove che dimostrano frasi della forma 'X esiste' e NE l'insieme di prove che dimostrano frasi della forma 'Y non esiste', e d ( P) la difficoltà della dimostrazione, è vero che d (X) <d (Y) dove X in E e Y in NE.
Thanos Tintinidis,

d(X)XXX
vonbrand,

@vonbrand yes; inoltre, sto sostenendo che non puoi usare il metodo di OP (continua a generare potenziali soluzioni fino a quando non ne trovi una) come argomento per suggerire che dimostrare l'esistenza è più facile che provare la non esistenza in quanto puoi trasformare la trasformazione dell'istruzione S1 di non esistenza a una dichiarazione S2 dell'esistenza della prova della dichiarazione S1. Anche se sto iniziando a dubitare del valore di questo
Thanos Tintinidis,


-2

Credo che sia impossibile dimostrare P <> NP, perché si dovrebbero escludere tutti gli algoritmi che potrebbero dimostrare P = NP. Potrebbe esserci un numero infinito di questi possibili. Non c'è modo di confutare l'infinito, quindi non è possibile. D'altra parte, basterebbe un singolo algoritmo per provare P = NP, se è così. Pertanto, sia P = NP che qualcuno dimostrerà, o non lo sapremo mai.


Benvenuti in Informatica ! Credi o puoi provare che non è dimostrabile? Penso che la risposta di Yakk faccia luce sull'argomento.
Evil

2
"Non c'è modo di confutare l'infinito" La gente esclude continuamente infinite possibilità in matematica; non dobbiamo necessariamente controllare ognuno a mano per sapere che nessuno funziona. Il tuo "argomento" implicherebbe che non possiamo mai separare affatto le classi di complessità, il che è una sciocchezza.
Noah Schweber,
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.