A Turing Machine, as technical as it may sound, is quite a fundamental way to determine 'what it means for a problem to be solvable'. Now, it is just not any problem; of course, they are the mathematical ones and the ones defined over computable functions. Let's step back to know when the Turing Machine came into being. Alan Turing, the English mathematician responsible for the machine's nomenclature, conceived the idea of a theoretical model that provides a universal algorithm to approach problems. This idea did not come to him in a dream, neither did he get an immediate sixth sense, rather it was his intuition to solve the 'Entscheidungsproblem'.
The six-syllable term is known as a 'decision-problem' posed by David Hilbert and Wilhelm Ackermann in 1928. This problem asks for an algorithm that can determine if a given statement in first-order logic is universally provable. Turing's 1936 paper titled 'On Computable Numbers, with an Application to the 'Entscheidungsproblem' marked the existence of the Turing Machine. Turing described his machine to be a 'simple abstract computing device'. It is 'simple' because it can be described with three components and 'abstract' because it only works in theory.
For those who are familiar with Finite Automata in the Theory of Computation, the Turing Machine is described through 7 tuples, and three of them are of interest to us. For those who are reading out of intrigue (a great habit), the Turing machine has a collection of 7 elements which make the machine work, like alphabets in the English liaison. Since we are moving around concepts in computer science, it is inevitable to get technical.
(Q, ∑, T, q0, F, B, δ) are the seven tuples, where,
Q: The finite set of states
∑: the finite set of input symbols
T: the tape symbol
q0: the initial state
F: a set of final states
B: a blank symbol used as an end marker for input
δ: a transition or mapping function.
To construct a Turing machine, we require a language, markers, reject and accept states, and directions for reading the tape (left or right). Let us run a simulation to accept the input 'aba'.
At the start, we have q0 as the initial state, and the head points to ‘a’. We will apply the following transition function to move around- (q0, a) = (q1, A, R). This means we will read ‘a’ in q0 and move right, denoted by R, to q1 while replacing ‘a’ with ‘A’.
Comments