Che cos'è "P = NP?", E perché è una domanda così famosa? [chiuso]


234

La domanda se P = NP sia forse il più famoso in tutta l'Informatica. Cosa significa? E perché è così interessante?

Oh, e per ulteriore credito, si prega di inviare una prova della verità o della falsità della dichiarazione. :)


11
Come ben definito da Scott Aaronson, MIT "Se P = NP, il mondo sarebbe un posto profondamente diverso da quello che di solito supponiamo che sia. Non ci sarebbe alcun valore speciale in" salti creativi ", nessun divario fondamentale tra la risoluzione di un problema e riconoscere la soluzione una volta trovata. Chiunque potesse apprezzare una sinfonia sarebbe Mozart; tutti quelli che potrebbero seguire una discussione passo dopo passo sarebbero Gauss ... "estratto da en.wikipedia.org/wiki/Complexity_classes_P_and_NP .
gts

Risposte:


365

P sta per tempo polinomiale. NP sta per tempo polinomiale non deterministico.

definizioni:

  • Il tempo polinomiale indica che la complessità dell'algoritmo è O (n ^ k), dove n è la dimensione dei dati (ad esempio il numero di elementi in un elenco da ordinare) e k è una costante.

  • La complessità è il tempo misurato nel numero di operazioni che richiederebbe, in funzione del numero di elementi di dati.

  • L'operazione è qualunque cosa abbia senso come un'operazione di base per un determinato compito. Per l'ordinamento, l'operazione di base è un confronto. Per la moltiplicazione matriciale, l'operazione di base è la moltiplicazione di due numeri.

Ora la domanda è: cosa significa deterministico o non deterministico? Esiste un modello computazionale astratto, un computer immaginario chiamato una macchina di Turing (TM). Questa macchina ha un numero finito di stati e un nastro infinito, che ha celle discrete in cui è possibile scrivere e leggere un insieme finito di simboli. In qualsiasi momento, la TM si trova in uno dei suoi stati e sta osservando una cella particolare sul nastro. A seconda di ciò che legge da quella cella, può scrivere un nuovo simbolo in quella cella, spostare il nastro di una cella in avanti o indietro e andare in uno stato diverso. Questa è chiamata transizione di stato. Abbastanza sorprendentemente, costruendo accuratamente stati e transizioni, è possibile progettare una TM, che equivale a qualsiasi programma per computer che può essere scritto.

Ci sono due tipi di TM che ci riguardano qui: deterministici e non deterministici. Una TM deterministica ha solo una transizione da ciascuno stato per ogni simbolo che sta leggendo dal nastro. Una TM non deterministica può avere diverse di queste transizioni, cioè è in grado di controllare contemporaneamente diverse possibilità. È un po 'come generare più thread. La differenza è che una TM non deterministica può generare tutti i "thread" che desidera, mentre su un computer reale può essere eseguito solo un numero specifico di thread alla volta (pari al numero di CPU). In realtà, i computer sono fondamentalmente TM deterministiche con nastri finiti. D'altra parte, una TM non deterministica non può essere realizzata fisicamente, tranne forse con un computer quantistico.

È stato dimostrato che qualsiasi problema che può essere risolto da una TM non deterministica può essere risolto da una TM deterministica. Tuttavia, non è chiaro quanto tempo ci vorrà. L'affermazione P = NP significa che se un problema impiega tempo polinomiale su una TM non deterministica, allora si può costruire una TM deterministica che risolva lo stesso problema anche in tempo polinomiale. Finora nessuno è stato in grado di dimostrare che può essere fatto, ma nessuno è stato in grado di dimostrare che non può essere fatto neanche.

Problema NP completo: un problema NP X, tale che qualsiasi problema NP Y può essere ridotto a X mediante una riduzione polinomiale. Ciò implica che se qualcuno dovesse mai trovare una soluzione in tempo polinomiale a un problema NP completo, ciò fornirà anche una soluzione in tempo polinomiale a qualsiasi problema NP. Quindi ciò proverebbe che P = NP. Al contrario, se qualcuno dovesse dimostrare che P! = NP, allora saremmo certi che non c'è modo di risolvere un problema NP in tempo polinomiale su un computer convenzionale.

