A Máquina de Turing é um modelo computacional teórico que define a capacidade computacional de qualquer computador de propósito geral. O modelo de máquina de Turing é capaz de reconhecer as linguagens recursivamente enumeráveis.

De maneira intuitiva, uma máquina de Turing é uma máquina composta por uma fita infinita de ambos os lados e uma unidade de controle, que possui um conjunto de estados e a capacidade de ler e escrever símbolos na fita, bem como de mover-se para a esquerda ou direita na fita. Dessa forma, é possível simular qualquer computação possível de ser realizada por um computador através de uma máquina de Turing.

Formalmente, uma máquina de Turing é uma 7-tupla ordenada

na qual:

  • é um Alfabeto de símbolos de entrada;
  • é um conjunto finito de estados;
  • é um conjunto de símbolos da fita, de forma que ;
  • é uma função de transição tal que , ou seja, é uma função que, dado um estado e um símbolo da fita, produz um novo estado, escreve um símbolo na fita e movimenta a cabeça para a esquerda ou para a direita;
  • é um elemento de () denominado estado inicial;
  • é o símbolo branco, presente em mas não em ;
  • é um subconjunto de () denominado conjunto de estados finais.

A computação de uma máquina de Turing para uma Palavra de entrada consiste na sucessiva aplicação da função de transição a partir do estado inicial e da cabeça da máquina posicionada no primeiro símbolo de até ocorrer uma condição de parada. O processamento de uma palavra por uma máquina de Turing tem três resultados possíveis:

  1. Não há mais movimentos possíveis e o último estado é de aceitação. Nesse caso a palavra é aceita, e portanto faz parte da linguagem reconhecida por ().
  2. Não há mais movimentos possíveis e o último estado não é de aceitação. Nesse caso a palavra é rejeitada, e portanto não faz parte da linguagem reconhecida por ().
  3. A máquina entra em loop infinito, e portanto não é possível decidir sua aceitação.

Máquinas de Turing que sempre param são chamadas de decisores, e as linguagens aceitas por elas são ditas linguagens recursivas, ou linguagens decidíveis.

Há diversas variações de máquinas de Turing, e uma particularmente interessante é a máquina de Turing com fita limitada. Nesse modelo, a máquina de Turing tem a fita limitada ao tamanho da entrada. Isso reduz seu poder computacional, e as permite reconhecer o conjunto de linguagens sensíveis ao contexto.