# Oracle machine

In complexity theory and computability theory, an**oracle**is a black box that computes a function in a single step. This could be a function solving an NP-complete problem such as the subset sum problem. It could even be an "uncomputable" (non-recursive) function like the halting problem.

### Oracle machines

An **oracle machine** is a Turing machine connected to an oracle. The Turing machine can write on its own tape an input for the oracle, then tell the oracle to execute. In a single step, the oracle computes its function, erases its input, and writes its output to the tape. Sometimes the Turing machine is described as having two tapes, one of which is reserved for oracle inputs and outputs.

### Oracles and Complexity Theory

The complexity class of decision problems solvable by an algorithm in class A with an oracle for a problem in class B is written A^{B}. For example, the class of problems solvable in polynomial time by a deterministic Turing machine with an oracle for a problem in NP is P

^{NP}. (This is also the class of problems reducible by polynomial-time Turing reduction to a problem in NP.)

It is obvious that NP ⊆ P^{NP}, but the question of whether NP ⊂ P^{NP} remains open. See polynomial hierarchy for further extensions.

The notation A^{B} also means the class of problems solvable by an algorithm in class A with an oracle for the *language* B. For example, P^{SAT} is the class of problems solvable in polynomial time by a deterministic Turing machine with an oracle for the Boolean satisfiability problem. When language B is complete for some class C, then A^{B}=A^{C}. In particular, since SAT is NP-complete, P^{SAT}=P^{NP}.

Oracle machines are useful for investigating the relationship between complexity classes P and NP, by considering the relationship between P^{A} and NP^{A} for an oracle A. In particular, it has been shown that there exist languages A and B such that P^{A}=NP^{A} and P^{B}≠NP^{B} (Baker, Gill, Solovay, 1975). When a question such as this has different answers for different oracles, it is said to *relativize both ways*. The fact that the P=NP question relativizes both ways is taken as evidence that answering this question will be difficult, because any proof technique that *relativizes* (i.e., is unaffected by the addition of an oracle) will not answer the P=NP question.

It is interesting to consider the case where an oracle is chosen randomly from among all possible oracles. It has been shown that if oracle A is chosen randomly, then with probability 1, P^{A}≠NP^{A} (Bennett, Gill, 1981). When a question is true for almost all oracles, it is said to be true *for a random oracle*. This is sometimes taken as evidence that P≠NP; unfortunately, it is possible for a statement to be true for a random oracle, but not be true for ordinary Turing machines.

### Oracles and Halting Problems

It is possible to posit the existence of an oracle which computes a non-recursive function, such as the answer to the halting problem or some equivalent. A machine with an oracle of this sort is a hypercomputer.

Interestingly, the halting paradox still applies to such machines; that is, although they can determine whether particular Turing machines will halt on particular inputs, they cannot determine whether machines with equivalent halting oracles will themselves halt. This fact creates a hierarchy of machines, each with a more powerful halting oracle and an even harder halting problem.

### Bibliography

- C. Papadimitriou. Computational Complexity. Addison-Wesley, 1994.
- T. P. Baker, J. Gill, R. Solovay. Relativizatons of the P =? NP Question. SIAM Journal on Computing, 4(4): 431-442 (1975)
- C. H. Bennett, J. Gill. Relative to a Random Oracle A, P
^{A}!= NP^{A}!= co-NP^{A}with Probability 1. SIAM Journal on Computing, 10(1): 96-113 (1981)

The term

**"oracle machine"**is sometimes used to refer to a computer, especially a server, that runs Oracle Corporation's database management system.