# Pay taxes to oracles

## Is an oracle ever useful if you can't control the input instances?

Suppose there is an oracle for a problem in N P, but I cannot invoke this oracle with any input instance. Instead, I get a random instance and solution back every time I call F. So I know that F is actually able to solve any N P -hard problem. I just can't specify which one I want to solve. F.N P.F.F.N P.

Is it possible to use such an oracle to solve a whole problem faster? My gut says no because the naive use of the oracle still takes O (2n) time, calling the oracle enough to review any solution. I just can't think of a way to prove it.N P.O (2n)

As Xodarap pointed out, the random oracle is useless if you need your "random oracle" algorithm to do always output the correct answer. The problem becomes more interesting if we allow a low probability of error (the probability being related to the random instance chosen by the oracle).

Furthermore, as Vor pointed out in the comments on the question, it is meaningless to say “random instance” without giving a probability distribution. One of the reasonable assumptions to be made here is that this random instance is uniformly random from the set of all strings of length p ( n ) is selected, where n the input length and p is a fixed polynomial. We could make other, weaker assumptions about the probability distribution.

Here we will make the general assumption and show that the existence of a randomized polynomial time algorithm with a “random oracle” for NP-complete problems has surprising consequences even under this weak assumption.

Let's drop the requirement that the "random oracle" solve a problem in NP (on a randomly selected instance). Now the "random oracle" can be any predetermined probability distribution over strings of polynomial length, and every time it is asked it outputs a string according to that probability distribution. The only requirement is that this probability distribution depends only on the input length. Note that your model is indeed a special case of that model. In your model, the probability distribution must take the following form: It first chooses an evenly random instance y from a set depending on the input length and then outputs a pair ( y , G ( y )) back, where G: {0, 1} * → {0, 1} is the characteristic function of a decision problem in NP. Now we allow each Probability distribution as long as the distribution is determined solely by the input length.

An "oracle" of this general form is called designated randomized advice . The class of decision problems that can be decided by a randomized polynomial-time algorithm with randomized advice (with limited two-sided error) is called BPP / rpoly, and this class is known to be equal to P / poly. (The inclusion BPP / rpoly⊆P / poly can be detected in the same way as a known inclusion BPP⊆P / poly. For a proof of the latter see e.g. Theorem 6.3 of Goldreich [Gol08].)

This means that NP⊆P / Poly if an NP-complete problem can be solved in your model. However, it is known that NP⊆P / Poly implies that the polynomial hierarchy collapses to the second level [KW98, Cai07]. Most complexity theorists see a breakdown in the polynomial hierarchy as a big surprise. If we believe that the polynomial hierarchy does not collapse, NP-complete problems cannot be efficiently solved with the "random oracle" in your sense.

### References

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

[Gol08] Oded Goldreich. Computer Complexity: A Conceptual Perspective . Cambridge University Press, 2008.

[KW98] Johannes Köbler and Osamu Watanabe. New collapse sequences of NPs with small circuits. SIAM Journal on Computing , 28 (1): 311-324, 1998. DOI: 10.1137 / S0097539795296206.

Let's think specifically about everyone's favorite complete NP problem: 3SAT.

It is possible (although unlikely) that you will be assigned to the same instance every time you call your oracle. In particular, it could give you an assignment for the trivial sentence every time:

(x ∨ x ∨ x) ∧ (x ∨ x ∨ x) ...