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 .