È necessario che un problema NP-difficile debba essere calcolabile?
Non la penso così, ma non ne sono sicuro.
È necessario che un problema NP-difficile debba essere calcolabile?
Non la penso così, ma non ne sono sicuro.
Risposte:
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 PN P
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.
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 ) c
Pertanto, con una singola chiamata a un algoritmo poly-time che risolve il problema Halting, possiamo risolvere qualsiasi problema in tempo polinomiale.
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.
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 ,
- 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 ) .
- è in A se e solo se M ( s ) è in B .
Un problema di decisione è NP-difficile se, per ogni NP problema decisionale A , A è polinomiale riducibile a B .
Un problema decisionale è calcolabile se esiste un algoritmo che, per tutte le stringhe s ,
- Se si fornisce a input s , M si arresta e viene emesso "yes" o "no".
- L'output è "yes" se è in A e "no" altrimenti.
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:
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.
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 ⊕ B: 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.
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.
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 problemi . 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 risorse .
("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.)
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
problem()
funzione che possiamo chiamare.
Per completezza, proviamo il seguente teorema:
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.