Uma resposta descaradamente copiada de mim mesma :
Uma máquina de Turing com várias fitas é basicamente a mesma que uma máquina com uma fita, exceto que temos uma função de transição estendida onde k é o número de fitas. Assim, em cada estado, a função de transição lê o conteúdo de cada fita, passa para um novo estado, (talvez) escreve algo em cada fita e move cada cabeça - como uma TM comum, exceto que agora temos mais coisas para ler, escrever e mexa-se.Q × Γk→ Q × Γk× { L , R }kk
Como sua pergunta sugere, essa máquina pode ser simulada por uma única fita TM. Melhor ainda, isso pode ser feito com apenas desaceleração quadrática (portanto, para classes polinomialmente fechadas, basta falar sobre máquinas de fita única).
A prova disso é um pouco envolvente e está facilmente disponível com uma simples pesquisa na web, então vou esboçar o mapeamento das teclas das fitas em uma única fita.k
A idéia básica é bem direta; basta adicionar alguns símbolos novos e acompanhar cada fita e seguir um após o outro. Em cada etapa do cálculo, podemos ter visitado apenas uma quantidade finita de qualquer uma das fitas; portanto, precisamos armazenar apenas tanta informação sobre cada fita. Assim, para cada , adicionamos um novo símbolo γ _ a Γ que indica onde a cabeça (para cada fita) está em qualquer ponto do cálculo. Também apresentamos um caractere separador # a Γ que indicará o início e o fim das fitas "virtuais". Entrada dada ω = ω 1 … ω nγ∈Γγ––Γ#Γω=ω1…ωn(podemos supor que, mesmo na máquina de fita múltipla, toda a entrada está na primeira fita - provando o que é um bom exercício) na máquina de fita múltipla, nossa máquina de fita única terá a entrada
#ω1–––…ωn#⊔––#⊔––#…#⊔––#k sections, one per tape⊔⊔⊔⊔⊔⊔…
k
Um exemplo (espero) simples:
Σ={0,1}Γ={0,1,⊔}ω=10101
Tape 1:Tape 2:Tape 3:1∧0101⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…
∧
Para construir a máquina de fita única combinada, precisamos adicionar novos símbolos ao alfabeto da fita:
- Precisamos de um símbolo que indique o início e o fim das fitas simuladas
- Γ
Γ′={0,1,⊔,0–,1–,⊔––,#}
#1–∧0101#⊔––#⊔––#⊔⊔⊔…
∧) e as cabeças simuladas das 3 fitas simuladas (os caracteres sublinhados). É claro que a fita se estende infinitamente para a direita, como de costume. Também traí levemente, movendo a cabeça da fita para o primeiro caractere na primeira corda; estritamente, deveria começar na célula mais à esquerda, mas esse é um detalhe técnico trivial.
#
1101
1
Tape 1:Tape 2:Tape 3:10∧101⊔⊔⊔…1⊔∧⊔⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…
0
Tape 1:Tape 2:Tape 3:101∧01⊔⊔⊔…1⊔∧⊔⊔⊔⊔…1⊔∧⊔⊔⊔⊔…
Γ′
#10–∧101#1⊔––#⊔––#⊔⊔⊔…
Após o segundo passo:
#101–∧01#1⊔––#1⊔––#⊔⊔⊔…
É claro que essa é uma visão de alto nível do processo - não tentei explicar como construir os estados ou como cada fita simulada fica mais longa (para isso, você precisa de uma pequena rotina que verifique se encontrou o final da fita simulada e, em seguida, move tudo para a direita um passo adiante e aperta um novo espaço em branco - ou seja, ele apenas adiciona células de fita simuladas quando são necessárias).