The Timpson Lyceum seal

The Timpson Lyceum · Computation Theory

Lecture 14 (Computation Theory) Church-Turing Thesis and the Definition of an Algorithm

Overview

This lecture pivots from the mechanics of Turing machines to the question they were invented to answer: what is an algorithm? It traces the historical motivation — Hilbert's 1900 list of 23 problems, and especially Hilbert's tenth problem on Diophantine equations — that exposed why a precise definition of "algorithm" was needed. It introduces the Church–Turing thesis: the claim that the informal notion of algorithm is exactly captured by what a Turing machine (equivalently, Church's lambda calculus) can compute. The lecture then practices high-level algorithm descriptions by proving several languages recognizable or decidable, and closes with the real-world consequences of Turing's work: the universal (reprogrammable) machine and the codebreaking that grew out of it.

Key Concepts

Recognizable vs. decidable (review).

Why a definition of algorithm was needed.

Hilbert's problems (1900). David Hilbert posed 23 problems to guide the century's mathematics. Several turned out to have no resolution in Hilbert's intended sense:

Diophantine equations. A polynomial in any number of variables with integer coefficients, set equal to zero, where only integer solutions count. For example x3+y2−z+10=0x^3 + y^2 - z + 10 = 0 has the integer solution x=5, y=3, z=0x=5,\,y=3,\,z=0. An "integer root" of the polynomial means integer values for all variables that make it evaluate to 00.

The Church–Turing thesis.

Encoding inputs as strings. A Turing machine takes only strings. Any object OO (a polynomial, a graph, even another Turing machine) is first encoded as a string, written ⟨O⟩\langle O \rangle. The encoding scheme does not matter, only that one exists.

Universal Turing machine. Turing described a single machine UU that takes ⟨M,w⟩\langle M, w\rangle — the encoding of a Turing machine MM together with an input string ww — and simulates MM running on ww.

Historical consequences.

Worked Example

Claim. Let D1={ ⟨p⟩:p is a single-variable polynomial over x with an integer root }D_1 = \{\,\langle p \rangle : p \text{ is a single-variable polynomial over } x \text{ with an integer root}\,\}. Then D1D_1 is recognizable.

Recognizing strategy: test integer values of xx in an order that is guaranteed to reach every integer, and accept if any value drives pp to 00. Enumerating 0,1,2,3,…0, 1, 2, 3, \dots would never reach the negatives, so interleave them.

M1 on input ⟨p⟩:evaluate p(x) for x=0, −1, 1, −2, 2, −3, 3, …if ever p(x)=0, accept.\begin{aligned} M_1 \text{ on input } \langle p \rangle:\quad &\text{evaluate } p(x) \text{ for } x = 0,\,-1,\,1,\,-2,\,2,\,-3,\,3,\,\dots \\ &\text{if ever } p(x) = 0,\ \textbf{accept}. \end{aligned}

If pp has an integer root, M1M_1 eventually tests it and accepts; if not, M1M_1 runs forever. Hence M1M_1 recognizes (but does not decide) D1D_1.

Extending to two variables. For D2D_2 (polynomials over xx and yy), enumerate ordered pairs (x,y)(x,y) by dovetailing — sweeping the integer grid in expanding diagonals so every pair is eventually reached — and accept if any pair gives p(x,y)=0p(x,y)=0. The same idea generalizes to kk variables by dovetailing over a kk-dimensional grid, so the full Diophantine language is recognizable (though not decidable).

A decidable contrast (connected graphs). Let A={ ⟨G⟩:G is a connected graph }A = \{\,\langle G\rangle : G \text{ is a connected graph}\,\}. The machine marks one node, then repeatedly marks any node adjacent to a marked node until no new node gets marked; it accepts if all nodes are marked and rejects otherwise. Because it always halts with an explicit accept-or-reject, AA is decidable.

Summary