Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Enumerator (computer science)
Turing machine that lists, possibly with repetitions, elements of some set S, which it is said to enumerate

An enumerator is a Turing machine with an attached printer. The Turing machine can use that printer as an output device to print strings. Every time the Turing machine wants to add a string to the list, it sends the string to the printer. Enumerator is a type of Turing machine variant and is equivalent with Turing machine.

We don't have any images related to Enumerator (computer science) yet.
We don't have any YouTube videos related to Enumerator (computer science) yet.
We don't have any PDF documents related to Enumerator (computer science) yet.
We don't have any Books related to Enumerator (computer science) yet.
We don't have any archived web articles related to Enumerator (computer science) yet.

Formal definition

An enumerator E {\displaystyle E} can be defined as a 2-tape Turing machine (Multitape Turing machine where k = 2 {\displaystyle k=2} ) whose language is ∅ {\displaystyle \emptyset } . Initially, E {\displaystyle E} receives no input, and all the tapes are blank (i.e., filled with blank symbols). Newly defined symbol # ∈ Γ ∧ # ∉ Σ {\displaystyle \#\in \Gamma \land \#\notin \Sigma } is the delimiter that marks end of an element of S {\displaystyle S} . The second tape can be regarded as the printer, strings on it are separated by # {\displaystyle \#} . The language enumerated by an enumerator E {\displaystyle E} denoted by L ( E ) {\displaystyle L(E)} is defined as set of the strings on the second tape (the printer).

Equivalence of Enumerator and Turing Machines

A language over a finite alphabet is Turing Recognizable if and only if it can be enumerated by an enumerator. This shows Turing recognizable languages are also recursively enumerable.

Proof

A Turing Recognizable language can be Enumerated by an Enumerator

Consider a Turing Machine M {\displaystyle M} and the language accepted by it be L ( M ) {\displaystyle L(M)} . Since the set of all possible strings over the input alphabet Σ {\displaystyle \Sigma } i.e. the Kleene Closure Σ ∗ {\displaystyle \Sigma ^{*}} is a countable set, we can enumerate the strings in it as s 1 , s 2 , … , s i , {\displaystyle s_{1},s_{2},\dots ,s_{i},} etc. Then the Enumerator enumerating the language L ( M ) {\displaystyle L(M)} will follow the steps:

1 for i = 1,2,3,... 2 Run M {\displaystyle M} with input strings s 1 , s 2 , … , s i {\displaystyle s_{1},s_{2},\dots ,s_{i}} for i {\displaystyle i} -steps 3 If any string is accepted, then print it.

Now the question comes whether every string in the language L ( M ) {\displaystyle L(M)} will be printed by the Enumerator we constructed. For any string w {\displaystyle w} in the language L ( M ) {\displaystyle L(M)} the TM M {\displaystyle M} will run finite number of steps(let it be k {\displaystyle k} for w {\displaystyle w} ) to accept it. Then in the k {\displaystyle k} -th step of the Enumerator w {\displaystyle w} will be printed. Thus the Enumerator will print every string M {\displaystyle M} recognizes but a single string may be printed several times.

An Enumerable Language is Turing Recognizable

It's very easy to construct a Turing Machine M {\displaystyle M} that recognizes the enumerable language L {\displaystyle L} . We can have two tapes. On one tape we take the input string and on the other tape, we run the enumerator to enumerate the strings in the language one after another. Once a string is printed in the second tape we compare it with the input in the first tape. If it's a match, then we accept the input, otherwise we continue. Note that if the string is not in the language, the turing machine will never halt, thus rejecting the string.

  • Sipser, Michael (2012). Introduction to the Theory of Computation - International Edition. Cengage Learning. ISBN 978-1-133-18781-3.