È calcolabile ogni problema NP-difficile?


Risposte:


15

No, non è necessario calcolare un problema -hard. La definizione è abbastanza completa: un problema è -hard se quel problema con una soluzione poli-tempo implica che ogni problema in ha una soluzione poli-tempo (cioè una riduzione a esiste per ogni problema in .).L N P N PNPLNPNPN PLNP

Problemi incomprensibili sono quindi vagamente difficili: supponiamo di poterne risolvere uno in tempo polinomiale. Quindi usiamo la prova che è imputabile derivare che è sia calcolabile che non calcolabile, una contraddizione. Da questa menzogna, possiamo derivare qualsiasi cosa, vale a dire che esiste un algoritmo temporale polinomiale per qualunque problema stiamo osservando.NP

Ad esempio, si consideri l'arresto problema . Possiamo ridurre qualsiasi linguaggio a come segue, supponendo che abbiamo un checker polytime che controlla se è un certificato per :N P A H f ( s , c ) cHNPAHf(s,c)csA

  • Dato inputs
  • Construct (ma non eseguire) Macchina di Turing che prende in ingresso cerca ogni certificato e si arresta se è un certificato verificando che .x c cMxccsA
  • Restituisce (ovvero restituisce vero se ferma sull'ingresso )H(M,x)xMx

Pertanto, con una singola chiamata a un algoritmo poly-time che risolve il problema Halting, possiamo risolvere qualsiasi problema in tempo polinomiale.NP

Tale riduzione non è utile, perché tutto ciò che fa è dire se "se falso allora qualcosa". Sappiamo già che non esiste un algoritmo polytime per problemi incontestabili.


7
"La definizione è abbastanza completa", ma non è ciò che segue quella citazione nella tua risposta.

Ho una domanda al riguardo. Posso immaginare una funzione che risolva il problema di arresto per la più grande serie di programmi possibile con alcuni vincoli appropriati, ma posso immaginare che questa funzione non sia ancora calcolabile (nel senso che non la troveremmo nemmeno se ci fosse un tempo infinito) . Eppure, se in qualche modo fatto la soluzione ad esso, non è nemmeno chiaro per me che dovrebbe risolvere tutti i problemi NP-difficili necessariamente. Quindi o la logica in questa risposta non segue (che significa indecidibile! = Incomprensibile), o il mio ragionamento è imperfetto (probabilmente). Quindi qual è il difetto?
Mehrdad,

12
La maggior parte di questa risposta è errata, inclusa la definizione di NP hard: il problema A è NP hard se, "per ogni problema NP B, si ha una riduzione dei poli-tempo da B ad A." Cioè non è la stessa cosa di "se A è poli-tempo, allora P = NP." (Il secondo è una conseguenza del primo, ma non viceversa.) In particolare, ci sono quasi certamente problemi non calcolabili che non riescono a essere NP difficili. Non ho elaborato i dettagli, ma il problema dell'appartenenza a un set sufficientemente generico (nel senso di forzatura) dovrebbe fare il trucco. Il set di arresto, in particolare, è NP-difficile, tuttavia, per la tua riduzione.

7
Pensa a una riduzione del poli-tempo da A a B in questo modo: è un programma che gira in tempo polinomiale, ma ha la speciale capacità di interrogare, in un solo passaggio, un oracolo che risponde alle istanze del problema B. Indipendentemente dal fatto che esiste un algoritmo poly-time per B, o anche se B è calcolabile, ha ancora senso porre la seguente domanda: supponendo che l'oracolo risponda correttamente alle domande poste (in una sola fase), fa il programma in questione eseguito in tempo polinomiale e risolvere correttamente le istanze del problema A?

2
@MikeHaskel L'analogia dell'oracolo è precisa solo se, dopo aver interrogato l'oracolo, il programma deve arrestarsi con la stessa risposta di quell'oracolo. Altrimenti, il co-SAT si riduce a SAT: interroga l'oracolo e annulla. In alcune nozioni di riduzione, ad esempio la riduzione di Turing, ciò sarebbe accettabile, ma nella riduzione dei poli-tempi standard, o anche in una riduzione multipla, non lo è.
Chi,

16

Sembra esserci una notevole confusione in questa comunità riguardo a questa domanda. Darò una risposta dettagliata nella speranza di chiarire l'acqua e illuminare il rapporto tra calcolabilità e durezza NP.

In primo luogo, credo che essere chiari ed espliciti sulle varie definizioni coinvolte risolverà molta confusione.

Una stringa è una sequenza finita di caratteri di un certo alfabeto finito fisso.

Un problema decisionale è un insieme di stringhe. (Questo set è in genere infinito.) Pensa al problema decisionale come a testare stringhe per alcune proprietà: le stringhe con la proprietà sono nel set e le stringhe senza la proprietà non lo sono.

Supponiamo di avere due problemi di decisione, e B . Say A è polinomiale riducibile a B se c'è qualche polinomio p ( x ) e l'algoritmo qualche algoritmo M tale che, per tutte le stringhe s ,ABABp(x)Ms

  • Se si forniscono a input s , M si ferma in meno di p ( | s | ) passi (dove | s | è la lunghezza della stringa s ) e genera una stringa M ( s ) .MsMp(|s|)|s|sM(s)
  • è in A se e solo se M ( s ) è in B .sAM(s)B

Un problema di decisione è NP-difficile se, per ogni NP problema decisionale A , A è polinomiale riducibile a B .BAAB

Un problema decisionale è calcolabile se esiste un algoritmo che, per tutte le stringhe s ,Ms

  • Se si fornisce a input s , M si arresta e viene emesso "yes" o "no".MsM
  • L'output è "yes" se è in A e "no" altrimenti.sA

Con le definizioni di cui sopra, possiamo immediatamente chiarire quale penso possa essere la confusione della radice nella tua domanda: nulla nelle definizioni di problema decisionale, riduzioni o durezza NP richiede che i problemi decisionali siano calcolabili. Le definizioni hanno perfettamente senso pensare ai problemi di decisione come insiemi arbitrari di stringhe, e questi insiemi possono essere davvero molto cattivi.


Ciò lascia due domande sul tavolo:

  1. Le definizioni lasciano aperta la possibilità che funzioni non calcolabili potrebbero essere NP-difficili. Ci sono in realtà non calcolabili, funzioni NP-difficili?
  2. C'è un'intuizione che dire che un problema è NP-difficile è dire che è difficile da risolvere. Dire che non è calcolabile è come dire che è "davvero difficile" da risolvere. Quindi, tutti i problemi non calcolabili sono NP-difficili?

Alla domanda 1 è più facile rispondere. Esistono due modi particolarmente importanti per trovare problemi di decisione non calcolabili che sono NP-difficili. Il primo è il problema della terminazione: il problema della terminazione, , ha la proprietà che ogni calcolabile problema decisionale è polinomiale riducibile a H . Poiché i problemi NP sono calcolabili, ogni problema NP è polinomiale riducibile a H , quindi H è NP-difficile.HHHH

L'altro modo importante per creare un problema NP-difficile non calcolabile è osservare che possiamo combinare qualsiasi problema NP-difficile noto con qualsiasi problema noto non calcolabile. Lascia che sia NP-difficile e B non calcolabile. Formare il problema decisionale A B come segue: A B contiene le stringhe del modulo "0, seguite da una stringa in A " e quelle del modulo "1, seguite da una stringa in B ". A B è NP-difficile perché possiamo trasformare qualsiasi riduzione (di qualsiasi problema) in A in una riduzione in A BABABABABABAAB: basta modificare l'algoritmo per generare uno "0" in più nella parte anteriore della sua stringa di output. non è calcolabile, poiché il calcolo di A B richiede di decidere quali stringhe che iniziano con "1" sono nell'insieme; questo è impossibile, poiché B non è calcolabile.ABABB


La domanda 2 è considerevolmente più complicata, ma in realtà ci sono problemi di decisione non calcolabili che non sono NP-difficili (assumendo P NP). La bella risposta di Yuval costruisce esplicitamente un simile problema decisionale. (Per tutti i teorici della calcolabilità nella stanza, anche qualsiasi " generico di Cohen Π 0 1 " farà il trucco.) Analizzerò perché l'intuizione che "i problemi NP-hard sono difficili, i problemi non calcolabili sono più difficili " è sbagliato.Π10

La durezza NP e la non calcolabilità dicono entrambe che un problema è "duro" in senso molto generale, ma sono molto diversi e non dovrebbero essere raggruppati insieme come lo stesso tipo di fenomeno. In particolare, la durezza NP è una proprietà "positiva": un problema NP-difficile è difficile nel senso che, dato l'accesso a un cheat sheet per A , è possibile risolvere una dura classe di problemiAA . D'altra parte, la non calcolabilità è una proprietà "negativa": un problema non calcolabile difficile nel senso che non è possibile risolvere A con una data classe di risorseAA .

("Forcing", a proposito, è la tecnica usata per produrre il "Cohen generico" che ho citato. Per essere molto vago, forzare è un modo generale per produrre cose che sono "generiche" in quanto hanno nessuna proprietà positiva e ogni proprietà negativa. Ecco perché forzare può produrre direttamente un problema che non è né calcolabile né NP-difficile.)Π10


2
Non puoi costruire un linguaggio indecidibile che non è NP-difficile per diagonalizzazione? Diagonale contro tutti i decisori e tutte le riduzioni del tempo di trasmissione da SAT.
Yuval Filmus,

1
@YuvalFilmus Probabilmente funziona, sì. Penso che scrivere i dettagli del perché la diagonalizzazione contro le riduzioni del tempo polifunzionale da SAT sia possibile, quantità è simile nel mostrare che forzare le opere, però, quindi non ci ho pensato in questi termini.

1
@YuvalFilmus Ho anche aggiunto il chiarimento proprio ora che devi assumere P NP: c'è stato sicuramente un passo nella mia dimostrazione che dice "prendi qualche problema in NP ma non in P."

1
@aelguindy Non sono sicuro di quale sia il metodo più accessibile per dimostrarlo. Ho citato la tecnica della forzatura , che è molto generale e potente. L'ho imparato dalle persone, non dai libri di testo, quindi non conosco personalmente un grande riferimento alla forzatura. Come ha sottolineato Yuval, tuttavia, la forzatura è probabilmente eccessiva: probabilmente alcuni argomenti più diretti sulla diagonalizzazione funzionano. "Insiemi e gradi ricorsivamente enumerabili" di Soare è un libro di testo che copre molto di quello stile di argomento se si vuole familiarizzare con esso. Ancora una volta, tuttavia, la maggior parte è probabilmente eccessiva. ...

1
@aelguindy Inoltre, se si considera l'insieme dei problemi decisionali come uno spazio topologico, è possibile probabilmente massaggiare il teorema della categoria Baire per produrre una prova. Questo teorema è strettamente correlato alla forzatura, ma è più vecchio e più semplice.

11

No. NP-Hard significa che è più o meno difficile dei problemi NP più difficili. Intuitivamente, essere insopportabili lo renderà molto più difficile di NP.

Wikipedia:

Ci sono problemi di decisione che sono NP-difficili ma non NP-completi, ad esempio il problema di arresto.

Tutti sanno che non è calcolabile


4
Si noti che, sebbene alcuni problemi non calcolabili (come il problema dell'arresto) siano NP-difficili, ciò non significa che tutti i problemi non calcolabili siano NP-difficili. Vedi i miei commenti sulla risposta di jmite. La durezza NP è una proprietà positiva: afferma che le risposte al tuo problema possono aiutare a risolvere i problemi NP. Essere NP-hard implica che il problema è, in una certa misura, difficile. Non tutti i problemi difficili sono NP-difficili.

@MikeHaskel: Possedere la soluzione al problema di arresto riduce tutti i problemi a P * difficoltà del problema di arresto.
Joshua,

1
@Joshua: Non ha senso. È come un frammento di una non-prova. Cosa intendi anche per un problema con un numero finito di bit nella sua soluzione, e perché pensi che questo si applichi a tutti i problemi non calcolabili? Cosa intendi con "P * halts"? Qual è il resto di "riduci tramite l'ennesimo bit di ..."?
user2357112 supporta Monica

1
@Joshua: Sembra che il problema principale sia che stai assumendo che ogni problema corrisponda a una macchina di Turing. Non tutti i problemi corrispondono a una macchina di Turing. Non c'è alcuna problem()funzione che possiamo chiamare.
user2357112 supporta Monica l'

1
Probabilmente dovresti spostarlo per chattare o qualcosa del genere
Destructible Lemon

9

Per completezza, proviamo il seguente teorema:

,{0,1}

TiL{0,1,?}{0,1}L0L1L??

2iTiTiTixL(x)=?L(x):=0Ti(x)L(x):=1Ti(x)

2i+1TiTiTixL(Ti(x))=?xSATxL(x):=0L(x):=1

{0,1,?}{0,1}

L2iTiTiLTiTiLTiTi2i+1L


3

LLNPLL

ANTM={M,wM is a nondeterministic Turing machine that accepts w}

LNPLMfLANTM

f(x)=M,x

3

Penso che ciò che induca le persone a pensare che non vi sia un problema NP-difficile indiscutibile è che mancano il punto che la durezza NP è un limite inferiore alla durezza di un problema, non un limite superiore alla loro durezza come P o NP.

Una lingua L essendo NP-difficile significa che è al di sopra della lingua in NP e cioè. Ora, se capisci questo, è necessario dimostrare che ci sono problemi arbitrari più difficili.

AACACAHaltCACA

AAA<AA<A<A<A<...

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.