Un esempio di un problema NP-completo è il problema di trovare un'assegnazione di verità che renderebbe vera un'espressione booleana contenente n variabili.
Per il momento in pratica qualsiasi problema che richiede tempo polinomiale sulla TM non deterministica può essere fatto solo in tempo esponenziale su una TM deterministica o su un computer convenzionale.
Ad esempio, l'unico modo per risolvere il problema di assegnazione della verità è provare 2 ^ n possibilità.


5
Non è vero che l'unico modo per risolvere SAT sia l'enumerazione dei casi. Vedi en.wikipedia.org/wiki/… per informazioni sull'algoritmo DPLL, che in realtà è molto efficiente in molti casi comuni.
Doug McClean,

44
Derek, prego di non essere d'accordo. Non vedo davvero come spieghi P e NP senza macchine di Turing. Una volta ero in una classe di algoritmi, che ci ha provato. Se non sapessi delle TM, sarei totalmente perso.
Dima,

4
In pratica è vero che la risoluzione dei problemi NP-completi richiede più tempo del polinomio su un computer reale, ma non è questo il significato, è solo lo stato dell'arte attuale, come conseguenza del fatto che P = NP è sconosciuto. Se qualcuno trovasse un algoritmo polinomiale per risolvere qualsiasi problema NP-completo, ciò dimostrerebbe P = NP e sappiamo che non è successo perché sarebbe nelle notizie! Viceversa, se fosse dimostrato che P! = NP, allora potremmo tranquillamente affermare che nessun problema NP-completo è risolvibile in tempo polinomiale.
Steve Jessop,

21
So che è piuttosto vecchio, ma voglio solo dire che la risposta è epica ed è la prima che mi ha cliccato! Buon lavoro
Dimitar Dimitrov il

4
Correzione nel penultimo paragrafo: "saremmo certi che non c'è modo di risolvere un problema NP completo in tempo polinomiale su un computer convenzionale", poiché P è un sottoinsieme di NP e dimostra che P! = NP non dice necessariamente qualsiasi cosa su quali problemi in NP che non sono NP-Complete sono in realtà in P.
Millie Smith il

88
  1. A sì-o-no problema è in P ( P tempo olynomial) se la risposta può essere calcolata in tempo polinomiale.
  2. Un sì o nessun problema è in NP ( N on-deterministica P tempo olynomial) se una risposta sì, può essere verificata in tempo polinomiale.

Intuitivamente, possiamo vedere che se un problema è in P , allora è in NP . Data una potenziale risposta per un problema in P , possiamo verificare la risposta semplicemente ricalcolando la risposta.

Meno evidente, e molto più difficile da risposta, è se tutti i problemi in NP sono in P . Il fatto che possiamo verificare una risposta in tempo polinomiale significa che possiamo calcolare quella risposta in tempo polinomiale?

Esistono molti problemi importanti noti per essere NP- completi (in pratica, se si verifica che questi problemi si trovano in P , allora tutti i problemi NP si dimostrano in P ). Se P = NP , allora tutti questi problemi avranno una soluzione efficiente (tempo polinomiale).

La maggior parte degli scienziati ritiene che P ! = NP . Tuttavia, non è stata ancora stabilita alcuna prova per P = NP o P ! = NP . Se qualcuno fornisce una prova per entrambe le congetture, vinceranno 1 milione di dollari .


23

Per dare la risposta più semplice mi viene in mente:

Supponiamo di avere un problema che richiede un certo numero di input e che presenta varie potenziali soluzioni, che possono o meno risolvere il problema per determinati input. Un puzzle di logica in una rivista di puzzle sarebbe un buon esempio: gli input sono le condizioni ("George non vive nella casa blu o verde"), e la potenziale soluzione è un elenco di affermazioni ("George vive nel giallo casa, coltiva piselli e possiede il cane "). Un esempio famoso è il problema del commesso viaggiatore: dato un elenco di città e i tempi per passare da una città a un'altra, e un limite di tempo, una soluzione potenziale sarebbe un elenco di città nell'ordine in cui il venditore le visita e funzionerebbe se la somma dei tempi di viaggio fosse inferiore al limite di tempo.

Un simile problema si presenta in NP se possiamo controllare in modo efficiente una potenziale soluzione per vedere se funziona. Ad esempio, dato un elenco di città che il venditore deve visitare in ordine, possiamo sommare i tempi per ogni viaggio tra le città e vedere facilmente se è inferiore al limite di tempo. Un problema è in P se riusciamo a trovare una soluzione efficiente se ne esiste una.

