# Modifications to standard Turing Machine

A standard Turing Machine is a machine which on providing an input moves either to the left or right and it may overwrite the existing symbol.

A standard TM can be described as a 7-tuple:

(Q, X, *, f, q0, B, F) where Q is a finite set of states X is the tape alphabet * is the input alphabet f is a transition function; f: Q × X --> Q × X × {Left_shift, Right_shift}. q0 is the initial state B is the blank symbol F is the set of final states

A standard Turing machine is capable of accepting some of the languages, called recursively enumerable language. Let’s see if by doing some kind of modification we can increase the number of languages accepted by Turing Machine.

**Turing Machine with Stay option:**

If instead of moving left or right on seeing an input, the head could also stay at one position without moving anywhere i.e.f: Q × X --> Q × X × {Left_shift, Right_shift, Stay}.

Still the number of languages accepted by turing machine remains same .

**Turing Machine with Semi-infinite tape:**

We know that Turing machine has an infinite input tape with extends in both the directions (left and right) infinitely. So now if we restrict it to extend only in one direction and not in both the directions, i.e., we make the tape to be semi infinite, then also the number of languages accepted by the Turing machine remains same.**Offline Turing machine:**

In standard Turing machine both the input and output are present on the tape, the head has the authority to move across the input and can change or modify the input, if we don’t want to modify the input we can provide the input in separate file, which is read only then the head cannot make changes to it.

If the Turing machine wants to modify the input, the input need to be copied on the tape and the changes can be made by the head but still the input file remains unchanged as changes are made in the tape and not in the file. By doing such modification to Turing machine still the number of languages accepted by the Turing machine remains the same.**Jumping Turing Machine:**

The standard Turing machine’s head can move only one step to the right or left, but in case of jumping Turing machine the head can move not only just one step to the left or right but it can move more the one, i.e., 2, 3, 4, 5, 6, … so on, or it can jump to any cell to the right or left of the input tape.f: Q × X --> Q × X × {Left_shift, Right_shift} x {n}

n, is the number of steps that we wish to move to the right or left. But still the languages accepted by Turing machine remains the same.

**Non erasing Turing Machine:**

In standard Turing machine the input symbol can be changed to blank, but if we remove this facility of changing the input symbol to blank then such type of Turing machine is called as non erasing Turing machine . We can replace the input with any other symbol except blank. By doing this modification still the number of languages accepted by the Turing machine remains the same.**Always writing Turing Machine:**

Standard Turing machine gives us the freedom that on seeing an input we can leave it as it is without doing any changes but in always writing Turing machine it is compulsory to modify the input whenever we see it we cannot leave it as it is. But this kind of modification didn’t help in increasing the number of languages accepted by the Turing machine.

Hence, we see that in spite of doing so many modifications to the Turing machine still the number of languages accepted by it remains the same. Therefore, Turing Machine is most powerful machine.

## Recommended Posts:

- Turing Machine
- Turing machine for subtraction | Set 1
- Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i < j < k or i > j > k} - Turing machine for 1's and 2’s complement
- TOC | Turing Machine as Comparator
- Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i< j< k; i ≥ 1} - Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i>j>k; k ≥ 1} - Turing Machine for addition
- Turing Machine for subtraction | Set 2
- Turing machine for multiplication
- Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i*j = k; i, j, k ≥ 1} - Construct Turing machine for L = {a
^{n}b^{m}a^{(n+m)}| n,m≥1} - Turing machine for copying data
- Construct a Turing Machine for language L = {0
^{n}1^{n}2^{n}| n≥1} - Construct a Turing Machine for a language L = {a
^{i}b^{j}c^{k}| i<j<k or i>j>k} ∩ {a^{i}b^{j}c^{k}| i>j>k or i>j>k}

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.