Un oracolo è mai utile se non puoi controllare le istanze di input?


8

Diciamo che è un oracolo per un problema in , ma non posso chiamarlo oracolo con nessuna istanza di input. Invece, ogni volta che chiamo mi viene restituita un'istanza e una soluzione casuali. Quindi, so che è effettivamente in grado di risolvere problemi arbitrari di , non riesco proprio a specificare quale voglio risolvere.FNPFFNP

È possibile usare un simile oracolo per risolvere più rapidamente un problema completo ? Il mio istinto dice di no perché l'uso ingenuo dell'oracolo richiede ancora tempo chiamando l'oracolo abbastanza per controllare ogni soluzione. Non riesco proprio a pensare a un modo per dimostrarlo.NPO(2n)


2
Forse dovresti modificare la domanda in questo modo: "... ogni volta che chiamo mi viene restituita un'istanza casuale di dimensione con distribuzione uniforme ..." (dove è la dimensione dell'input della macchina di Turing che può accedere ). F n nF
Vor

@Vor, ho pensato di aggiungere anche quella clausola, ma non sono sicuro che faccia davvero la differenza. Anche se la distribuzione fosse tale da consentire a un numero polinomiale di chiamate di ottenere determinate istanze, richiederebbe comunque più delle chiamate polinomiali per ottenere la maggior parte delle istanze. Penso che l'unica cosa che conta sia che la distribuzione è che non posso in qualche modo alterare la distribuzione per inclinarla a favore della mia istanza specifica.
Mike Izbicki,

1
Sono d'accordo con te, ma senza un'associazione / distribuzione "istanza casuale" non ha senso.
Vor

1
Penso che per "più veloce" intendi "in P" ma potresti voler chiedere invece se è in BPP .
Xodarap,

@Xodarap Sono più interessato a un metodo per usare un tale oracolo per convertire da qualsiasi classe (ipoteticamente) più complessa in una classe più debole. Non necessariamente NP -> P. Inoltre, non vedo particolarmente come le classi probabilistiche sarebbero utili.
Mike Izbicki,

Risposte:


8

Come ha sottolineato Xodarap, se hai bisogno che il tuo algoritmo con "l'oracolo casuale" fornisca sempre la risposta corretta, l'oracolo casuale è inutile. Il problema diventa più interessante se permettiamo una piccola probabilità di errore (dove la probabilità è rispetto all'istanza casuale scelta dall'oracolo).

Inoltre, come ha sottolineato Vor nei commenti sulla domanda, non ha senso dire "istanza casuale" senza specificare una distribuzione di probabilità. Uno dei presupposti ragionevoli da fare qui è che questa istanza casuale è scelta in modo uniforme a caso dall'insieme di tutte le stringhe di lunghezza p ( n ), dove n è la lunghezza di input e p è un polinomio fisso. Potremmo fare altre ipotesi, più deboli, sulla distribuzione della probabilità.

Qui renderemo l'assunzione piuttosto generale e mostreremo che l'esistenza di un algoritmo randomizzato a tempo polinomiale con un "oracolo casuale" per problemi NP-completi ha una conseguenza sorprendente anche sotto questa ipotesi debole.

Lasciamo cadere il requisito che "l'oracolo casuale" risolverà un problema in NP (su un'istanza scelta casualmente). Ora "l'oracolo casuale" può essere qualsiasi distribuzione di probabilità predeterminata su stringhe di lunghezza polinomiale e ogni volta che viene richiesto, emette una stringa in base a questa distribuzione di probabilità. L'unico requisito è che questa distribuzione di probabilità dipende solo dalla lunghezza dell'input. Nota che il tuo modello è davvero un caso speciale di questo modello. Nel tuo modello, la distribuzione di probabilità deve avere la forma seguente: prima sceglie un'istanza uniformemente casuale y da un set in base alla lunghezza dell'input, quindi restituisce una coppia ( y , g ( y )), dove g: {0, 1} * → {0, 1} è la funzione caratteristica di alcuni problemi di decisione in NP. Ora consentiamo qualsiasi distribuzione di probabilità, purché la distribuzione sia determinata dalla sola lunghezza di input.

Un "oracolo" di questa forma generale è chiamato un consiglio randomizzato . La classe di problemi di decisione che può essere decisa da un algoritmo randomizzato a tempo polinomiale con un consiglio randomizzato (con errore bilaterale limitato) è chiamata BPP / rpoly ed è noto che questa classe è uguale a P / poly . (L'inclusione BPP / rpoly⊆P / poly può essere dimostrata allo stesso modo di una ben nota BPP⊆P / poly. Per una dimostrazione di quest'ultima, vedere ad esempio Teorema 6.3 di Goldreich [Gol08].)

Ciò significa che se un problema NP completo può essere risolto nel modello, NP⊆P / poli. Tuttavia, è noto che NP⊆P / poly implica che la gerarchia polinomiale collassa al secondo livello [KW98, Cai07]. La maggior parte dei teorici della complessità considera un crollo della gerarchia polinomiale una grande sorpresa. Se crediamo che la gerarchia polinomiale non collassi, allora i problemi NP-completi non possono essere risolti in modo efficiente con "l'oracolo casuale" nel tuo senso.

Riferimenti

[Cai07] Jin-Yi Cai. S 2 p ⊆ ZPP NP . Journal of Computer and System Sciences , 73 (1): 25–35, febbraio 2007. DOI: 10.1016 / j.jcss.2003.07.015 .

[Gol08] Oded Goldreich. Complessità computazionale: una prospettiva concettuale . Cambridge University Press, 2008.

[KW98] Johannes Köbler e Osamu Watanabe. Nuove conseguenze del collasso di NP con piccoli circuiti. SIAM Journal on Computing , 28 (1): 311–324, 1998. DOI: 10.1137 / S0097539795296206 .


0

Pensiamo in particolare al problema NP-completo preferito da tutti: 3SAT.

È possibile (anche se improbabile) che ogni volta che chiami il tuo oracolo ti dia un incarico per la stessa istanza. In particolare, ogni volta che potrebbe darti un incarico per la banale frase:

(xxx)(xxx)

Ma conosci già il compito per questo. Quindi il tuo Oracle non può essere utile.

Più formalmente, se chiamiamo il tuo oracolo A, poi PANP (supponendo PNP...)


Ciò non significherebbe che due istanze 3SAT riducibili del tempo polinomiale. Solo che sono riducibili del tempo polinomiale dato un oracolo di istanza casuale. Giusto?
Mike Izbicki,

chiarito; fammi sapere se non capisco cosa intendi per "oracolo di istanza casuale".
Xodarap,

Bene, ci vorrà un numero esponenziale di chiamate per ottenere un incarico per la stessa istanza. In effetti, ci vorranno tutte le chiamate che vorrebbe ottenere un compito per il problema specifico che sto cercando di risolvere! Stai buttando via tutto quel lavoro e potrebbe esserci un modo intelligente per utilizzarlo.
Mike Izbicki,

@ Mike: La complessità si occupa della worst-case scenario. Poiché nel peggiore dei casi l'oracolo è inutile (come mostrato sopra), questo è tutto ciò che dobbiamo sapere.
Xodarap,
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.