(Qui, in modo efficiente, ha un preciso significato matematico. In pratica, significa che i grandi problemi non sono irragionevolmente difficili da risolvere. Quando si cerca una possibile soluzione, un modo inefficiente sarebbe di elencare tutte le possibili soluzioni potenziali, o qualcosa di simile a quello , mentre un modo efficiente richiederebbe una ricerca di un set molto più limitato.)

Pertanto, il problema P = NP può essere espresso in questo modo: se riesci a verificare una soluzione per un problema del tipo sopra descritto in modo efficiente, puoi trovare una soluzione (o dimostrare che non ce n'è nessuna) in modo efficiente? La risposta ovvia è "Perché dovresti essere in grado di farlo?", Ed è praticamente dove sta la questione oggi. Nessuno è stato in grado di dimostrarlo in un modo o nell'altro, e questo disturba molti matematici e informatici. Ecco perché chiunque sia in grado di provare la soluzione è in palio per un milione di dollari dalla Fondazione Claypool.

Partiamo dal presupposto che P non è uguale a NP, che non esiste un modo generale per trovare soluzioni. Se risultasse che P = NP, molte cose cambieranno. Ad esempio, la crittografia diventerebbe impossibile e con essa qualsiasi tipo di privacy o verificabilità su Internet. Dopotutto, possiamo prendere in modo efficiente il testo crittografato e la chiave e produrre il testo originale, quindi se P = NP potremmo trovare in modo efficiente la chiave senza conoscerla in anticipo. Il crack delle password diventerebbe banale. D'altra parte, ci sono intere classi di problemi di pianificazione e problemi di allocazione delle risorse che potremmo risolvere in modo efficace.

Potresti aver sentito la descrizione NP-complete. Un problema NP-completo è NP (ovviamente) e ha questa proprietà interessante: se è in P, ogni problema NP è, e quindi P = NP. Se riuscissi a trovare un modo per risolvere in modo efficiente il problema del commesso viaggiatore o puzzle logici da riviste di puzzle, potresti risolvere in modo efficiente qualsiasi cosa in NP. Un problema NP completo è, in un certo senso, il tipo più difficile di problema NP.

Quindi, se riesci a trovare una tecnica di soluzione generale efficiente per qualsiasi problema NP-completo, o dimostrare che non esiste, la fama e la fortuna sono tue.


1
Nel tuo secondo ultimo paragrafo hai "in un certo senso, l'ordinamento più difficile". Dovresti dire che NP-complete sono le più difficili dal momento che sono NP-difficili.
grom

1
Non sono sicuro che la fortuna sarebbe tua. Il governo potrebbe volere la tua testa.
Millie Smith,

9

Un breve riassunto delle mie umili conoscenze:

Ci sono alcuni problemi computazionali facili (come trovare il percorso più breve tra due punti in un grafico), che possono essere calcolati abbastanza velocemente (O (n ^ k), dove n è la dimensione dell'input e k è una costante (nella caso di grafici, è il numero di vertici o spigoli)).

Altri problemi, come trovare un percorso che attraversa tutti i vertici in un grafico o ottenere la chiave privata RSA dalla chiave pubblica è più difficile (O (e ^ n)).

Ma CS speak dice che il problema è che non possiamo "convertire" una macchina di Turing non deterministica in una deterministica, tuttavia possiamo trasformare automi finiti non deterministici (come il regex parser) in deterministici (beh, tu possibile, ma il tempo di esecuzione della macchina richiederà molto tempo). Cioè, dobbiamo provare ogni possibile percorso (di solito i professori CS intelligenti possono escluderne alcuni).

È interessante perché nessuno ha nemmeno idea della soluzione. Alcuni dicono che è vero, alcuni dicono che è falso, ma non c'è consenso. Un'altra cosa interessante è che una soluzione sarebbe dannosa per le crittografie di chiavi pubbliche / private (come RSA). Potresti romperli facilmente come lo è ora la generazione di una chiave RSA.

Ed è un problema piuttosto stimolante.


1
Questo non è del tutto vero: puoi convertire un NDTM in un DTM, ma la nuova macchina ha un tempo di esecuzione esponenziale nel tempo di esecuzione dell'originale (in effetti devi prima cercare nel grafico di transizione di stato dell'NDTM).
Adam Wright,

6

Non c'è molto che io possa aggiungere al cosa e perché della parte P =? NP della domanda, ma per quanto riguarda la prova. Non solo una prova meriterebbe un credito extra, ma risolverebbe uno dei problemi del millennio . Recentemente è stato condotto un sondaggio interessante e vale sicuramente la pena leggere i risultati pubblicati (PDF) per quanto riguarda l'argomento di una prova.


5

Innanzitutto, alcune definizioni:

  • Un particolare problema è in P se è possibile calcolare una soluzione in tempo inferiore rispetto n^kad alcuni k, dove si ntrova la dimensione dell'input. Ad esempio, l'ordinamento può essere eseguito in un valore n log ninferiore a n^2, quindi l'ordinamento è un tempo polinomiale.

  • Un problema è in NP se esiste un ktale che esiste al massimo una soluzione di dimensioni n^kche è possibile verificare in tempo al massimo n^k. Prendi 3 colori dei grafici: dato un grafico, un 3 colori è un elenco di coppie (vertici, colori) che ha dimensioni O(n)e puoi verificare in tempo O(m)(o O(n^2)) se tutti i vicini hanno colori diversi. Quindi un grafico è a 3 colori solo se esiste una soluzione breve e facilmente verificabile.

Una definizione equivalente di NP è "problemi risolvibili da un N macchina di Turing ondeterministic in P tempo olynomial". Mentre questo ti dice da dove viene il nome, non ti dà la stessa sensazione intuitiva di come sono i problemi NP.

Nota che P è un sottoinsieme di NP: se riesci a trovare una soluzione in tempo polinomiale, c'è una soluzione che può essere verificata in tempo polinomiale - controlla che la soluzione data sia uguale a quella che puoi trovare.

Perché la domanda è P =? NPinteressante? Per rispondere a ciò, bisogna prima vedere quali sono i problemi NP-completi. In poche parole,

  • Un problema L è NP completo se (1) L è in P, e (2) un algoritmo che risolve L può essere usato per risolvere qualsiasi problema L 'in NP; cioè, data un'istanza di L 'è possibile creare un'istanza di L che ha una soluzione se e solo se l'istanza di L' ha una soluzione. Formalmente parlando, ogni problema L 'in NP è riducibile a L.

Si noti che l'istanza di L deve essere calcolabile in tempo polinomiale e avere dimensioni polinomiali, nella dimensione di L '; in questo modo, risolvere un problema NP completo in tempo polinomiale ci offre una soluzione temporale polinomiale a tutti i problemi NP.

Ecco un esempio: supponiamo di sapere che la colorazione 3 dei grafici è un problema NP-difficile. Vogliamo dimostrare che anche la decisione sull'affidabilità delle formule booleane è un problema difficile per NP.

Per ogni vertice v, hanno due variabili booleane v_h e v_l e il requisito (v_h o v_l): ogni coppia può avere solo i valori {01, 10, 11}, che possiamo pensare come colore 1, 2 e 3.

Per ogni fronte (u, v), avere il requisito che (u_h, u_l)! = (V_h, v_l). Questo è,

not ((u_h and not u_l) and (v_h and not v_l) or ...) elencando tutte le configurazioni uguali e stipulando che nessuna di esse è il caso.

AND'riunendo tutti questi vincoli dà una formula booleana che ha dimensione polinomiale ( O(n+m)). Puoi anche verificare che ci vuole del tempo polinomiale per calcolare: stai facendo O(1)cose semplici per vertice e per bordo.

Se riesci a risolvere la formula booleana che ho creato, puoi anche risolvere la colorazione del grafico: per ogni coppia di variabili v_h e v_l, lascia che il colore di v sia quello corrispondente ai valori di quelle variabili. Con la costruzione della formula, i vicini non avranno colori uguali.

Quindi, se la 3 colorazione dei grafici è NP-completa, lo è anche la soddisfazione della formula booleana.

Sappiamo che la colorazione 3 dei grafici è NP-completa; tuttavia, storicamente abbiamo imparato che mostrando prima la completezza NP della soddisfacibilità del circuito booleano, e poi riducendola a 3-colorabilità (invece del contrario).

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.