# Oracle Turing Machine

**Turing Machine :**

Alan Mathison Turing proposed the Turing machine in 1936, a computer model capable of simulating all computational behaviors. A Turing machine is a fictitious machine. The Turing machine was instrumental in the development of the modern computer.

- A Turing machine is a fictitious machine.
- Despite its simplicity, the machine is capable of simulating ANY computer algorithm, no matter how complex.
- For the sake of simplicity, we will assume that this machine can only process 0, 1 and blank.
- The machine has a head that is positioned over one of the tape’s squares.
- The head can carry out the three basic operations listed below:

1.** Read** the symbols of the square of the head.

2. **Edit** the symbol by replacing it with a new symbol or erasing it.

3. **Move** the tape to the left or right by one square so that the machine can read and edit the symbol on the next square

- A very basic representation of a Turing Machine would be an infinitely long tape (memory)
- Each square on the tape is initially blank, and symbols can be written over it.

**The Halting Problem:**

- Alan Turing demonstrated in 1936 that it is impossible to predict whether an arbitrary programme will eventually terminate or run indefinitely.
- Martin Davis dubbed this the “Halting Problem” later on.
- It is one of the very first instances of a decision problem.

The halting problem is the problem of determining whether an arbitrary computer programme will finish running or continue to run indefinitely based on a description of the programme and an input.

For example:

- while (true) continue;

It does not come to a halt; rather, it continues indefinitely in an infinite loop.

- print “Hello World!”;

It will halt.

Why is the Halting Problem important?

- We frequently want to know if a programme converges (stops), but there is no single algorithm that can answer this question for all programmes.
- Many problems are demonstrated to be unsolvable by reducing them to halting problems.

**Oracle Turing Machines :**

An oracle Turing machine is similar to a standard Turing machine, but with the addition of a second tape known as the oracle tape. Blanks (B), 0s, or 1s can be found in the cells on the Oracle tape. Given a set A, an Oracle Turing Machine with Oracle A will write the set A’s characteristic function onto tape. The Oracle tape head starts on the cell with the letter X_{A}(0). X_{A}(1) is in the cell to the right of this one, and so on in increasing order. There are only blanks to the left of the cell where the Oracle tape head begins.

An oracle Turing machine computation is carried out in the same manner as a standard Turing machine computation. Despite the fact that the Oracle head has a start state of p0, the Turing machine stops if the read/write head enters an accent state. The key distinction between a Turing machine with oracle A and a regular Turing machine is that a halting computation of the oracle Turing machine can determine whether or not A contains a finite number of numbers.

The Oracle machine may occasionally enter the QUERY state. When this occurs, the following operations are carried out in a single computational step:

- The Oracle tape’s content is read.
- The oracle is queried, and the contents of the oracle tape are replaced with the solution to that specific instance of the problem.
- The state of the Oracle machine is changed to RESPONSE, which can be either Q
_{yes}or Q_{no.}

Thus, changing to the QUERY state results in receiving a solution to the problem instance written on the oracle tape in a single step.

**Importance of Oracle Turing Machines:**

- OTMs can be thought of as computations that make use of subroutines. Regardless of complexity, the time spent in these subroutines only counts as one step. As a result, OTMs is a fictitious computation model.
- Used extensively in computer science theory to study the relative difficulty of various problems.
- They aid in the encoding of the concept of Turing reductions.
- They aid in identifying some of the obstacles to proving results in complexity theory.
- It is also important on cryptography.